Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 12433 - doxygen/graphviz/qt: libpng clashes on png.h and pngconf.h causing major grief...
Summary: doxygen/graphviz/qt: libpng clashes on png.h and pngconf.h causing major grie...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: George Shapovalov (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-12-19 06:56 UTC by Phil Richards
Modified: 2003-04-04 01:24 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Phil Richards 2002-12-19 06:56:22 UTC
Install doxygen - this installs graphviz, which requires libpng=1.0, and so
installs libpng-1.0*, which trashes the libpng-1.2* versions of png.h and pngconf.h.

Update qt.  This compiles against the 1.0 headers, but links against the 1.2
libpng.so (probably because it uses libpng-config to determine what is
installed, and this only exists with libpng-1.2...).

Restart KDE and all the .png files fail to load, including all those that appear
on the panel and desktop.  It also appears to kill kcontrol, which doesn't cope
well when it can't load its eye-candy.

I'd suggest that graphviz should carry its own version of libpng and link it
statically, but a bigger issue is that libpng-1.0 and libpng-1.2 are mutually
exclusive - you can't have both fully installed safely (in their current form,
anyway).
Comment 1 Mikael A 2002-12-19 13:24:43 UTC
I'd say it doesn't use libpng-config because if it did shouldn't it select 
the appropriate headers in /usr/include/libpng12 ?  
Thats the path libpng-config --I_opts return on my system. 
 
Why is libpng and libpng 1.2 mutually exclusive ? 
Comment 2 Phil Richards 2002-12-19 14:04:45 UTC
Hmm, interesting point.  And, now that I've had a look at the CONTENTS files,
the answer is rather annoying.

libpng-1.0.12-r1/CONTENTS:
dir /usr
dir /usr/include
obj /usr/include/png.h c44f187d27ae1d03e3b7d37b93e1ec8f 1039186969
obj /usr/include/pngconf.h 134cf56e08d03fcd0591019661f2561a 1039186969
dir /usr/lib
obj /usr/lib/libpng.a 8b52583d78468d4ffa799b6cd08440f7 1039186969
obj /usr/lib/libpng.so.2.1.0.12 b6a37a07ea342f1ca8f85f59c07b7cdc 1039186969
sym /usr/lib/libpng.so.2 -> libpng.so.2.1.0.12 1039186969
sym /usr/lib/libpng.so -> libpng.so.2 1039186969
...

libpng-1.2.12-r1/CONTENTS:
dir /usr
dir /usr/include
dir /usr/include/libpng12
obj /usr/include/libpng12/png.h d9810e926cf02e0ecc1967edcedb5c0c 1040292435
obj /usr/include/libpng12/pngconf.h 6262671479b2c2d372a1ca084df6a745 1040292435
sym /usr/include/libpng -> libpng12 1040292435
sym /usr/include/png.h -> libpng12/png.h 1040292435
sym /usr/include/pngconf.h -> libpng12/pngconf.h 1040292435
dir /usr/lib
obj /usr/lib/libpng12.a e45fcfd0a83e181ce2e3c8f85869c90a 1040292435
sym /usr/lib/libpng.a -> libpng12.a 1040292435
obj /usr/lib/libpng12.so.0.1.2.5 9f587455fc077a2bb161483278b219e8 1040292435
obj /usr/lib/libpng.so.3.1.2.5 52d46548635b8e8b469ae805f5d85ecc 1040292435
sym /usr/lib/libpng.so.3 -> libpng.so.3.1.2.5 1040292435
sym /usr/lib/libpng.so -> libpng.so.3 1040292435
sym /usr/lib/libpng12.so.0 -> libpng12.so.0.1.2.5 1040292435
sym /usr/lib/libpng12.so -> libpng12.so.0 1040292435
dir /usr/lib/pkgconfig
obj /usr/lib/pkgconfig/libpng12.pc 97bfd00febd545bcfa26f897c14cdf71 1040292435
sym /usr/lib/pkgconfig/libpng.pc -> libpng12.pc 1040292436
...
dir /usr/bin
obj /usr/bin/libpng12-config f3a2f69422941836a773985afe4ddab3 1040292435
sym /usr/bin/libpng-config -> libpng12-config 1040292436


As you can see, libpng-1.2 installs nice symlinks from /usr/include/png.h to
/usr/include/libpng12/png.h.  It's a shame that the installation of libpng-1.0
(a) doesn't install its headers into libpng-10; (b) the installation process for
libpng-1.0 installs to /usr/include/png.h, but this happily follows the symlink
and clobbers the /usr/include/libpng12/png.h file.

