ID:               34722
 Updated by:       [EMAIL PROTECTED]
 Reported By:      voidvoidpointer at yahoo dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         GD related
 Operating System: Fedora Core 2 x86_64
 PHP Version:      5.0.5
 New Comment:

Latest CVS (php5.1) works fine for me. You're doing something wrong.
(propably not passing --with-libdir=lib64 to configure) 




Previous Comments:
------------------------------------------------------------------------

[2005-10-04 02:16:47] voidvoidpointer at yahoo dot com

I brought down the snapshot and tried to run configure.

The configure script failed and did not generate a 
Makefile.

For details of exactly how it failed, please refer to my 
initial post.

Did you tell me to try the snapshot because you knew 
that a change was made to the GD extension's 
configuration files?

------------------------------------------------------------------------

[2005-10-03 23:57:23] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip



------------------------------------------------------------------------

[2005-10-03 23:09:57] voidvoidpointer at yahoo dot com

Description:
------------
Symptom:
"configure --with-gd" fails on dual AMD Opteron x86_64 
systems with Fedora Core 2 for php-4.3.11, php-4.4.0, 
and php-5.0.5 although it is possible to produce a 
working 64-bit php _without_ the GD extension.

Related Bugs:
Please refer to bug reports 31610, 33745, 32300.  
Unfortunately, those reports have been classified as 
"bogus" and the reports closed.  Nevertheless, there is 
a persistent problem described in this report.  The 
reason those reports were closed is that there wasn't 
enough information about the problem, but that is 
addressed by this report as well a possible solution.

Notes:
To gather data more easily, configure's first line was 
changed from "#! /bin/sh" to "#! /bin/sh -x", and every 
trial of configure was tried on a "clean slate" by 
running both "make clean" and "rm -f confdefs.h 
config.log config.nice config.cache config.status" after 
each trial.

Facts:
Directory /usr/lib64 is where libgd.so, libjpeg.so, 
libjpeg.a, libpng.so, and libpng.a reside, and directory 
/usr/include is where the header files are located.

Exhibit A (constant results for php-4.3.11, php-4.4.0, 
and php-5.0.5):

++ echo floorf
++ tr abcdefghijklmnopqrstuvwxyz 
ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ ac_tr_func=HAVE_FLOORF
+ cat
+ test no = no
+ PHP_PNG_DIR=yes
+ test no = yes
+ test no = yes
+ test no '!=' no
+ echo 'If configure fails try --with-jpeg-dir=<DIR>'
If configure fails try --with-jpeg-dir=<DIR>
+ test yes '!=' no
+ test -f yes/lib/libpng.so -o -f yes/lib/libpng.a
+ test -f /usr/local/lib/libpng.so -o -f /usr/local/lib/
libpng.a
+ test -f /usr/lib/libpng.so -o -f /usr/lib/libpng.a
+ test -z ''
+ echo 'configure: error: libpng.(a|so) not found.'
configure: error: libpng.(a|so) not found.
+ exit 1

The message "error: libpng.(a|so) not found." appears in 
two places in the configure script.  The failure seen 
above is at the first location.

Exhibit B (results are equivalent for php-4.3.11, php
-4.4.0, and php-5.0.5):

++ echo floorf
++ tr abcdefghijklmnopqrstuvwxyz 
ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ ac_tr_func=HAVE_FLOORF
+ cat
+ test no = no
+ PHP_PNG_DIR=yes
+ test no = yes
+ test no = yes
+ test /usr/lib64 '!=' no
+ test -f /usr/lib64/lib/libjpeg.so -o -f /usr/lib64/
lib/libjpeg.a
+ test -f /usr/local/lib/libjpeg.so -o -f /usr/local/
lib/libjpeg.a
+ test -f /usr/lib/libjpeg.so -o -f /usr/lib/libjpeg.a
+ test -z ''
+ echo 'configure: error: libjpeg.(a|so) not found.'
configure: error: libjpeg.(a|so) not found.
+ exit 1

The message "error: libjpeg.(a|so) not found." appears 
in three places in the configure script.  The failure 
seen above is at the second location.

Analysis of failures:

>From Exhibit A, the lines

+ PHP_PNG_DIR=yes
+ test yes '!=' no

ensure that the test below which appears inside a for 
loop will always fail

+ test -f yes/lib/libpng.so -o -f yes/lib/libpng.a

That for loop is:
    for i in $PHP_PNG_DIR /usr/local /usr; do
        test -f $i/lib/libpng.$SHLIB_SUFFIX_NAME -o -f 
