php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #62971 cannot get ./configure and make to both complete - one or the other fails
Submitted: 2012-08-29 20:02 UTC Modified: 2015-11-24 22:22 UTC
Votes:2
Avg. Score:2.5 ± 0.5
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: mamfelt at gmail dot com Assigned: kaplan (profile)
Status: Closed Package: Compile Failure
PHP Version: 5.4.6 OS: AIX
Private report: No CVE-ID: None
 [2012-08-29 20:02 UTC] mamfelt at gmail dot com
Description:
------------
Trying to package php 5.4.6 - stuck in logic loop regarding sqlite3.
--with-sqlite3=DIR seems to be ignored
--without-sqlite3=DIR is not accepted
--without-sqlite3 causes ./configure to fail with
checking for PDO includes... checking for PDO includes... /data/prj/php-5.4.6/ext
configure: error: 
You've configured extension pdo_sqlite, which depends on extension sqlite3,
but you've either not enabled sqlite3, or have disabled it.


Test script:
---------------
Example 1. ## configure completes but the embedded sqlite3 attempts to build anyway. This has a compile error that I have not researched.
I have sqlite3 in /opt

root@x104:[/data/prj/php-5.2.17]ls -l /opt/*/*sql*
-rwxr-xr-x 1 root system 2026673 Jun 13 21:52 /opt/bin/sqlite3
-rw-r--r-- 1 root system  268351 Jun 13 21:52 /opt/include/sqlite3.h
-rw-r--r-- 1 root system   20686 Jun 13 21:52 /opt/include/sqlite3ext.h
-rw-r--r-- 1 root system 1927674 Jun 13 21:52 /opt/lib/libsqlite3.a
-rwxr-xr-x 1 root system     743 Jun 13 21:52 /opt/lib/libsqlite3.la


# ./configure --prefix=/opt --sysconfdir=/etc --mandir=/usr/share/man  --with-sqlite3=/opt 


+++++++++++
Example 2. ### provide --without-sqlite3=DIR (per ./configure --help)

# ./configure --prefix=/opt --sysconfdir=/etc --mandir=/usr/share/man  --without-sqlite3=/opt

Note: configure --help | grep sqlite
  --without-sqlite3=DIR Do not include SQLite3 support. DIR is the prefix to

+++++++++
Example 3. ### use --without-sqlite3 - cannot complete due to dependency

# ./configure --prefix=/opt --sysconfdir=/etc --mandir=/usr/share/man  --without-sqlite3

=============
Note: imho - there are two issues: one is the help text, seems wrong somehow, but has been around for a long time. second issue - why is make still trying to compile embedded sqlite3 ?


Expected result:
----------------
that make finishes and I can proceed with make check or make test

Actual result:
--------------
#1 result

/bin/sh /data/prj/php-5.4.6/libtool --silent --preserve-dup-deps --mode=compile cc -qlanglvl=extc89  -Iext/sqlite3/ -I/data/prj/php-5.4.6/ext/sqlite3/ -DPHP_ATOM_INC -I/data/prj/php-5.4.6/include -I/data/prj/php-5.4.6/main -I/data/prj/php-5.4.6 -I/data/prj/php-5.4.6/ext/date/lib -I/data/prj/php-5.4.6/ext/ereg/regex -I/opt/include/libxml2 -I/opt/include -I/data/prj/php-5.4.6/ext/sqlite3/libsqlite -I/data/prj/php-5.4.6/TSRM -I/data/prj/php-5.4.6/Zend    -I/usr/include -g  -c /data/prj/php-5.4.6/ext/sqlite3/sqlite3.c -o ext/sqlite3/sqlite3.lo 
"/data/prj/php-5.4.6/ext/sqlite3/sqlite3.c", line 893.9: 1506-046 (S) Syntax error.
"/data/prj/php-5.4.6/ext/sqlite3/sqlite3.c", line 894.41: 1506-045 (S) Undeclared identifier i.
"/data/prj/php-5.4.6/ext/sqlite3/sqlite3.c", line 894.51: 1506-277 (S) Syntax error: possible missing ';' or ','?
"/data/prj/php-5.4.6/ext/sqlite3/sqlite3.c", line 894.65: 1506-045 (S) Undeclared identifier or.
make: *** [ext/sqlite3/sqlite3.lo] Error 1

#2 result

configure: error: invalid package name: sqlite3=/opt

#3 result
checking for PostgreSQL support for PDO... no
checking for sqlite 3 support for PDO... yes
checking for PDO includes... checking for PDO includes... /data/prj/php-5.4.6/ext
configure: error: 
You've configured extension pdo_sqlite, which depends on extension sqlite3,
but you've either not enabled sqlite3, or have disabled it.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-08-30 05:45 UTC] mamfelt at gmail dot com
with php 5.2.7:
# ./configure --prefix=/opt --sysconfdir=/etc --mandir=/usr/share/man  --with-sqlite3=/opt

configure finishes with:
Thank you for using PHP.

Notice: Following unknown configure options were used:

--with-sqlite3=/opt

Check './configure --help' for available options

make completes successfully - however, ext/sqlite was also compiled without fatal errors. Considering the error message (--with-sqlite3 unknown) - not surprising.
 [2012-08-30 06:03 UTC] mamfelt at gmail dot com
FYI: I understand why the 5.2.17 ./configure complained - no intent on sqlite3, was just sqlite "back then".

From below you can see the version of sqlite I have pre-loaded is 3.6.22

root@x104:[/data/prj]find . -name sqlite3.c -ls
733476 4419 -rw-r-----  1 michael   staff      4524415 Aug 15 19:05 ./php-5.3.16/ext/sqlite3/libsqlite/sqlite3.c
733446   66 -rw-r-----  1 michael   staff        67532 Aug 15 19:05 ./php-5.3.16/ext/sqlite3/sqlite3.c
292548 4419 -rw-r--r--  1 michael   nobody     4524464 Aug  9  2011 ./php-5.3.8/ext/sqlite3/libsqlite/sqlite3.c
292518   63 -rw-r--r--  1 michael   nobody       63743 Aug 10  2011 ./php-5.3.8/ext/sqlite3/sqlite3.c
741218 4419 -rw-r--r--  1 michael   staff      4524426 Aug 15 06:26 ./php-5.4.6/ext/sqlite3/libsqlite/sqlite3.c
741176   66 -rw-r--r--  1 michael   staff        67221 Aug 15 06:26 ./php-5.4.6/ext/sqlite3/sqlite3.c
102500 4419 -rw-------  1 michael   staff      4524415 Jun 13 10:18 ./php-5.3.14/ext/sqlite3/libsqlite/sqlite3.c
102438   66 -rw-------  1 michael   staff        67501 Jun 13 10:18 ./php-5.3.14/ext/sqlite3/sqlite3.c
329718 4419 -rw-------  1 michael   staff      4524415 Jun 13 06:54 ./php-5.4.4/ext/sqlite3/libsqlite/sqlite3.c
704810   66 -rw-------  1 michael   staff        67153 Jun 13 06:54 ./php-5.4.4/ext/sqlite3/sqlite3.c
426064 3782 -rw-r--r--  1 michael   nobody     3872493 Jan  5  2010 ./sqlite-3.6.22/sqlite3.c

root@x104:[/data/prj]find . -name sqlite.c -ls 
637193   83 -rw-r--r--  1 michael   nobody       84573 Apr 28  2010 ./php-5.2.17/ext/sqlite/sqlite.c
756929   95 -rw-r-----  1 michael   staff        96718 Aug 15 19:05 ./php-5.3.16/ext/sqlite/sqlite.c
553336   95 -rw-r--r--  1 michael   nobody       96804 Jan  1  2011 ./php-5.3.8/ext/sqlite/sqlite.c
119415   95 -rw-------  1 michael   staff        96712 Jun 13 10:18 ./php-5.3.14/ext/sqlite/sqlite.c

root@x104:[/data/prj]lslpp -L | grep sql
  aixtools.sqlite.rte       3.6.22.0    C     F    sqlite version 3.6.22 

I hope this provides sufficient detail to determine a next step/question. Thanks!

p.s. php-5.3.14 and php-5.3.16 also complain about the --without-sqlite3=DIR (and also with --without-sqlite=DIR)

root@x104:[/data/prj/php-5.3.16]./configure --prefix=/opt --sysconfdir=/etc --mandir=/usr/share/man  --without-sqlite3=/opt
configure: error: sqlite3=/opt: invalid package name
root@x104:[/data/prj/php-5.3.16]./configure --prefix=/opt --sysconfdir=/etc --mandir=/usr/share/man  --without-sqlite=/opt 
configure: error: sqlite=/opt: invalid package name
 [2012-08-30 08:01 UTC] pajoye@php.net
sqlite3 is enabled by default, use --without-sqlite3 only if you do not want it. 
PHP also includes libsqlite as well as part of the distribution, so you do not 
have to install or use the system one. However you can still do it by using:

--with-sqlite3=/usr for example.
 [2012-08-30 11:38 UTC] mamfelt at gmail dot com
reply to pajoye

My first example is: # ./configure --prefix=/opt --sysconfdir=/etc --mandir=/usr/share/man  --with-sqlite3=/opt 

configure completes correctly, but make fails (also version 5.3.16 - tested today, and 5.3.14 from memory.)

Right now I am try to 'not' comment on the reason for a syntax error in the embedded sqlite3. That is not exciting to me right now (maybe later).
Right now I am focusing on getting a minimum build complete so I can move on to the packaging scripts to create an installp file. Then I shall try to make a "maximum" capability - i.e., as many as I get to build - version of php.

If I understand your comment the --help text should be read as:
--without-sqlite3 || --with-sqlite3=DIR

Second question:
If I use the --with-sqlite3=DIR option should make still be trying to build (and I assume link) the embedded version? From your comments I would think not.
 [2012-08-30 11:47 UTC] mamfelt at gmail dot com
p.s. I have peeked at ext/sqlite3/sqlite3.c and the only issue is this is the one place in PHP code that is using
// comments

rather than

/* comments */

