Fail-Safe C: 安全なC言語コンパイラ(続きの続きの続き)
先日の件ですが。
ずーっと放置していましたが、Fail-Safe C version 1.0.1 (revision 1735) がリリースされていたのでPHPのビルドに再挑戦。今回は5.2.6が対象。
「/(php-src)/main/streams/php_stream_filter_api.h」でenumリストの一番最後の定義が「,」で終わっていてビルドできない件)はPHP側で修正されているみたい。
他は変わらず。。。後、今回はコメント表記で引っかかるようになった(//の一行コメント)。
% su % uname -a Linux **** 2.6.18-6-686 #1 SMP Mon Aug 18 08:42:39 UTC 2008 i686 GNU/Linux % gcc -v Reading specs from /usr/lib/gcc/i486-linux-gnu/3.4.6/specs Configured with: ../src/configure -v --enable-languages=c,c++,f77,pascal --prefix=/usr --libexecdir=/usr/lib --with-gxx-include-dir=/usr/include/c++/3.4 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --program-suffix=-3.4 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --with-tune=i686 i486-linux-gnu Thread model: posix gcc version 3.4.6 (Debian 3.4.6-5) % ocaml -version The Objective Caml toplevel, version 3.09.2 % cd /usr/local/src % gzip -dc ./FailSafeC-1.0.1.1735.tar.gz | tar xf - % cd ./FailSafeC-1.0.1.1735 % make % make install % cd ../ % gzip -dc ./php-5.2.6.tar.gz | tar xf - % cd ./php-5.2.6 % less -N ./main/streams/php_stream_filter_api.h 〜 省略 〜 62 typedef enum { 63 PSFS_ERR_FATAL, /* error in data stream */ 64 PSFS_FEED_ME, /* filter needs more data; stop processing chain until more is available */ 65 PSFS_PASS_ON /* filter generated output buckets; pass them on to next in chain */ 66 } php_stream_filter_status_t; 〜 省略 〜 % env CC=fscc \ ./configure \ --disable-all \ --without-iconv \ --with-regex=system % cat ./Makefile | grep fscc CC = fscc CPP = fscc -E % make /bin/sh /usr/local/src/php-5.2.6/libtool --silent --preserve-dup-deps --mode=compile fscc -Iext/date/lib -Iext/date/ -I/usr/local/src/php-5.2.6/ext/date/ -DPHP_ATOM_INC -I/usr/local/src/php-5.2.6/include -I/usr/local/src/php-5.2.6/main -I/usr/local/src/php-5.2.6 -I/usr/local/src/php-5.2.6/ext/date/lib -I/usr/local/src/php-5.2.6/TSRM -I/usr/local/src/php-5.2.6/Zend -g -c /usr/local/src/php-5.2.6/ext/date/php_date.c -o ext/date/php_date.lo In file included from /usr/local/src/php-5.2.6/main/php.h:74, from /usr/local/src/php-5.2.6/ext/date/php_date.c:21: /usr/local/src/php-5.2.6/main/php_regex.h:59:19: regex.h: No such file or directory Fatal error: exception Failure("/usr/local/src/php-5.2.6/ext/date/php_date.c(272): parse error") + /usr/local/lib/fsc/default/compiler/trans.nc ---systemdir /usr/local/lib/fsc/default -f multi-module -I ext/date/lib -I ext/date/ -I /usr/local/src/php-5.2.6/ext/date/ -I /usr/local/src/php-5.2.6/include -I /usr/local/src/php-5.2.6/main -I /usr/local/src/php-5.2.6 -I /usr/local/src/php-5.2.6/ext/date/lib -I /usr/local/src/php-5.2.6/TSRM -I /usr/local/src/php-5.2.6/Zend -D PHP_ATOM_INC ---output-file /tmp/fsc-0-IKpunFiw/php_date.safe.c ---input-file /usr/local/src/php-5.2.6/ext/date/php_date.c fscc: command /usr/local/lib/fsc/default/compiler/trans.nc returned status 2 make: *** [ext/date/php_date.lo] Error 1 % cat ../php-5.2.6-php_regex.h.diff --- ../php-5.2.6,orig/main/php_regex.h 2007-12-31 16:20:15.000000000 +0900 +++ main/php_regex.h 2008-09-02 13:49:29.000000000 +0900 @@ -56,7 +56,7 @@ #define _H_REGEX 1 /* This one is for AIX */ #endif #elif REGEX == 0 -#include <regex.h> +#include </usr/include/regex.h> #ifndef _REGEX_H_ #define _REGEX_H_ 1 #endif % patch -p0 < ../php-5.2.6-php_regex.h.diff patching file main/php_regex.h % make /bin/sh /usr/local/src/php-5.2.6/libtool --silent --preserve-dup-deps --mode=compile fscc -Iext/date/lib -Iext/date/ -I/usr/local/src/php-5.2.6/ext/date/ -DPHP_ATOM_INC -I/usr/local/src/php-5.2.6/include -I/usr/local/src/php-5.2.6/main -I/usr/local/src/php-5.2.6 -I/usr/local/src/php-5.2.6/ext/date/lib -I/usr/local/src/php-5.2.6/TSRM -I/usr/local/src/php-5.2.6/Zend -g -c /usr/local/src/php-5.2.6/ext/date/php_date.c -o ext/date/php_date.lo Fatal error: exception Failure("/usr/local/src/php-5.2.6/ext/date/php_date.c(272): parse error") + /usr/local/lib/fsc/default/compiler/trans.nc ---systemdir /usr/local/lib/fsc/default -f multi-module -I ext/date/lib -I ext/date/ -I /usr/local/src/php-5.2.6/ext/date/ -I /usr/local/src/php-5.2.6/include -I /usr/local/src/php-5.2.6/main -I /usr/local/src/php-5.2.6 -I /usr/local/src/php-5.2.6/ext/date/lib -I /usr/local/src/php-5.2.6/TSRM -I /usr/local/src/php-5.2.6/Zend -D PHP_ATOM_INC ---output-file /tmp/fsc-0-F48fDwvg/php_date.safe.c ---input-file /usr/local/src/php-5.2.6/ext/date/php_date.c fscc: command /usr/local/lib/fsc/default/compiler/trans.nc returned status 2 make: *** [ext/date/php_date.lo] Error 1 % cat ../php-5.2.6-php_date.c.diff --- ../php-5.2.6,orig/ext/date/php_date.c 2008-04-17 02:21:46.000000000 +0900 +++ ext/date/php_date.c 2008-09-02 13:49:54.000000000 +0900 @@ -269,9 +269,9 @@ int initialized; int type; union { - timelib_tzinfo *tz; // TIMELIB_ZONETYPE_ID; - timelib_sll utc_offset; // TIMELIB_ZONETYPE_OFFSET - struct // TIMELIB_ZONETYPE_ABBR + timelib_tzinfo *tz; + timelib_sll utc_offset; + struct { timelib_sll utc_offset; char *abbr; % patch -p0 < ../php-5.2.6-php_date.c.diff patching file ext/date/php_date.c % make cc1: out of memory allocating 386300880 bytes after a total of 7385088 bytes + gcc -I/usr/local/lib/fsc/default/runtime -march=pentium4 -Wall -Wno-unused -O0 -g -fno-strict-aliasing -DFSC_DEBUG_RUNTIME -o ext/date/lib/parse_date.o -c -xc /tmp/fsc-0-dSl3l3Cm/parse_date.safe.c fscc: command gcc returned status 1 make: *** [ext/date/lib/parse_date.lo] Error 1 % limit cputime unlimited filesize unlimited datasize unlimited stacksize 8192 kbytes coredumpsize 0 kbytes memoryuse unlimited vmemoryuse unlimited descriptors 1024 memorylocked unlimited maxproc unlimited % limit -h cputime unlimited filesize unlimited datasize unlimited stacksize unlimited coredumpsize unlimited memoryuse unlimited vmemoryuse unlimited descriptors 1024 memorylocked unlimited maxproc unlimited % id uid=0(root) gid=0(root) groups=0(root)
って、どんだけメモリを使うんだよ。。。またしても撃沈。_| ̄|○
DebianのPackage化も進行しているみたいだけど、そんなに期待できない気がするなぁ。