[Xquartz-dev] Libpng mismatch

Peter Dyballa Peter_Dyballa at Web.DE
Fri Aug 27 16:18:47 PDT 2010


Hello!

When compiling GNU Emacs 24.0.50 from bzr with GTK from MacPorts and  
X11 from the org.x.x11.pkg version 2.5.23 in /usr/X11 I get a partly  
non-functional binary:

	PNG warning: Application was compiled with png.h from libpng-1.2.8
	PNG warning: Application  is  running with png.c from libpng-1.4.3
	PNG warning: Incompatible libpng version in application and library

PATH starts with /opt/local/bin, configuration happened with:

	./configure --without-sound --without-dbus --without-pop --without- 
gconf --with-x-toolkit=gtk --x-libraries=/usr/X11/lib --x-includes=/ 
usr/X11/include --enable-locallisppath=/Library/Application\ Support/ 
Emacs/calendar24:/Library/Application\ Support/Emacs CFLAGS="-g -H - 
pipe -fPIC -fno-common -mcpu=7450 -mtune=7450 -faltivec -fast"  
CPPFLAGS="" LDFLAGS="-Wl,-dead_strip_dylibs" CC=gcc-4.2 CPP=cpp-4.2

The (patched) configure script (to use MacPorts instead of Fink)  
reports:

	checking png.h usability... yes
	checking png.h presence... yes
	checking for png.h... yes
	checking libpng/png.h usability... yes
	checking libpng/png.h presence... yes
	checking for libpng/png.h... yes
	checking for png_get_channels in -lpng... yes

Its LOG file contains:

	configure:10650: checking png.h usability
	configure:10650: gcc-4.2 -I/opt/local/include -L/opt/local/lib -c -I/ 
usr/X11/include -g -H -pipe -fPIC -fno-common -mcpu=7450 -mtune=7450 - 
faltivec -fast -D_REENTRANT -I/usr/X11/include/cairo -I/usr/X11/ 
include/pixman-1 -I/usr/X11/include/freetype2 -I/usr/X11/include -I/ 
usr/X11/include/libpng14 -I/opt/local/include/librsvg-2 -I/opt/local/ 
include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/ 
include -I/opt/local/include/gtk-2.0   -D_REENTRANT -I/usr/X11/include/ 
cairo -I/usr/X11/include -I/usr/X11/include/pixman-1 -I/usr/X11/ 
include/freetype2 -I/usr/X11/include/libpng14 -I/opt/local/include/ 
gtk-2.0 -I/opt/local/lib/gtk-2.0/include -I/opt/local/include/atk-1.0 - 
I/opt/local/include/pango-1.0 -I/opt/local/include/gio-unix-2.0/ -I/ 
opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/ 
local/include   -I/usr/X11/include -I/usr/X11/include/freetype2   -I/ 
usr/X11/include    -I/usr/X11/include -I/usr/X11/include/freetype2    
conftest.c >&5
	. /usr/include/stdio.h
	.. /usr/include/_types.h
	... /usr/include/sys/_types.h
	.... /usr/include/sys/cdefs.h
	.... /usr/include/machine/_types.h
	..... /usr/include/ppc/_types.h
	. /usr/include/sys/types.h
	.. /usr/include/sys/appleapiopts.h
	.. /usr/include/machine/types.h
	... /usr/include/ppc/types.h
	.... /usr/include/ppc/_types.h
	.. /usr/include/machine/endian.h
	... /usr/include/ppc/endian.h
	.... /usr/include/sys/_endian.h
	.. /usr/include/sys/_structs.h
	. /usr/include/sys/stat.h
	.. /usr/include/sys/_structs.h
	. /usr/include/stdlib.h
	.. /usr/include/available.h
	.. /usr/include/sys/wait.h
	... /usr/include/sys/signal.h
	.... /usr/include/machine/signal.h
	..... /usr/include/ppc/signal.h
	...... /usr/include/ppc/_structs.h
	.... /usr/include/sys/_structs.h
	..... /usr/include/machine/_structs.h
	...... /usr/include/ppc/_structs.h
	....... /usr/include/mach/ppc/_structs.h
	... /usr/include/sys/resource.h
	.... /usr/include/sys/_structs.h
	.. /usr/include/alloca.h
	. /Developer/usr/bin/../lib/gcc/powerpc-apple-darwin9/4.2.1/include/ 
