Changeset 1123 for trunk


Ignore:
Timestamp:
2012-08-04T05:44:07+02:00 (2 years ago)
Author:
moo
Message:

devel: improve run

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/devel/run

    r1122 r1123  
    22# this script is for developers only 
    33 
     4set -e 
     5MAKE=/usr/bin/make 
     6 
     7true() { # {{{1 
     8    return 0 
     9} 
     10 
     11hi() { # {{{1 
     12    colors=(4 2 3 5 6 7 8 9) 
     13    re=() 
     14    i=0 
     15    for r in "$@"; do 
     16        ((color=$i % ${#colors[@]})) || true 
     17        color=${colors[$color]} 
     18        r="${r/\#/\\#}" 
     19        r="s#$r#[4${color}m[31m\0[0m#g" 
     20        re[$i]="-e$r" 
     21        ((i=i+1)) 
     22    done 
     23    sed -ur "${re[@]}" 
     24} 
     25hiecho() { # {{{1 
     26    echo "[32m""$@""[0m" 
     27} 
     28 
     29# }}} 
     30 
    431stopfpm() { # {{{1 
    5     if [[ -f $pidfile ]]; then 
    6         pid=`cat $pidfile 2>/dev/null || true` 
     32    if [[ -f $1 ]]; then 
     33        local pid=`cat $1 2>/dev/null || true` 
    734        if [[ $pid -gt 0 ]]; then 
    8             echo 
    9             echo Stopping fpm $pid @ $pidfile 
     35            hiecho Stopping fpm $pid @ $1 
    1036            kill $pid || true 
    1137        fi 
     
    4672    builddir=$(readlink -f ../trunk-php5-debug-zts) 
    4773    if [[ -z $builddir ]]; then 
    48         echo required ../trunk-php5-debug-zts not found 
     74        hiecho required ../trunk-php5-debug-zts not found 
    4975        return 1 
    5076    fi 
     
    81107                    echo -n " \$(srcdir)/$dependency" 
    82108                else 
    83                     echo "$dependency not found" >&2 
     109                    hiecho "$dependency not found" >&2 
    84110                fi 
    85111            esac 
     
    90116# }}}1 
    91117 
    92 set -e 
    93 MAKE=/usr/bin/make 
    94  
     118hiecho "Loading config devel/run.cfg" 
    95119. devel/run.cfg 
    96120PHPSDIR=${PHPSDIR:-$HOME/test} 
     
    116140 
    117141case "$1" in 
    118 fpm) pidfile=devel.pid; stopfpm;; 
    119 stopfpm) pidfile=devel.pid; stopfpm; exit;; 
     142fpm) stopfpm devel.pid;; 
     143stopfpm) stopfpm devel.pid; exit;; 
    120144esac 
    121145 
    122 # process each $dirs 
    123 basename=$(basename $(pwd)) 
    124 if echo $basename | grep -- - >/dev/null; then :; else 
    125     svn propget svn:ignore . > .svnignore 
    126  
    127     dirs=${dirs:-php5-debug-zts} 
    128     for dir in $dirs; do 
    129         mkdir -p ../${basename}-${dir} 
    130         cd ../${basename}-${dir} || exit 
    131         lndir ../${basename} >/dev/null || true 
    132  
    133         pwd 
    134         $0 "$action" "$@" 
    135     done 
    136     exit 
    137 fi 
    138  
    139 phpbasename=${basename#*-} 
    140 xcachebasename=${basename%%-*} 
    141 xcachesrcdir=../$xcachebasename 
    142 pidfile=../$xcachebasename/devel.pid 
    143 phpize() { # {{{1 
     146do_phpize() { # {{{1 
    144147    if [[ ! -x $PHPSDIR/$phpbasename/bin/phpize ]]; then 
    145         echo $PHPSDIR/$phpbasename/bin/phpize not found 
     148        hiecho $PHPSDIR/$phpbasename/bin/phpize not found 
    146149        exit 
    147150    fi 
     
    159162        --enable-xcache-constant 
    160163} 
    161 make() { # {{{1 
     164do_make() { # {{{1 
     165    if [[ ! -f Makefile ]]; then 
     166        do_phpize 
     167    fi 
    162168    LANG=C $MAKE $MAKEOPTS "$@" 2>&1 \ 
    163169    | sed -ur \ 
     
    173179} 
    174180# }}} 
    175  
    176 # prepare {{{1 
    177 case "$action" in 
    178 phpize) 
    179     if [[ -r Makefile ]]; then 
    180         $MAKE xcachesvnclean || true 
    181     fi 
    182     ;; 
    183 esac 
    184  
    185 rm -f php-src 
    186 find -L . -type l | xargs rm -fv 
    187 lndir "$xcachesrcdir" >/dev/null || true 
    188 find . -iname .\*.swp | xargs rm -f 
    189 ln -sf ~/src/php/$phpbasename php-src 
    190 for i in ~/src/php/$phpbasename/sapi/cgi/php{,-cgi}; do 
    191     if [[ -r $i ]]; then 
    192         ln -sf "$i" php-cgi 
    193     fi 
    194 done 
    195 ln -sf ~/src/php/$phpbasename/sapi/cli/php php-cli 
    196 ln -sf ~/src/php/$phpbasename/sapi/fpm/php-fpm php-fpm 
    197  
    198 case "$action" in 
    199 phpize) phpize; exit;; 
    200 make) make "$@"; exit;; 
    201 *) make;; 
    202 esac 
    203 # }}}1 
    204  
    205 if [[ -z $1 ]]; then 
    206     set -- devel.php 
     181run() { 
     182    pidfile=$xcachesrcdir/devel.pid 
     183 
     184    # prepare {{{1 
     185    case "$action" in 
     186    phpize) 
     187        if [[ -r Makefile ]]; then 
     188            $MAKE xcachesvnclean || true 
     189        fi 
     190        ;; 
     191    esac 
     192 
     193    rm -f php-src 
     194    find -L . -type l | xargs rm -fv 
     195    lndir "$xcachesrcdir" >/dev/null || true 
     196    find . -iname .\*.swp | xargs rm -f 
     197    ln -snf ~/src/php/$phpbasename php-src 
     198    for i in ~/src/php/$phpbasename/sapi/cgi/php{,-cgi}; do 
     199        if [[ -r $i ]]; then 
     200            ln -snf "$i" php-cgi 
     201        fi 
     202    done 
     203    ln -snf ~/src/php/$phpbasename/sapi/cli/php php-cli 
     204    ln -snf ~/src/php/$phpbasename/sapi/fpm/php-fpm php-fpm 
     205 
     206    case "$action" in 
     207    phpize) do_phpize; exit;; 
     208    make) do_make "$@"; exit;; 
     209    *) do_make;; 
     210    esac 
     211    # }}}1 
     212 
     213    if [[ -z $1 ]]; then 
     214        set -- devel.php 
     215    fi 
     216 
     217    cmd=() 
     218    tracer=() 
     219 
     220    # run utils {{{1 
     221    case "$action" in 
     222    dc) 
     223        ./php-cli -c devel.ini ./bin/phpdc.phpr $@ | tee decompiled.php 
     224        return 
     225        ;; 
     226    dop) 
     227        ./php-cli -c devel.ini ./bin/phpdop.phpr $@ 
     228        return 
     229        ;; 
     230    retest) 
     231        $MAKE xcachetest "$@" TESTS="`grep '^/.*\.phpt$' php_test_results_*.txt | uniq | xargs`" 
     232        return 
     233        ;; 
     234    test) 
     235        case "$1" in 
     236        *.phpt) 
     237            $MAKE xcachetest TEST_ARGS=-v TESTS="$*" 
     238            return 
     239            ;; 
     240        */) 
     241            $MAKE xcachetest TESTS="$*" 
     242            return 
     243            ;; 
     244        *) 
     245            $MAKE xcachetest 
     246            return 
     247            ;; 
     248        esac 
     249        ;; 
     250    esac 
     251    # }}} 
     252    # pick sapi {{{1 
     253    case "$basename" in 
     254    *-apache1*) 
     255        cmd=($HOME/apache1/bin/httpd -X) 
     256        ;; 
     257    *-apache*) 
     258        exit 1 
     259        ;; 
     260    *) 
     261        case "$1" in 
     262        fcgi) 
     263            cmd=(./php-cgi -q -c devel.ini) 
     264            set -- -b 1026 
     265            ;; 
     266        fpm) 
     267            cmd=(./php-fpm -c devel.ini -y devel.fpm -g $(readlink -f $pidfile)) 
     268            set -- 
     269            ;; 
     270        *) 
     271            cmd=(./php-cgi -q -c devel.ini) 
     272            ;; 
     273        esac 
     274 
     275        "${cmd[@]}" -v || true 
     276    esac 
     277    # }}} 
     278    # pick action {{{1 
     279    case "$action" in 
     280    ltr*) 
     281        export USE_ZEND_ALLOC=0 
     282        tracer=(ltrace -s1024 -e malloc,realloc,free,write) 
     283        ;; 
     284    str*) 
     285        tracer=(strace -s1024 -T) 
     286        ;; 
     287    gdb) 
     288        #USE_ZEND_ALLOC=0 
     289        tracer=(gdb --args) 
     290        ;; 
     291    val*) 
     292        export USE_ZEND_ALLOC=0 
     293        tracer=(valgrind --gen-suppressions=all) 
     294        ;; 
     295    esac 
     296 
     297    # run {{{1 
     298    export XCACHE_SKIP_FCGI_WARNING=1 
     299    commandLine=("${tracer[@]}" "${cmd[@]}" "$@") 
     300 
     301    case "${cmd[0]}" in 
     302    *php-fpm*) 
     303        hiecho Starting fpm ... 
     304        "${commandLine[@]}" 
     305        # echo -n "Ctrl-C to stop" 
     306    cleanfpm() { 
     307        echo 
     308        stopfpm $pidfile 
     309    } 
     310        # trap stopfpm SIGINT SIGTERM exit 
     311        # cat > /dev/null || true 
     312        # stopfpm 
     313        ;; 
     314    *) 
     315        "${commandLine[@]}" 
     316        ;; 
     317    esac 
     318    # }}} 
     319} 
     320 
     321# process each $dirs 
     322basename=$(basename $(pwd)) 
     323if echo $basename | grep -- - >/dev/null; then 
     324    phpbasename=${basename#*-} 
     325    xcachesrcdir=../${basename%%-*} 
     326    run "$@" 
     327else 
     328    svn propget svn:ignore . > .svnignore 
     329 
     330    dirs=${dirs:-php5-debug-zts} 
     331    xcachesrcdir=../$basename 
     332    for phpbasename in $dirs; do 
     333        mkdir -p ../${basename}-${phpbasename} 
     334        cd ../${basename}-${phpbasename} || exit 
     335        lndir ${xcachesrcdir} >/dev/null || true 
     336 
     337        pwd 
     338        run "$@" 
     339    done 
    207340fi 
    208  
    209 cmd=() 
    210 tracer=() 
    211  
    212 # run utils {{{1 
    213 case "$action" in 
    214 dc) 
    215     exec ./php-cli -c devel.ini ./bin/phpdc.phpr $@ | tee decompiled.php 
    216     ;; 
    217 dop) 
    218     exec ./php-cli -c devel.ini ./bin/phpdop.phpr $@ 
    219     ;; 
    220 retest) 
    221     exec $MAKE xcachetest "$@" TESTS="`grep '^/.*\.phpt$' php_test_results_*.txt | uniq | xargs`" 
    222     ;; 
    223 test) 
    224     case "$1" in 
    225     *.phpt) 
    226         exec $MAKE xcachetest TEST_ARGS=-v TESTS="$*" 
    227         ;; 
    228     */) 
    229         exec $MAKE xcachetest TESTS="$*" 
    230         ;; 
    231     *) 
    232         exec $MAKE xcachetest 
    233         ;; 
    234     esac 
    235     ;; 
    236 esac 
    237 # }}} 
    238 # pick sapi {{{1 
    239 case "$basename" in 
    240 *-apache1*) 
    241     cmd=($HOME/apache1/bin/httpd -X) 
    242     ;; 
    243 *-apache*) 
    244     exit 1 
    245     ;; 
    246 *) 
    247     case "$1" in 
    248     fcgi) 
    249         cmd=(./php-cgi -q -c devel.ini) 
    250         set -- -b 1026 
    251         ;; 
    252     fpm) 
    253         echo Starting fpm ... 
    254         cmd=(./php-fpm -c devel.ini -y devel.fpm -g $(readlink -f $pidfile)) 
    255         set -- 
    256         ;; 
    257     *) 
    258         cmd=(./php-cgi -q -c devel.ini) 
    259         ;; 
    260     esac 
    261  
    262     "${cmd[@]}" -v || true 
    263 esac 
    264 # }}} 
    265 # pick action {{{1 
    266 case "$action" in 
    267 ltr*) 
    268     export USE_ZEND_ALLOC=0 
    269     tracer=(ltrace -s1024 -e malloc,realloc,free,write) 
    270     ;; 
    271 str*) 
    272     tracer=(strace -s1024 -T) 
    273     ;; 
    274 gdb) 
    275     #USE_ZEND_ALLOC=0 
    276     tracer=(gdb --args) 
    277     ;; 
    278 val*) 
    279     export USE_ZEND_ALLOC=0 
    280     tracer=(valgrind --gen-suppressions=all) 
    281     ;; 
    282 esac 
    283  
    284 # run {{{1 
    285 export XCACHE_SKIP_FCGI_WARNING=1 
    286 commandLine=("${tracer[@]}" "${cmd[@]}" "$@") 
    287  
    288 case "${cmd[0]}" in 
    289 *php-fpm*) 
    290     stopfpm 
    291     "${commandLine[@]}" 
    292     echo -n "Ctrl-C to stop" 
    293     trap stopfpm SIGINT SIGTERM exit 
    294     cat > /dev/null || true 
    295     stopfpm 
    296     ;; 
    297 *) 
    298     exec "${commandLine[@]}" 
    299     ;; 
    300 esac 
    301 # }}} 
Note: See TracChangeset for help on using the changeset viewer.