Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 248855 - media-libs/libcaca-0.99_beta16: doesn't create compatibility symlinks for libcucul.la libcucul.a libcucul++.la libcucul++.a
Summary: media-libs/libcaca-0.99_beta16: doesn't create compatibility symlinks for lib...
Status: RESOLVED WONTFIX
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: High normal
Assignee: Gentoo Media-video project
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-11-26 09:11 UTC by Rowan Thorpe
Modified: 2008-12-01 20:53 UTC (History)
0 users

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


Attachments
causes make install to create needed symlinks (libcaca-0.99_beta16-symlinks.patch,1.02 KB, patch)
2008-11-26 09:12 UTC, Rowan Thorpe
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Rowan Thorpe 2008-11-26 09:11:17 UTC
"make install" doesn't create compatibility symlinks for libcucul.la, libcucul.a, libcucul++.la, libcucul++.a (as it does for the ".so"s). These are needed at compile-time by many other packages. I'm not an autotools guru, nor an experienced C hacker, so the attached patch might be a bit of a "works for me" hack, and not very elegant. If so, can someone please submit a better version of the patch (should be straightforward).

Reproducible: Always

Steps to Reproduce:
1. emerge libcaca
2. emerge anything that needs e.g. libcucul.la
3.

Actual Results:  
./configure stops in various other emerges (I think I remember imagemagick was one..?)

Expected Results:  
All good.
Comment 1 Rowan Thorpe 2008-11-26 09:12:48 UTC
Created attachment 173416 [details, diff]
causes make install to create needed symlinks
Comment 2 Rafał Mużyło 2008-11-26 13:58:41 UTC
While I won't be testing your 'solution',
I believe it's broken.
While that symlink is OK as a compatibility
solution for the real lib (as, IIRC, libcucul was simply
absorbed by libcaca), it would be wrong for libtool files.

Sadly, the best solution here is at the same time the worst
- it's 'revdep-rebuild' (see bug 158476 for a similar problem).
Comment 3 Rowan Thorpe 2008-11-26 16:48:52 UTC
To Rafał Mużyło, It seems you understand the problem better than I do (regarding the inner workings of libtool)...
> Sadly, the best solution here is at the same time the worst
> - it's 'revdep-rebuild' (see bug 158476 for a similar problem).

...but I should mention that the problem I encountered was:
 A) at _compile-time_ for several new packages (I struck at least 4, but can't
    now remember which ones exactly..)
 B) just after I had done a "revdep-rebuild" (as you advise)
 C) after an "emerge --sync" only a few days ago
 D) entirely disappeared (apparently without problem, so far) since I added the
    4 missing symlinks

In that respect I believe it is a different type of problem than bug 158476..(?)