stddef.h
	. /usr/include/string.h
	. /usr/include/strings.h
	. /usr/include/inttypes.h
	.. /Developer/usr/bin/../lib/gcc/powerpc-apple-darwin9/4.2.1/include/ 
stdint.h
	. /usr/include/unistd.h
	.. /usr/include/sys/unistd.h
	.. /usr/include/sys/select.h
	... /usr/include/sys/_structs.h
	... /usr/include/sys/_select.h
	. /opt/local/include/png.h
	.. /opt/local/include/zlib.h
	... /opt/local/include/zconf.h
	.. /opt/local/include/pngconf.h
	... /usr/include/setjmp.h
	.... /usr/include/machine/setjmp.h
	..... /usr/include/ppc/setjmp.h
	...... /usr/include/ppc/_structs.h
	... /usr/include/time.h
	.... /usr/include/_structs.h
	..... /usr/include/sys/_structs.h
	configure:10650: $? = 0
	configure:10650: result: yes
	configure:10650: checking png.h presence
	configure:10650: gcc-4.2 -E -no-cpp-precomp -I/opt/local/include -L/ 
opt/local/lib -I/usr/X11/include    -I/usr/X11/include -I/usr/X11/ 
include/freetype2   conftest.c
	configure:10650: $? = 0
	configure:10650: result: yes
	configure:10650: checking for png.h
	configure:10650: result: yes
	configure:10650: checking libpng/png.h usability
	configure:10650: gcc-4.2 -I/opt/local/include -L/opt/local/lib -c -I/ 
usr/X11/include -g -H -pipe -fPIC -fno-common -mcpu=7450 -mtune=7450 - 
faltivec -fast -D_REENTRANT -I/usr/X11/include/cairo -I/usr/X11/ 
include/pixman-1 -I/usr/X11/include/freetype2 -I/usr/X11/include -I/ 
usr/X11/include/libpng14 -I/opt/local/include/librsvg-2 -I/opt/local/ 
include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/ 
include -I/opt/local/include/gtk-2.0   -D_REENTRANT -I/usr/X11/include/ 
cairo -I/usr/X11/include -I/usr/X11/include/pixman-1 -I/usr/X11/ 
include/freetype2 -I/usr/X11/include/libpng14 -I/opt/local/include/ 
gtk-2.0 -I/opt/local/lib/gtk-2.0/include -I/opt/local/include/atk-1.0 - 
I/opt/local/include/pango-1.0 -I/opt/local/include/gio-unix-2.0/ -I/ 
opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/ 
local/include   -I/usr/X11/include -I/usr/X11/include/freetype2   -I/ 
usr/X11/include    -I/usr/X11/include -I/usr/X11/include/freetype2    
conftest.c >&5
	. /usr/include/stdio.h
	.. /usr/include/_types.h
	... /usr/include/sys/_types.h
	.... /usr/include/sys/cdefs.h
	.... /usr/include/machine/_types.h
	..... /usr/include/ppc/_types.h
	. /usr/include/sys/types.h
	.. /usr/include/sys/appleapiopts.h
	.. /usr/include/machine/types.h
	... /usr/include/ppc/types.h
	.... /usr/include/ppc/_types.h
	.. /usr/include/machine/endian.h
	... /usr/include/ppc/endian.h
	.... /usr/include/sys/_endian.h
	.. /usr/include/sys/_structs.h
	. /usr/include/sys/stat.h
	.. /usr/include/sys/_structs.h
	. /usr/include/stdlib.h
	.. /usr/include/available.h
	.. /usr/include/sys/wait.h
	... /usr/include/sys/signal.h
	.... /usr/include/machine/signal.h
	..... /usr/include/ppc/signal.h
	...... /usr/include/ppc/_structs.h
	.... /usr/include/sys/_structs.h
	..... /usr/include/machine/_structs.h
	...... /usr/include/ppc/_structs.h
	....... /usr/include/mach/ppc/_structs.h
	... /usr/include/sys/resource.h
	.... /usr/include/sys/_structs.h
	.. /usr/include/alloca.h
	. /Developer/usr/bin/../lib/gcc/powerpc-apple-darwin9/4.2.1/include/ 
