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