I've had a quick look through portage.py and as far as I can tell, if a new
emerge is going to overwrite a symlink with a regular file, the symlink is *not*
removed, and hence the copy of the regular file will follow the symlink,
trashing what it points at.  (This is sensible behaviour for directories, but is
rather more arguable for regular files - in the case of libpng, it is just plain
wrong.)
Comment 3 Seemant Kulleen (RETIRED) gentoo-dev 2002-12-19 15:05:15 UTC
I'm creating something experimental here -- a png-config type utility to allow
switching on the fly (and creating symlinks on the fly). Gimme a few hours and
I'll have something for y'all to test.
Comment 4 Mikael A 2002-12-20 01:48:12 UTC
Hmm, looking at the makefile.linux for libpng it should feasible 
to move the include files into /usr/include/libpng-10. 
But i'm afraid it might create more problems than it solves unless 
autoconf for KDE is updated at the same time. 
 
Comment 5 Seemant Kulleen (RETIRED) gentoo-dev 2003-01-16 07:12:37 UTC
I added libpng-1.0.15 which really should sort this.
Comment 6 Ricardo Ferreira 2003-01-20 23:43:21 UTC
Doesn't solve it for me. 
I emerge -C libpng and then no matter the order i merge 1.2.5 and 1.0.15, i still 
cant compile libdvbpsi because the dot program from graphviz fails with: 
 
make -C doc doc 
make[1]: Entering directory 
`/var/tmp/portage/libdvbpsi-0.1.2/work/libdvbpsi-0.1.2/doc' 
dot -Tpng -o decoder.png decoder.dot 
libpng warning: Application was compiled with png.h from libpng-1.0.15 
libpng warning: Application  is  running with png.c from libpng-1.2.5 
gd-png:  fatal libpng error: Incompatible libpng version in application and library 
make[1]: *** [decoder.png] Segmentation fault 
make[1]: *** Deleting file `decoder.png' 
make[1]: Leaving directory 
`/var/tmp/portage/libdvbpsi-0.1.2/work/libdvbpsi-0.1.2/doc' 
make: *** [doc] Error 2 
 
Comment 7 Hannes Mehnert (RETIRED) gentoo-dev 2003-01-21 08:29:57 UTC
Hi, 
 
i updated graphviz to 1.8.10-r2 (which depends on libpng-1.0.15) and get the following 
error during emerge kdelibs-apidocs: 
Error: Problems running dot. Check your installation! 
libpng warning: Application was compiled with png.h from libpng-1.0.15 
libpng warning: Application  is  running with png.c from libpng-1.2.5 
gd-png:  fatal libpng error: Incompatible libpng version in application and library 
 
/usr/lib/graphviz/libgd.so is linked against /usr/lib/libpng.so.3 (which is provided by 
libpng-1.2.5-r3.ebuild. 
Comment 8 George Shapovalov (RETIRED) gentoo-dev 2003-01-21 16:46:09 UTC
Hi guys.

Thanks for testing!
Well, that was kind of strange, since I did not seem to experience this problem
with the -r2. 
Anyway, I updated the graphviz ebuild to change all end every instance of -lpng
to -lpng10 in all scripts and Makefiles. Should now link correctly everywhere. I
revision bumped graphviz-1.8.10 again, since the failure might not have been
very apparent and some people might be silently affected. Please test.

Also, prior to remergind graphviz, colud you guys please completely unmerge all
instances of libpng and then emerge 1.0.15 and 1.2.5-r2? I am worrying that you
might have been bitten by the stale png.h from libpng-1.0.12: libpng-1.0.15 was
finally mangled to get rid of all files in common with 1.2.x series, so the
order in which you emerge these versions should not matter now. Still this means
that /usr/lib/png.h no loner belongs to libpng-1.0.15 and thus you might have
had stale png.h from libpng-1.0.12 if you did not remerge 1.2.x after it. I
revision bumped 1.2.5 when 1.0.15 was released in order to eliminate
possiboility of this, however you might have been caught by the update (well,
clean system should have benn updated correctly, but as usually recovering messy
one can be a bit more tricky).

I'll RESOLVE/Test-request this bug for now. Please reopen it if the problem is
still not solved. Otherwise please let me know of success, so that I could mark
graphviz-1.8.10-r3 stable and remove all prior 1.8.x revisions.

George
Comment 9 Hannes Mehnert (RETIRED) gentoo-dev 2003-01-21 17:38:09 UTC
George: thx again. works fine here :) 
Comment 10 John Davis (zhen) (RETIRED) gentoo-dev 2003-04-04 01:19:16 UTC
db fix
Comment 11 John Davis (zhen) (RETIRED) gentoo-dev 2003-04-04 01:24:17 UTC
db fix