|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2008-11-06 19:01 UTC] ben dot lentz at gmail dot com
Description:
------------
Compiling php-5.2.6 using gcc with IBM's linker, and GNU tools (coreutils/findutils/sed/awk/grep/automake/autoconf/etc.) with many modules results in an arg list too long error from /bin/sh (ksh). Reducing the number of modules included in the build results in a successful build.
I have tried manually changing the Makefile from SHELL=/bin/sh to SHELL=/opt/local/bin/bash (GNU bash 3.2.0), but this results in a different error from the build... something about an unmatched backtick '`.'
I have tried building some of these modules with=shared,$WHERE but it didn't help.
I've examined the resulting Makefile and the PHP_GLOBAL_OBJS is so huge that it crashes IBM's vi (Line too long for current screen size.). I suspect here in lies the problem.
grep '^PHP_GLOBAL_OBJS' Makefile | wc
1 587 17353
I have tried both the release php-5.2.6 and php5.2-200811061730, and the failure was the same in both cases.
If someone could throw together a patch for the Makefile or configure script, I would be very grateful. Or, if there's a way to build this differently (sets of modules at a time or something), I would be grateful for some pointers.
Thanks
Reproduce code:
---------------
./configure \
--prefix=$WHERE \
--enable-shared=yes \
--enable-static=no \
--with-libxml-dir=$WHERE \
--with-openssl=$WHERE \
--with-openssl-dir=$WHERE \
--with-mysql=$WHERE \
--with-mysql-sock=$WHERE/var/lib/mysql/mysql.sock \
--with-kerberos=$WHERE \
--with-zlib=$WHERE \
--with-zlib-dir=$WHERE \
--with-bz2=$WHERE \
--with-curl=$WHERE \
--with-gdbm=$WHERE \
--with-db4=$WHERE \
--with-gd=$WHERE \
--with-jpeg-dir=$WHERE \
--with-png-dir=$WHERE \
--with-freetype-dir=$WHERE \
--with-gettext=$WHERE \
--with-imap=$WHERE \
--with-imap-ssl=$WHERE \
--with-ldap=$WHERE \
--with-ldap-sasl=$WHERE \
--with-mm=$WHERE \
--with-libexpat-dir=$WHERE \
--with-iconv=$WHERE \
--with-iconv-dir=$WHERE \
--with-xsl=$WHERE \
--enable-calendar \
--enable-sockets \
--enable-bcmath \
--enable-ftp \
--with-gmp=$WHERE \
--with-pspell=$WHERE \
--with-snmp=$WHERE \
--enable-mbstring \
--with-readline=$WHERE \
--enable-soap \
--enable-wddx \
--enable-zip \
--enable-shmop \
--enable-pcntl \
--enable-exif
make
Expected result:
----------------
A successful build of php-cli.
Actual result:
--------------
From ksh:
<snip> main/internal_functions.lo -lcrypt -lc-client -lz -lexslt -lexpat -lexpat -lmm -lhistory -lreadline -lncurses -laspell -lpspell -lrt -lmysqlclient -lldap -llber -lssl -lcrypto -lcrypt -lpam -liconv -liconv -lgmp -lintl -lgd -lfreetype -lpng -lz -ljpeg -lssl -lcrypto -ldb-4.6 -lgdbm -lcurl -lbz2 -lz -lssl -lcrypto -lm -lssl -lcrypto -lxml2 -lz -liconv -lm -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lcurl -lssl -lcrypto -llber -lldap -lz -lxml2 -lz -liconv -lm -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lxml2 -lz -liconv -lm -lnetsnmp -lxml2 -lz -liconv -lm -lxml2 -lz -liconv -lm -lxml2 -lz -liconv -lm -lxslt -lxml2 -lz -liconv -lm -lcrypt -o sapi/cgi/php-cgi
make: execvp: /bin/sh: Arg list too long
make: *** [sapi/cgi/php-cgi] Error 127
From bash:
<snip> main/internal_functions.lo -lcrypt -lc-client -lz -lexslt -lexpat -lexpat -lmm -lhistory -lreadline -lncurses -laspell -lpspell -lrt -lmysqlclient -lldap -llber -lssl -lcrypto -lcrypt -lpam -liconv -liconv -lgmp -lintl -lgd -lfreetype -lpng -lz -ljpeg -lssl -lcrypto -ldb-4.6 -lgdbm -lcurl -lbz2 -lz -lssl -lcrypto -lm -lssl -lcrypto -lxml2 -lz -liconv -lm -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lcurl -lssl -lcrypto -llber -lldap -lz -lxml2 -lz -liconv -lm -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lxml2 -lz -liconv -lm -lnetsnmp -lxml2 -lz -liconv -lm -lxml2 -lz -liconv -lm -lxml2 -lz -liconv -lm -lxslt -lxml2 -lz -liconv -lm -lcrypt -o sapi/cgi/php-cgi
make: execvp: /opt/local/bin/bash: Arg list too long
make: *** [sapi/cgi/php-cgi] Error 127
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Dec 06 14:00:01 2025 UTC |
I had the right versions of GNU sed and tried changing my shell to the latest version of bash. No dice. Simply put, enabling every php extension that I needed to build was not possible because of this issue. I received absolutely no help from filing this bug report as it was simply slapped with "Bogus" and no attention was paid to it. My workaround was to compile as many extensions as I possibly could as shared modules, disabling everything that couldn't be built --with-EXTENSION=shared. Then, I rebuilt again, disabling everything that could be shared, and enabling everything that couldn't be shared. Once the two halves were smushed together, I had a working PHP install. This doesn't begin to address the third build I'll have to do t o get the CLI SAPI *AND* the Apache shared module. I still maintain that the build system provided with PHP is woefully inadequate and I would be willing to provide testing and more feedback if someone from the PHP team is willing to listen. It seems ridiculous that I can't do one build with CLI, Apache2, and all modules without the system collapsing in on itself. ./configure \ --prefix=/opt/local \ --with-config-file-path=/opt/local/etc \ --disable-bcmath \ --enable-calendar \ --disable-dbase \ --disable-dom \ --enable-exif \ --enable-ftp \ --enable-pcntl \ --enable-shmop \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --disable-xmlreader \ --disable-xmlwriter \ --with-bz2=/opt/local \ --with-curl=/opt/local \ --with-gettext=/opt/local \ --with-gmp=/opt/local \ --with-iconv-dir=/opt/local \ --with-libxml-dir=/opt/local \ --with-openssl=/opt/local \ --with-openssl-dir=/opt/local \ --with-pspell=/opt/local \ --with-zlib=/opt/local \ --with-zlib-dir=/opt/local \ --without-db4 \ --without-gd \ --without-gdbm \ --without-imap-ssl \ --without-imap \ --without-kerberos \ --without-ldap-sasl \ --without-ldap \ --without-libmbfl \ --without-mcrypt \ --without-mhash \ --without-mm \ --without-mysql \ --without-mysqli \ --without-ncurses \ --without-pdo-mysql \ --without-pdo-odbc \ --without-readline \ --without-snmp \ --without-unixODBC \ --without-xsl make make install make clean ./configure \ --prefix=/opt/local \ --with-config-file-path=/opt/local/etc \ --enable-bcmath=shared \ --disable-calendar \ --enable-dba=shared \ --enable-dbase=shared \ --enable-dom=shared \ --disable-exif \ --disable-ftp \ --disable-pcntl \ --disable-shmop \ --disable-sockets \ --disable-sysvmsg \ --disable-sysvsem \ --disable-sysvshm \ --disable-wddx \ --enable-xmlreader=shared \ --enable-xmlwriter=shared \ --without-bz2 \ --without-curl \ --without-gettext \ --without-gmp \ --with-iconv-dir=/opt/local \ --with-libxml-dir=/opt/local \ --with-openssl=/opt/local \ --with-openssl-dir=/opt/local \ --without-pspell \ --with-zlib=/opt/local \ --with-zlib-dir=/opt/local \ --with-db4=/opt/local \ --with-freetype-dir=/opt/local \ --with-gd=shared \ --with-gdbm=/opt/local \ --with-imap=shared,/opt/local \ --with-imap-ssl=/opt/local \ --with-jpeg-dir=/opt/local \ --with-kerberos=/opt/local \ --with-ldap=shared,/opt/local \ --with-ldap-sasl=/opt/local \ --with-libmbfl=shared,/opt/local \ --with-mcrypt=shared,/opt/local \ --with-mhash=shared,/opt/local \ --with-mysql=shared,/opt/local \ --with-mysqli=/opt/local/bin/mysql_config \ --with-ncurses=shared,/opt/local \ --with-pdo-mysql=shared,/opt/local \ --with-pdo-odbc=unixODBC,/opt/local \ --with-png-dir=/opt/local \ --with-readline=shared,/opt/local \ --with-snmp=shared,/opt/local \ --with-unixODBC=shared,/opt/local \ --with-xsl=shared,/opt/local \ --with-xmlrpc=shared make make install-modules