Changeset 1123 in svn for trunk/devel/run


Ignore:
Timestamp:
2012-08-04T03:44:07Z (3 years ago)
Author:
Xuefer
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.