source: trunk/devel/run @ 1097

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