stddef.h
	. /usr/include/string.h
	. /usr/include/strings.h
	. /usr/include/inttypes.h
	.. /Developer/usr/bin/../lib/gcc/powerpc-apple-darwin9/4.2.1/include/ 
stdint.h
	. /usr/include/unistd.h
	.. /usr/include/sys/unistd.h
	.. /usr/include/sys/select.h
	... /usr/include/sys/_structs.h
	... /usr/include/sys/_select.h
	. /usr/X11/include/libpng/png.h
	.. /opt/local/include/zlib.h
	... /opt/local/include/zconf.h
	.. /usr/X11/include/libpng/pngconf.h
	... /usr/include/setjmp.h
	.... /usr/include/machine/setjmp.h
	..... /usr/include/ppc/setjmp.h
	...... /usr/include/ppc/_structs.h
	... /usr/include/time.h
	.... /usr/include/_structs.h
	..... /usr/include/sys/_structs.h
	configure:10650: $? = 0
	configure:10650: result: yes
	configure:10650: checking libpng/png.h presence
	configure:10650: gcc-4.2 -E -no-cpp-precomp -I/opt/local/include -L/ 
opt/local/lib -I/usr/X11/include    -I/usr/X11/include -I/usr/X11/ 
include/freetype2   conftest.c
	configure:10650: $? = 0
	configure:10650: result: yes
	configure:10650: checking for libpng/png.h
	configure:10650: result: yes
	configure:10662: checking for png_get_channels in -lpng
	configure:10687: gcc-4.2 -I/opt/local/include -L/opt/local/lib -o  
conftest -I/usr/X11/include -g -H -pipe -fPIC -fno-common -mcpu=7450 - 
mtune=7450 -faltivec -fast -D_REENTRANT -I/usr/X11/include/cairo -I/ 
usr/X11/include/pixman-1 -I/usr/X11/include/freetype2 -I/usr/X11/ 
include -I/usr/X11/include/libpng14 -I/opt/local/include/librsvg-2 -I/ 
opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/ 
local/include -I/opt/local/include/gtk-2.0   -D_REENTRANT -I/usr/X11/ 
include/cairo -I/usr/X11/include -I/usr/X11/include/pixman-1 -I/usr/ 
X11/include/freetype2 -I/usr/X11/include/libpng14 -I/opt/local/include/ 
gtk-2.0 -I/opt/local/lib/gtk-2.0/include -I/opt/local/include/atk-1.0 - 
I/opt/local/include/pango-1.0 -I/opt/local/include/gio-unix-2.0/ -I/ 
opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/ 
local/include   -I/usr/X11/include -I/usr/X11/include/freetype2   -I/ 
usr/X11/include    -I/usr/X11/include -I/usr/X11/include/freetype2   - 
Wl,-dead_strip_dylibs -L/usr/X11/lib conftest.c -lpng -lz -lm - 
lXrender -L/usr/X11/lib -lXft -lXrender -lfontconfig -lexpat -liconv - 
lfreetype -lz -lX11 -lxcb -lXau -lXdmcp   -L/usr/X11/lib -L/opt/local/ 
lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 - 
lpangocairo-1.0 -lXinerama -lXi -lXrandr -lXcursor -lXcomposite - 
lXdamage -lpangoft2-1.0 -lgio-2.0 -lXext -lXfixes -lcairo -lpixman-1 - 
lpng14 -lXrender -lX11 -lxcb -lXau -lXdmcp -lpango-1.0 -lm - 
lfontconfig -lexpat -lfreetype -lz -lgobject-2.0 -lgmodule-2.0 - 
lgthread-2.0 -lglib-2.0 -lintl -liconv   -L/usr/X11/lib -L/opt/local/ 
lib -lrsvg-2 -lgdk_pixbuf-2.0 -lm -lcairo -lgobject-2.0 -lgmodule-2.0 - 
lgthread-2.0 -lglib-2.0 -lintl -lpixman-1 -lfontconfig -lexpat - 
lfreetype -liconv -lpng14 -lz -lXrender -lX11 -lxcb -lXau -lXdmcp   - 
lX11   >&5
	configure:10687: $? = 0
	configure:10696: result: yes

