source: trunk/devel/run @ 1120

Last change on this file since 1120 was 1120, checked in by moo, 2 years ago

devel: update run

  • Property svn:executable set to *
File size: 5.6 KB
RevLine 
[977]1#!/bin/bash
2# this script is for developers only
[1119]3stopfpm() {
4    if [[ -f $pidfile ]]; then
5        pid=`cat $pidfile 2>/dev/null || true`
6        if [[ $pid -gt 0 ]]; then
7            echo
8            echo Stopping fpm $pid @ $pidfile
9            kill $pid || true
10        fi
11    fi
12}
13
[998]14set -e
[1095]15MAKE=/usr/bin/make
[977]16
[998]17. devel/run.cfg
[1097]18if [[ $# -gt 0 ]]; then
[1120]19    action=$1
[1097]20    shift
21    if [[ $# -gt 0 ]]; then
22        args=("$@")
[1120]23    elif [[ $action = "make" ]]; then
[1112]24        args=()
[1097]25    fi
[998]26fi
27
[1120]28case "$action" in
[988]29prep*)
[1097]30    exec $MAKE -f devel/prepare.mak "${args[@]}"
[988]31    ;;
[1103]32po2php)
[1120]33    ./run mergepo "${args[0]}"
[1101]34    find htdocs -iname '*.po' | while read -r i; do
[1102]35        phpfile=${i/.po/.php}
[1103]36        devel/po2php.awk < $i > $phpfile.tmp
[1102]37        mv $phpfile.tmp $phpfile
[1101]38    done
39    exit
40    ;;
41mergepo)
[1120]42    ./run prep "${args[0]}"
[1101]43    find htdocs -iname '*.po' | while read -r i; do
44        if [[ -f $i-merged ]]; then
45            mv $i-merged $i
46        fi
47    done
48    exit
49    ;;
[1095]50tags)
51    rm -f tags
[1097]52    exec $MAKE -f devel/prepare.mak tags "${args[@]}"
[1095]53    ;;
[1011]54dep*)
55    pwd=$(readlink -f "$(pwd)")
[1096]56    builddir=$(readlink -f ../trunk-php5-debug-zts)
[1011]57    if [[ -z $builddir ]]; then
[1096]58        echo required ../trunk-php5-debug-zts not found
[1011]59        return 1
60    fi
[1018]61    find . -iname \*.c | sort | while read -r sourceFile; do
[1011]62        sourceFile=${sourceFile#./}
[1015]63        case "$sourceFile" in
64        includes.c)
65            echo -n "\$(XCACHE_INCLUDES_I) "
66            ;;
67        esac
[1011]68        echo -n "\$(builddir)/${sourceFile%.c}.lo:"
[1096]69        for dependency in $(gcc -M $sourceFile -I$HOME/test/php5-debug-zts/include/php/{,main,Zend,TSRM} -I. -I${builddir} -MG | sed 's#.*:##g' | sed 's#\\##g'); do
[1011]70            dependency=$(readlink -f "$dependency")
71            case "$dependency" in
72            $pwd/*)
73                dependency=${dependency#$pwd/}
74                ;;
75            $builddir/*)
76                dependency="\$(builddir)/"${dependency#$builddir/}
77                ;;
78            esac
79
80            case "$dependency" in
81            /*) ;;
82            $sourceFile) ;;
83            \$\(builddir\)/xc_processor.h)
84                echo -n " \$(XCACHE_PROC_H)"
85                ;;
86            \$\(builddir\)/xc_processor.c.h)
87                echo -n " \$(XCACHE_PROC_C)"
88                ;;
89            *)
90                if [[ -r $dependency ]]; then
91                    echo -n " \$(srcdir)/$dependency"
92                else
93                    echo "$dependency not found" >&2
94                fi
95            esac
96        done
97        echo
98    done > Makefile.frag.deps
99    exit
100    ;;
[998]101xtest)
[1095]102    exec $MAKE -f devel/test.mak
[998]103    ;;
[988]104esac
105
[1119]106case "${args[0]}" in
107fpm)
108    pidfile=devel.pid
109    stopfpm
110    ;;
111stopfpm)
112    pidfile=devel.pid
113    stopfpm
114    exit
115    ;;
116esac
117
[977]118basename=$(basename $(pwd))
119if echo $basename | grep -- - >/dev/null; then :; else
[998]120    svn propget svn:ignore . > .svnignore
121
[1096]122    dirs=${dirs:-php5-debug-zts}
[977]123    for dir in $dirs; do
[998]124        mkdir -p ../${basename}-${dir}
[977]125        cd ../${basename}-${dir} || exit
[1102]126        lndir ../${basename} >/dev/null || true
[982]127
[977]128        pwd
[1120]129        $0 "$action" "${args[@]}"
[977]130    done
131    exit
132fi
[995]133
[982]134phpbasename=${basename#*-}
135xcachebasename=${basename%%-*}
[995]136xcachesrcdir=../$xcachebasename
[1119]137pidfile=../$xcachebasename/devel.pid
[977]138
[1120]139case "$action" in
[1013]140phpize)
[998]141    if [[ -r Makefile ]]; then
[1095]142        $MAKE xcachesvnclean || true
[998]143    fi
144    ;;
145esac
146
147rm -f php-src
[1120]148find -L . -action l | xargs rm -fv
[1102]149lndir "$xcachesrcdir" >/dev/null || true
[998]150find . -iname .\*.swp | xargs rm -f
151ln -sf ~/src/php/$phpbasename php-src
152for i in ~/src/php/$phpbasename/sapi/cgi/php{,-cgi}; do
153    if [[ -r $i ]]; then
154        ln -sf "$i" php-cgi
155    fi
156done
157ln -sf ~/src/php/$phpbasename/sapi/cli/php php-cli
[1048]158ln -sf ~/src/php/$phpbasename/sapi/fpm/php-fpm php-fpm
[998]159
[1120]160case "$action" in
[1013]161phpize)
[982]162    PHPDIRS=${PHPDIRS:-$HOME/test}
163    if [[ ! -x $PHPDIRS/$phpbasename/bin/phpize ]]; then
164        echo $PHPDIRS/$phpbasename/bin/phpize not found
165        exit
166    fi
167    export PATH=$PHPDIRS/$phpbasename/bin:$PATH
168    phpize --clean \
169    && phpize \
[1113]170    && CFLAGS="-g -O0 -pedantic-errors -Wno-variadic-macros -Wno-long-long -Wall -Wno-unused-parameter -Wno-unused-function -W -Wshadow -Werror=implicit-function-declaration -std=c89 -D_GNU_SOURCE -D_POSIX_SOURCE -Dinline=" ./configure \
[1003]171        --enable-xcache-cacher \
172        --enable-xcache-optimizer \
173        --enable-xcache-encoder \
174        --enable-xcache-decoder \
175        --enable-xcache-disassembler \
[1006]176        --enable-xcache-coverager \
[1022]177        --enable-xcache-test \
178        --enable-xcache-constant
[982]179    exit
180    ;;
181make)
[980]182    MAKEARGS=("$@")
[982]183    ;;
184esac
[980]185
[1095]186LANG=C $MAKE $MAKEOPTS "${MAKEARGS[@]}" 2>&1 \
[1062]187| sed -ur \
188    -e 's#Werror=implicit-function-declaration#We/rror=i/mplicit-function-declaration#' \
[1113]189    -e 's#-pedantic-errors#-pedantic-e/rrors#' \
[1062]190    -e 's#\./xc_processor\.h#'$PWD'/xc_processor.h#' \
191    -e 's#\./xc_processor\.c\.h#'$PWD'/xc_processor.c.h#' \
[1022]192| hi error implicit warn FAIL
[980]193ret=${PIPESTATUS[0]}
[1120]194if [[ $ret -ne 0 || $action = make ]]; then
[980]195    exit $ret
196fi
197
[1098]198if [[ -z ${args[0]} ]]; then
199    args=(devel.php)
200fi
201
[977]202cmd=()
203tracer=()
204case "$basename" in
205*-apache1*)
206    cmd=($HOME/apache1/bin/httpd -X)
207    ;;
208*-apache*)
209    exit 1
210    ;;
211*)
[1048]212    case "${args[0]}" in
213    fcgi)
214        cmd=(./php-cgi -q -c devel.ini)
215        args=(-b 1026)
216        ;;
217    fpm)
[1119]218        echo Starting fpm ...
219        cmd=(./php-fpm -c devel.ini -y devel.fpm -g $(readlink -f $pidfile))
220        args=()
[1048]221        ;;
222    *)
223        cmd=(./php-cgi -q -c devel.ini)
224        ;;
225    esac
226
[1024]227    "${cmd[@]}" -v || true
[977]228esac
229
[1120]230case "$action" in
[977]231ltr*)
232    export USE_ZEND_ALLOC=0
233    tracer=(ltrace -s1024 -e malloc,realloc,free,write)
234    ;;
235str*)
[1028]236    tracer=(strace -s1024 -T)
[977]237    ;;
238gdb)
239    #USE_ZEND_ALLOC=0
240    tracer=(gdb --args)
241    ;;
242val*)
243    export USE_ZEND_ALLOC=0
244    tracer=(valgrind --gen-suppressions=all)
245    ;;
246dc)
[1053]247    exec ./php-cli -c devel.ini ./bin/phpdc.phpr "${args[@]}" | tee decompiled.php
[977]248    ;;
249dop)
[1053]250    exec ./php-cli -c devel.ini ./bin/phpdop.phpr "${args[@]}"
[977]251    ;;
252retest)
[1095]253    exec $MAKE xcachetest "$@" TESTS="`grep '^/.*\.phpt$' php_test_results_*.txt | uniq | xargs`"
[977]254    ;;
255test)
256    case "${args[0]}" in
257    *.phpt)
[1095]258        exec $MAKE xcachetest TEST_ARGS=-v TESTS="${args[*]}"
[977]259        ;;
260    */)
[1095]261        exec $MAKE xcachetest TESTS="${args[@]}"
[977]262        ;;
263    *)
[1095]264        exec $MAKE xcachetest
[977]265        ;;
266    esac
267    ;;
268esac
269
270export XCACHE_SKIP_FCGI_WARNING=1
[1119]271commandLine=("${tracer[@]}" "${cmd[@]}" "${args[@]}")
272
273case "${cmd[0]}" in
274*php-fpm*)
275    stopfpm
276    "${commandLine[@]}"
277    echo -n "Ctrl-C to stop"
278    trap stopfpm SIGINT SIGTERM
279    cat > /dev/null || true
280    ;;
281*)
282    exec "${commandLine[@]}"
283    ;;
284esac
Note: See TracBrowser for help on using the repository browser.