php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #50556 php build guru required to debug main/php_config.h generated incorrectly
Submitted: 2009-12-22 22:09 UTC Modified: 2009-12-23 00:09 UTC
From: david at davidfavor dot com Assigned:
Status: Not a bug Package: Compile Failure
PHP Version: 5.3.1 OS: Ubuntu 9.10
Private report: No CVE-ID: None
 [2009-12-22 22:09 UTC] david at davidfavor dot com
Description:
------------
configure process generates different php_config.h files on different Ubuntu machines with identical packages installed (per dpkg -l).

I've tried to decipher the ./configure process and have yet to figure it out.

What I require is a php build guru to explain how to manually generate php_config.h from php_config.h.in to debug what's occurring.

Thanks.

Reproduce code:
---------------
./configure && make


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-12-22 22:13 UTC] david at davidfavor dot com
I've reported this as a bug, rather than sending through the support mailing list because once this cause is determined, it's best guarded against as this problem is extremely difficult to debug.
 [2009-12-22 22:21 UTC] david at davidfavor dot com
One example of this is...

/* Define to `unsigned' if <sys/types.h> doesn't define.  */    /* Define to `unsigned' if <sys/types.h> doesn't define.  */
/* #undef size_t */                                           | #define size_t unsigned

The machine with #define size_t unsigned fails compiles with...

/bin/sh /build/work/php-5.3.1/libtool --silent --preserve-dup-deps --mode=compile gcc -Iext/date/lib -Iext/date/ -I/build/work/php-5.3.1/ext/date/ -DPHP_ATOM_INC -I/build/work/php-5.3.1/include -I/build/work/php-5.3.1/main -I/build/work/php-5.3.1 -I/build/work/php-5.3.1/ext/date/lib -I/build/work/php-5.3.1/ext/ereg/regex -I/usr/include/libxml2 -I/build/work/php-5.3.1/ext/sqlite3/libsqlite -I/build/work/php-5.3.1/TSRM -I/build/work/php-5.3.1/Zend    -I/usr/include -g -O2 -fvisibility=hidden  -c /build/work/php-5.3.1/ext/date/php_date.c -o ext/date/php_date.lo 
In file included from /usr/include/stdlib.h:33,
                 from /build/work/php-5.3.1/include/../main/php_config.h:2845,
                 from /build/work/php-5.3.1/Zend/zend_config.h:1,
                 from /build/work/php-5.3.1/Zend/zend.h:51,
                 from /build/work/php-5.3.1/main/php.h:34,
                 from /build/work/php-5.3.1/ext/date/php_date.c:21:
/usr/lib/gcc/i486-linux-gnu/4.4.1/include/stddef.h:211: error: duplicate 'unsigned'
In file included from /usr/include/stdlib.h:320,
                 from /build/work/php-5.3.1/include/../main/php_config.h:2845,
                 from /build/work/php-5.3.1/Zend/zend_config.h:1,
                 from /build/work/php-5.3.1/Zend/zend.h:51,
                 from /build/work/php-5.3.1/main/php.h:34,
                 from /build/work/php-5.3.1/ext/date/php_date.c:21:
/usr/include/sys/types.h:151: error: duplicate 'unsigned'
/usr/include/sys/types.h:153: error: duplicate 'unsigned'
/usr/include/sys/types.h:153: error: two or more data types in declaration specifiers
make: *** [ext/date/php_date.lo] Error 1

And... maybe ./configure is picking this up wrong somehow so the autoheader process simply passes this along when php_config.h is created.
 [2009-12-22 22:23 UTC] johannes@php.net
Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.

The output depends on the libraries, environment variables the system (for instance 32 vs 64 bit, x86 vs. sparc, ...) so the output can be different easily....

For learning how to debug it learn about autoconf and automake.
 [2009-12-22 22:29 UTC] david at davidfavor dot com
It appears this is a configure problem.

On the broken machine size_t is missed...

root@hive1:# grep size_t configure.log 
checking size of size_t... 4
checking size of ssize_t... 4
checking for size_t... no
checking for size_t... (cached) no

On the working machine...

root@hive2:# grep size_t configure.log 
checking size of size_t... 4
checking size of ssize_t... 4
checking for size_t... yes
checking for size_t... (cached) yes
 [2009-12-23 00:09 UTC] david at davidfavor dot com
Bizarre.

Some combination of package installations created symlinks from /bin/egrep to /bin/grep, so all egrep regular expressions were failing in configure.

No clue how to check for this.

Doing 'apt-get --reinstall install grep' fixed the problem.

Close this bug.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Thu Jul 03 03:01:33 2025 UTC