For example, IIRC, the configure phase of "emerge imagemagick" explicitly looks for /usr/lib/libcucul.la (possibly only with my USE flag setup) and fails before compiling even starts... So this seems not to be a stale library-deps problem, because it's a _build-time_ problem . It seems that if there are still several other packages still expecting to find libcucul{.la,.a,++.la,++.a} at build-time, then upstream libcaca should be providing some form of compatibility links for them too (like they do for libcucul###.so, etc), or the other relevant ebuilds should only depend on older versions of libcaca until each of those upstreams update their configure-scripts...? In case it's now useful (I didn't think it relevant before), following this line are all relevant parts of my "emerge --info":
-------------------------
ACCEPT_KEYWORDS="x86 ~x86"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O3 -march=pentium3 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="-O3 -march=pentium3 -pipe -fomit-frame-pointer"
FEATURES="buildpkg collision-protect distlocks metadata-transfer parallel-fetch preserve-libs protect-owned sandbox severe sfperms strict suidctl unmerge-orphans userfetch userpriv usersandbox"
LDFLAGS="-Wl,-O1"
MAKEOPTS="-j2"
USE="X X509 a52 aac aalib acl acpi activefilter adplug alisp alsa amr amrnb amrwb ao apache apache2 applet archive ares artworkextra async asyncns audiofile audit autoipd avahi avi bash-completion berkdb bitmap-fonts bl bluetooth bookmarks branding bzip2 cairo calendar caps cdda cddb cdio cdparanoia cdr cgi cgraph chipcard chroot cli clisp consolekit contrast cracklib crypt cscope css cups curl cvs cxx daap dbtool dbus debugger dedicated dell deskbar device-mapper dga dhcp dirac disk-partition djvu dlloader dmi dri dts dv dvb dvd dvdnav dvdr dvdread dvi eds elf emboss enca encode epyoc evo examples exif expat extraengine extrafilters extras fam fame fastcgi ffmpeg fftw firefox flac fluidsynth fontconfig foomaticdb fortran fpx ftp fuse galago gcdmaster gcj gd gdbm gedit gif gimp gimpprint glade glib glibc-omitfp glitz gmp gnome gnome-keyring gpac gpgme gphoto2 gpm graphviz gs gsf gsm gstreamer gtk gtkhtml guile hal hbci hdri hfs howl-compat hpn html ical iceweasel iconv id3 id3tag idea idn ieee1394 imagemagick imap imlib immqt injection insecure-savers iodbc ip-as-string ipod ipv6 irda isdnlog ithreads jack java javascript jbig jce jpeg jpeg2k kerberos keyring kqemu ladcca ladspa lame lamz lapack laptop lash latex lcms ldap libcaca libffi libg++ libnotify libsamplerate libssh2 lirc live lm_sensors logrotate loop-aes lua lv2 lzma lzo mad madwifi mbox md5sum mdnsresponder-compat mfd-rewrites midi mikmod ming mjpeg mktemp mmap mmx mmxext mng modplug mono moonlight mozdevelop mozdom mp2 mp3 mp3rtp mp4 mp4live mpeg mpeg2 mplayer mtp mudflap multitarget multiuser muse musepack musicbrainz mysql mysqli mythtv nas nautilus ncurses nemesi netbeans netboot network network-cron networking networkmanager new-login nfs nis nls nntp nptl nptlonly nsplugin ntfs ntp nuv nvidia nvtv odbc offensive ofx ogg openal openct openexr opengl openmp overlays pam pango passwdqc paste64 pcap pcmcia pcntl pcre pcsc-lite pdf pdflib pear perl php pkcs11 png pnm pop portaudio postgres ppd ppds pppd pulseaudio pvr python qmail-spp qt-static qt3 qt3support qt4 quicktime quotas quotes radio radius rar raw readline reflection regex reiserfs rle rpm rrdcgi rtc ruby samba sasl schroedinger script scrobbler sdl sendmail sensord serial server session sharedmem sid sidebar skey slp smartcard smime sms smtp sndfile soap sockets socks5 soundex soundtouch sox speex spell spl sqlite sqlite3 srt sse ssh ssl startup-notification subtitles subversion svg svga sysfs syslog sysvipc t1lib tagwriting tcl tcpd teletext tga theora threads threadsafe tidy tiff timezone timidity tk tls toolbar tracker transcode truetype truetype-fonts tta twolame type1-fonts udev unicode usb utils uuid v4l v4l2 vamp vcd vdr verse vhook vidix vim-pager vim-syntax vim-with-x vorbis wavpack webdav webdav-serf webkit win32codecs wininst wma wmf wxwindows x264 x86 xanim xattr xcb xforms xft xine xinerama xinetd xml xml2 xmldoclet xmlreader xmlrpc xmlwriter xmp xorg xpm xprint xsl xslt xv xvid yv12 zeroconf zlib zvbi" ALSA_CARDS="maestro3 usb-audio bt87x intel8x0 intel8x0m hda-intel" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="evdev keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en en_GB en_US el el_GR pt pt_PT" LIRC_DEVICES="alsa_usb audio audio_alsa avermedia devinput dsp inputlirc irman sir udp usbx               userspace" USERLAND="GNU" VIDEO_CARDS="nvidia nv i810 intel vesa vga v4l vmware chips dummy"
Unset:  CPPFLAGS, CTARGET, FFLAGS, INSTALL_MASK, LANG, LC_ALL
---------------------
Comment 4 Rafał Mużyło 2008-11-26 20:21:02 UTC
Well, the thing is, that while you failed to post your failures,
I suspect, that they were caused by exactly the same problem.

When one of the libs depended on libcaca, it's la file got injected with
libcucul.la. While symlink to the lib is enough for the linker,
libtool itself fails, if it reads la file of a lib and finds there
a reference to a different la file (in this case, libcucul.la).

And I can't find any reference in ImageMagick sources, not only
to libcucul, but even to libcaca.
Comment 5 Rafał Mużyło 2008-11-26 20:22:50 UTC
That line was meant to be:
'to a different, non-existant la file'
Comment 6 Rowan Thorpe 2008-11-27 05:36:47 UTC
Sorry I couldn't post any specific logs before, I'm rebuilding my system from scratch while doing a hundred other things, and had no time to "retrace any steps". I'm not sure if imagemagick was a red-herring... but I did dig a bit and found that one of the failed ebuilds was gegl-0.0.20, and the relevant part of the log is attached below. I still suspect there is something awry, because I tried these emerges straight after doing a revdep-rebuild (which is what you suggested would "avoid" the problem...!?). Anyway, if it is as you said (and which I don't know enough about libtool to query), please feel free to mark this bug as INVALID or UPSTREAM, etc (...or do I have to do that myself?).
-----------------
libtool: link: ( cd ".libs" && rm -f "svg-load.la" && ln -s "../svg-load.la" "svg-load.la" )
/bin/sh ../../libtool --tag=CC   --mode=link i686-pc-linux-gnu-gcc -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -O3 -march=pentium3 -pipe -fomit-frame-pointer -Wall -Wdeclaration-after-statement -Wmissing-prototypes -Wmissing-declarations -Winit-self -Wpointer-arith -Wold-style-definition -mmmx -msse -avoid-version -export-dynamic -module  -Wl,-O1 -o display.la -rpath /usr/lib/gegl-0.0 display_la-display.lo -Wl,--export-dynamic -pthread -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0    -lSDL -lpthread 
libtool: link: ( cd ".libs" && rm -f "exr-load.la" && ln -s "../exr-load.la" "exr-load.la" )
/bin/sh ../../libtool --tag=CC   --mode=link i686-pc-linux-gnu-gcc  -O3 -march=pentium3 -pipe -fomit-frame-pointer -Wall -Wdeclaration-after-statement -Wmissing-prototypes -Wmissing-declarations -Winit-self -Wpointer-arith -Wold-style-definition -mmmx -msse -avoid-version -export-dynamic -module  -Wl,-O1 -o v4l.la -rpath /usr/lib/gegl-0.0 v4l.lo -Wl,--export-dynamic -pthread -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0    
/bin/grep: /usr/lib/libcucul.la: No such file or directory
/bin/sed: can't read /usr/lib/libcucul.la: No such file or directory
libtool: link: `/usr/lib/libcucul.la' is not a valid libtool archive
make[3]: *** [display.la] Error 1
make[3]: *** Waiting for unfinished jobs....
libtool: link: i686-pc-linux-gnu-gcc -shared  .libs/v4l.o   /usr/lib/libgio-2.0.so -L/usr/lib /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so -ldl /usr/lib/libgthread-2.0.so -lpthread -lrt /usr/lib/libglib-2.0.so  -march=pentium3 -mmmx -msse -Wl,-O1 -Wl,--export-dynamic -pthread   -pthread -Wl,-soname -Wl,v4l.so -o .libs/v4l.so
libtool: link: ( cd ".libs" && rm -f "v4l.la" && ln -s "../v4l.la" "v4l.la" )
make[3]: Leaving directory `/var/tmp/portage/media-libs/gegl-0.0.20/work/gegl-0.0.20/operations/external'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/var/tmp/portage/media-libs/gegl-0.0.20/work/gegl-0.0.20/operations'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/media-libs/gegl-0.0.20/work/gegl-0.0.20'
make: *** [all] Error 2
-------------------
Comment 7 Alexis Ballier gentoo-dev 2008-11-27 07:13:31 UTC
There's nothing to do here imho: libcucul was indeed merged in libcaca, therefore libcucul.la disapears. The problem is more libtool injecting the deps in all .la files thus causing weird build failures later. The solution is to use revdep-rebuild.

