source: trunk/devel/run @ 1098

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

devel: fix $@ processing

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