$i/lib/libpng.a && GD_PNG_DIR=$i && break
    done

Pathname "yes/lib/*" does not exist and is derived 
incorrectly.  There is one other similar for loop which 
also incorrectly appends the suffix "lib" to "yes".


>From Exhibit B, the line

+ test /usr/lib64 '!=' no

implies that $PHP_JPEG_DIR was set to /usr/lib64, and
appending the suffix "lib" to "/usr/lib64" ensures that 
test below which appears inside a for loop will always 
fail because "/usr/lib64/lib" does not exist

+ test -f /usr/lib64/lib/libjpeg.so -o -f /usr/lib64/
lib/libjpeg.a

That for loop is:
    for i in $PHP_JPEG_DIR /usr/local /usr; do
        test -f $i/lib/libjpeg.$SHLIB_SUFFIX_NAME -o -f 
$i/lib/libjpeg.a && GD_JPEG_DIR=$i && break
    done

There are two other for loops which also incorrectly 
append the suffix "lib" to "/usr/lib64".

Of course, the line

+ PHP_PNG_DIR=yes

implies that the option --with-png-dir should be 
appended to those that were used to run Exhibit B, but 
when that is done, configure still fails, and the 
outputs are equivalent.

Exhibit C (a possible solution to the problem):

After removing those "lib" suffixes from configure, a 
few more iterations:

./configure --libdir=/usr/lib64 --with-gd --with-jpeg-
dir=/usr/lib64 --with-png-dir=/usr/lib64

yields the following

+ LDFLAGS= -Wl,-rpath,/usr/lib64/lib
+ LDFLAGS= -Wl,-rpath,/usr/lib64/lib -L/usr/lib64/lib
+ PHP_RPATHS= /usr/lib64/lib
+ LIBS=-ljpeg -lresolv -lm -ldl -lnsl  -lxml2 -lz -lm 
-lxml2 -lz -lm
+ test /usr/lib64 '!=' no
+ test -f /usr/lib64/libpng.so -o -f /usr/lib64/libpng.a
+ GD_PNG_DIR=/usr/lib64
+ break
+ test -z /usr/lib64
+ test no = no
+ echo 'configure: error: PNG support requires ZLIB. Use 
--with-zlib-dir=<DIR>'
configure: error: PNG support requires ZLIB. Use --with-
zlib-dir=<DIR>
+ exit 1

and

./configure --libdir=/usr/lib64 --with-gd --with-jpeg-
dir=/usr/lib64 --with-png-dir=/usr/lib64 --with-zlib

yields the following

+ LDFLAGS= -Wl,-rpath,/usr/lib64/lib
+ LDFLAGS= -Wl,-rpath,/usr/lib64/lib -L/usr/lib64/lib
+ PHP_RPATHS= /usr/lib64/lib
+ LIBS=-ljpeg -lz -lresolv -lm -ldl -lnsl  -lxml2 -lz 
-lm -lxml2 -lz -lm
+ test /usr/lib64 '!=' no
+ test -f /usr/lib64/libpng.so -o -f /usr/lib64/libpng.a
+ GD_PNG_DIR=/usr/lib64
+ break
+ test -z /usr/lib64
+ test /usr = no
+ test '!' -f /usr/lib64/include/png.h
+ echo 'configure: error: png.h not found.'
configure: error: png.h not found.
+ exit 1


After being set incorrectly in the for loop from Exhibit 
A,

+ GD_PNG_DIR=/usr/lib64

causes png.h to not be found in /usr/lib64/include/ 
because that is the wrong directory.  The correct 
pathname should be /usr/include/png.h.

Changing GD_PNG_DIR=/usr/lib64 to GD_PNG_DIR=/usr in 
that loop and

./configure --libdir=/usr/lib64 --with-gd --with-jpeg-
dir=/usr/lib64 --with-png-dir=/usr/lib64 --with-zlib=/
usr

leads to success and to a Makefile.

Conclusion:
There is something wrong with the configuration of the 
GD extension, and configure can be modified to do all of 
the steps that I performed manually on three separate 
releases of php:  php-4.3.11, php-4.4.0, and php-5.0.5.

I read http://www.fabnat.com/linux/Php4_FC4_x86_64.html 
just after I started working on this problem.  I used 
the ideas, but I did not try out the patch although 
maybe you folks should look at it as a start toward a 
solution.


Expected result:
----------------
A Makefile.

Actual result:
--------------
No Makefile.  Script configure did not finish.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=34722&edit=1

Reply via email to