The AIX compiler can recognize // comments - however, may I interject that this is the ONLY file in PHP that seems to be using them. Maybe /* comment */ is the norm in PHP and this could be adjusted. Not a bug! just not consistent.

My questions regarding the behavior of --with-sqlite3 is still open.

Thank you for your consideration.
 [2012-08-30 13:36 UTC] mamfelt at gmail dot com
Update: After correcting the comments to /* */ (will use compiler flag in the future) I ran make and it completed with an error for both 5.3.16 and 5.4.6

5.3.16

/cli/php_cli.lo sapi/cli/php_cli_readline.lo main/internal_functions_cli.lo -lrt -liconv -lsqlite3 -lrt -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm  -o sapi/cli/php
ld: 0711-317 ERROR: Undefined symbol: .sqlite3_column_table_name
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: *** [sapi/cli/php] Error 8


5.4.6
i/cli/php_cli_server.lo -lrt -liconv -lsqlite3 -lrt -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm  -o sapi/cli/php
ld: 0711-319 WARNING: Exported symbol not defined: php_register_internal_extensions
ld: 0711-317 ERROR: Undefined symbol: php_register_internal_extensions
ld: 0711-317 ERROR: Undefined symbol: .sqlite3_column_table_name
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: *** [sapi/cli/php] Error 8

