php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #46511 arg list too long when compiling many modules
Submitted: 2008-11-06 19:01 UTC Modified: 2008-12-18 18:32 UTC
From: ben dot lentz at gmail dot com Assigned:
Status: Not a bug Package: Compile Failure
PHP Version: 5.2.6 OS: AIX 5.3.8.2
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: ben dot lentz at gmail dot com
New email:
PHP Version: OS:

 

 [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

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2008-11-06 23:08 UTC] jani@php.net
Due to a bug in the installed sed on your system the build
fails. Install GNU sed and it should be okay.
 
Thank you for your interest in PHP.


 [2008-11-07 01:55 UTC] ben dot lentz at gmail dot com
I'm afraid not. As I wrote:

> Compiling php-5.2.6 using gcc with IBM's linker, and GNU tools
(coreutils/findutils/*sed*

I've installed GNU sed 4.1.5 into /opt/local/bin, prefixed /opt/local/bin in my PATH, verified with 'which sed', and rebuilt from scratch. Same result.

Also, the build completes with less modules enabled, regardless of the sed version.
 [2008-11-19 14:08 UTC] ben dot lentz at gmail dot com
I've tried a few other things. Now I'm getting:

make: execvp: /bin/sh: The parameter or environment lists are too long.
 [2008-12-18 18:32 UTC] ben dot lentz at gmail dot com
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
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Apr 18 00:01:28 2024 UTC