The only sane option I can see is to ask upstream about the .la files and completely remove them if they're not needed since people are supposed to link to libcaca/libcucul using pkg-config. That would fix all the libtool issues but cause similar failures if one doesn't run revdep-rebuild to get sane .la files without references to libcaca's .la files...
Comment 8 Rowan Thorpe 2008-12-01 20:53:43 UTC
Thanks for the replies, and I waited a few days to see if anyone else had light to shed on the 1 remaining peculiarity about this bug (namely, that everyone's proposed solutions were "revdep-rebuild", but that I struck this problem _immediately_after_ a revdep-rebuild...!). It seems it is just doomed to be one of those freak anomalies that hopefully most people will skate past as versions bump onwards.

I'll mark this bug as "WONT_FIX" rather than "INVALID", just to be sure that if any other poor soul hits the same problem, they can search this (albeit ugly, risky and hackish) symlink approach, which might help them out of the same "unsolvable" rut I was in. I lost 2 days on this problem. It was the only thing that worked (even where revdep-rebuild didn't help me, as expected in the replies).

By the way, this bug came along with some other _very_ weird quirks, which makes me think it might in the end have even been a bug in something as low-level as glibc. For example, I did a:
"lsof | grep '/var/tmp/portage'" and found dbus, acpid, and about 4 other system services trying to find (deleted) glibc-ish libraries in their respective portage temp-build directories... Weirdly, revdep-rebuild didn't catch those...! Anyway, whatever... it was _BIZARRE_