===
After performing a 'make distclean' on both I reran configure with no extra statement re: sqlite3, i.e. for both 5.3.16 and 5.4.6

# ./configure --prefix=/opt --sysconfdir=/etc --mandir=/usr/share/man

configure and make for 5.3.16 complete as expected

configure completes, but make fails for 5.4.6

 -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm -lxml2 -liconv -lm  -o sapi/cli/php
ld: 0711-319 WARNING: Exported symbol not defined: php_register_internal_extensions
ld: 0711-317 ERROR: Undefined symbol: php_register_internal_extensions
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: *** [sapi/cli/php] Error 8
root@x104:[/data/prj/php-5.4.6]

-- maybe for this (ERROR: Undefined symbol: php_register_internal_extensions)
-- I should submit a new bug - please advise.
 [2012-12-26 14:06 UTC] mamfelt at gmail dot com
Please close this BR. I have listed too many issues for this to ever resolve cleanly. Hence, I shall start smaller, more clear bugs to address issues that are still active.

re: the C++ comments "issue" causing the sqlite3 compile confusion - I am now adding a flag to recognize C++ style comments. IMHO, if not done already, the code will be cleaner if the ONE file (or maybe two) with C++ comments is patched to remove the C++ comments.
 [2015-11-24 22:22 UTC] kaplan@php.net
-Status: Open +Status: Closed -Assigned To: +Assigned To: kaplan
 [2015-11-24 22:22 UTC] kaplan@php.net
Fixed for 5.6 and 7.0 branches. See bug #61751 (SAPI build problem on AIX: Undefined symbol: php_register_internal_extensions).
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 12:01:27 2024 UTC