This last GCC invocation looks very suspicious to me: it has -lpng and  
-lpng14! The "-lpng" does not seem to come from a PC (pkg-config)  
file, it's obviously "hard coded" in the configure script. Another,  
strange, thing is that PNG related C header files are taken from /usr/ 
X11/include/libpng instead of /usr/X11/include (sym-links to /usr/X11/ 
include/libpng14) or /usr/X11/include/libpng14,

	pete 230 /\ l /usr/X11/include | grep libpng
	drwxr-xr-x  2 root wheel  136  9. Sep 2007  libpng
	drwxr-xr-x  2 root wheel  136 23. Aug 13:51 libpng12
	drwxr-xr-x  2 root wheel  136 23. Aug 13:51 libpng14
	lrwxr-xr-x  1 root wheel   14 23. Aug 13:51 png.h -> libpng14/png.h
	lrwxr-xr-x  1 root wheel   18 23. Aug 13:51 pngconf.h -> libpng14/ 
pngconf.h

for example here when a file is compiled which enables GNU Emacs to  
display the picture inside of GIF, TIFF, or PNG (and a few other  
graphics) files:

	gcc-4.2 -I/opt/local/include -L/opt/local/lib -c  -Demacs - 
DHAVE_CONFIG_H  -I. -I/Users/pete/Quellen/Emacs_CVS/emacs-24/src   -I/ 
usr/X11/include -D_REENTRANT -I/usr/X11/include/cairo -I/usr/X11/ 
include -I/usr/X11/include/pixman-1 -I/usr/X11/include/freetype2 -I/ 
usr/X11/include/libpng14 -I/opt/local/include/gtk-2.0 -I/opt/local/lib/ 
gtk-2.0/include -I/opt/local/include/atk-1.0 -I/opt/local/include/ 
pango-1.0 -I/opt/local/include/gio-unix-2.0/ -I/opt/local/include/ 
glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include   -I/ 
usr/X11/include -I/usr/X11/include/freetype2     -D_REENTRANT -I/usr/ 
X11/include/cairo -I/usr/X11/include/pixman-1 -I/usr/X11/include/ 
freetype2 -I/usr/X11/include -I/usr/X11/include/libpng14 -I/opt/local/ 
include/librsvg-2 -I/opt/local/include/glib-2.0 -I/opt/local/lib/ 
glib-2.0/include -I/opt/local/include -I/opt/local/include/ 
gtk-2.0        -I/usr/X11/include/freetype2 -I/usr/X11/include -I/opt/ 
local/include/freetype2 -I/opt/local/include    -MMD -MF deps/image.d   
-Wimplicit-function-declaration -Wold-style-definition -Wdeclaration- 
after-statement -Wno-pointer-sign  -g -H -pipe -fPIC -fno-common - 
mcpu=7450 -mtune=7450 -faltivec -fast image.c

The directories checked according to this invocation are:

	-I/opt/local/include
	-I.
	-I/path/to/GNU Emacs/src
	-I/usr/X11/include
	-I/usr/X11/include/cairo
	-I/usr/X11/include
	-I/usr/X11/include/pixman-1
	-I/usr/X11/include/freetype2
	-I/usr/X11/include/libpng14
	-I/opt/local/include/gtk-2.0
	-I/opt/local/lib/gtk-2.0/include
	-I/opt/local/include/atk-1.0
	-I/opt/local/include/pango-1.0
	-I/opt/local/include/gio-unix-2.0/
	-I/opt/local/include/glib-2.0
	-I/opt/local/lib/glib-2.0/include
	-I/opt/local/include
	-I/usr/X11/include
	-I/usr/X11/include/freetype2
	-I/usr/X11/include/cairo
	-I/usr/X11/include/pixman-1
	-I/usr/X11/include/freetype2
	-I/usr/X11/include
	-I/usr/X11/include/libpng14
	-I/opt/local/include/librsvg-2
	-I/opt/local/include/glib-2.0
	-I/opt/local/lib/glib-2.0/include
	-I/opt/local/include
	-I/opt/local/include/gtk-2.0
	-I/usr/X11/include/freetype2
	-I/usr/X11/include
	-I/opt/local/include/freetype2
	-I/opt/local/include

but, thanks to -H option, actually

	. /usr/include/unistd.h
	.. /usr/include/sys/unistd.h
	.. /usr/include/sys/select.h
	... /usr/include/sys/_structs.h
	... /usr/include/sys/_select.h
=>	. /usr/X11/include/libpng/png.h
	.. /opt/local/include/zlib.h
	... /opt/local/include/zconf.h
	.... /usr/include/sys/types.h
	..... /usr/include/sys/_structs.h
=>	.. /usr/X11/include/libpng/pngconf.h
	... /usr/include/setjmp.h
	.... /usr/include/machine/setjmp.h
	..... /usr/include/ppc/setjmp.h
	...... /usr/include/ppc/_structs.h
	... /usr/include/time.h
	.... /usr/include/_structs.h
	..... /usr/include/sys/_structs.h

which are "libpng version 1.2.8 - December 3, 2004", get included  
(excerpt from over 1,100 C header file lines), which are the wrong  
ones. (Those in libpng14 are "libpng version 1.4.3 - June 26, 2010".)

Why is GCC 4.2 searching a directory not given to it? How can this  
behaviour be avoided? (With Fink instead of MacPorts GNU Emacs 24.0.50  
compiles fine.) Is this worth a bug report at Apple? (I am using  
Leopard on PPC hardware – I'll certainly see no update in my life time.)

Oh, one thing, otool reports:

	/opt/local/lib/libgtk-x11-2.0.0.dylib (compatibility version  
2001.0.0, current version 2001.1.0)
	/opt/local/lib/libgdk-x11-2.0.0.dylib (compatibility version  
2001.0.0, current version 2001.1.0)
	/opt/local/lib/libgdk_pixbuf-2.0.0.dylib (compatibility version  
2001.0.0, current version 2001.1.0)
	/usr/X11/lib/libpng14.14.dylib (compatibility version 18.0.0, current  
version 18.0.0)
	/opt/local/lib/libXrender.1.dylib (compatibility version 5.0.0,  
current version 5.0.0)
	/opt/local/lib/libX11.6.dylib (compatibility version 10.0.0, current  
version 10.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current  
version 111.1.5)
	/opt/local/lib/libfontconfig.1.dylib (compatibility version 6.0.0,  
current version 6.4.0)
	/opt/local/lib/libfreetype.6.dylib (compatibility version 13.0.0,  
current version 13.0.0)
	/opt/local/lib/libgobject-2.0.0.dylib (compatibility version  
2401.0.0, current version 2401.2.0)
	/opt/local/lib/libglib-2.0.0.dylib (compatibility version 2401.0.0,  
current version 2401.2.0)
	/opt/local/lib/libSM.6.dylib (compatibility version 7.0.0, current  
version 7.1.0)
	/opt/local/lib/libICE.6.dylib (compatibility version 10.0.0, current  
version 10.0.0)
	/opt/local/lib/libtiff.3.dylib (compatibility version 13.0.0, current  
version 13.4.0)
	/opt/local/lib/libjpeg.8.dylib (compatibility version 9.0.0, current  
version 9.2.0)
	/opt/local/lib/libgif.4.dylib (compatibility version 6.0.0, current  
version 6.6.0)
	/opt/local/lib/libXpm.4.dylib (compatibility version 16.0.0, current  
version 16.0.0)
	/opt/local/lib/libXft.2.dylib (compatibility version 4.0.0, current  
version 4.13.0)
	/opt/local/lib/librsvg-2.2.dylib (compatibility version 29.0.0,  
current version 29.3.0)
	/opt/local/lib/libncurses.5.dylib (compatibility version 5.0.0,  
current version 5.0.0)
	/opt/local/lib/libotf.0.dylib (compatibility version 1.0.0, current  
version 1.0.0)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current  
version 1.0.0)

--
Greetings

   Pete

Work is the curse of the drinking class.
				– Oscar Wilde



More information about the Xquartz-dev mailing list