Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 329843

Summary: various libs are making broken symlinks
Product: Gentoo Linux Reporter: Dzianis Barzakouski <barzakouski>
Component: [OLD] LibraryAssignee: Doug Goldstein (RETIRED) <cardoe>
Status: RESOLVED CANTFIX    
Severity: normal CC: rh1, spatz
Priority: High    
Version: unspecified   
Hardware: AMD64   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: build.log
config.log

Description Dzianis Barzakouski 2010-07-26 01:03:39 UTC
Failed to compiler x11-libs/cairo-1.8.10 

Reproducible: Always

Steps to Reproduce:
1.emerge -av cairo
Actual Results:  
/ext/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.4/../../../lib/gcc/x86_64-pc-linux-gnu/4.3.4/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libm.a(s_ceil.o): relocation R_X86_64_32 against `.text' can not be used when making a shared object; recompile with -fPIC
/usr/lib64/libm.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

Expected Results:  
ebuild should compile without errors
Comment 1 Dzianis Barzakouski 2010-07-26 01:05:51 UTC
Created attachment 240167 [details]
build.log
Comment 2 Jeroen Roovers (RETIRED) gentoo-dev 2010-07-26 01:21:18 UTC
Please post your `emerge --info =x11-libs/cairo-1.8.10' too.
Comment 3 Dzianis Barzakouski 2010-07-26 01:29:38 UTC
emerge --info =x11-libs/cairo-1.8.10


Portage 2.1.8.3 (default/linux/amd64/10.0/desktop, gcc-4.3.4, glibc-2.11.2-r0, 2.6.33-gentoo-r2 x86_64)
=================================================================
                        System Settings
=================================================================
System uname: Linux-2.6.33-gentoo-r2-x86_64-AMD_Athlon-tm-_64_X2_Dual_Core_Processor_6000+-with-gentoo-1.12.13
Timestamp of tree: Mon, 26 Jul 2010 00:15:01 +0000
ccache version 2.4 [enabled]
app-shells/bash:     4.0_p37
dev-java/java-config: 2.1.11
dev-lang/python:     2.6.5-r2, 3.1.2-r3
dev-util/ccache:     2.4-r7
dev-util/cmake:      2.6.4-r3
sys-apps/baselayout: 1.12.13
sys-apps/sandbox:    1.6-r2
sys-devel/autoconf:  2.13, 2.65
sys-devel/automake:  1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.20.1-r1
sys-devel/gcc:       4.3.4, 4.4.3-r2
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6b
virtual/os-headers:  2.6.30-r1
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests ccache distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="be_BY.UTF-8"
LDFLAGS="-Wl,-O1"
LINGUAS="en ru de"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/roslin /var/lib/layman/roslin /usr/local/portage/layman/Spring /usr/local/portage/layman/sunrise"
SYNC="rsync://rsync.de.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext X Xaw3d a52 aac aalib acl acpi aim alsa amd64 apache2 apm atm audiofile bash-completion bcmath berkdb bluetooth branding bzip2 cairo cdda cdr cgi cli consolekit cracklib crypt css cups cxx dbus device-mapper dga directfb dri dts dv dvd dvdr emboss encode exif fam fastcgi fbcon ffmpeg fftw firefox flac fontconfig fortran ftp gdbm gdu geoip gif gimp git glut gmplayer gnome gpm grahpviz gstreamer gtk hal iconv icq icu idn ieee1934 imagemagick jabber javascript jingle joystick jpeg jpeg2k kde kdrive kerberos kpathsea lame latex lcms ldap libgda libnotify libwww mad matroska mikmod mime mmx mmxext mng modplug modules mono mozilla mp3 mp4 mpeg mplayer mudflap multilib musepack mysql mysqli ncurses nls nptl nptlonly nsplugin ogg openal opengl openmp oscar pam pango pcre pdf perl php png policykit posix ppds pppd python qt3support qt4 quicktime radio rdesktop readline reflection rss samba sdl session smp sockets speex spell spl sqlite sse sse2 ssl startup-notification subversion svg symlink sysfs syslog tcpd theora threads tiff truetype unicode usb v4l v4l1 v4l2 vcd vdpau videos vnc vorbis wavpack wxwidgets x264 xcb xcomposite xft xine xinerama xml xmlrpc xorg xpm xscreensaver xulrunner xv xvid zlib zsh-completion" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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 cgi cgid 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 joystick" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en ru de" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="nvidia fbdev glint mach64 nv sisusb v4l vesa" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" 
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 4 Rafał Mużyło 2010-07-26 12:29:32 UTC
What does that '/ext/usr/' mean ?
Are you cross-compiling ?
Attach config.log too.
Comment 5 Dzianis Barzakouski 2010-07-26 14:07:23 UTC
ls -lash | grep usr
0 lrwxrwxrwx   1 root root    9 Jul 24 11:57 usr -> /ext/usr/

/usr is symbolic link for /ext/usr ( there is another hdd mounted under /ext )
I am not cross-compiling


emerge -pqv =x11-libs/cairo-1.8.10

[ebuild  N    ] x11-libs/cairo-1.8.10  USE="X cleartype directfb lcdfilter opengl svg (-aqua) -debug -doc -glitz -xcb"
Comment 6 Dzianis Barzakouski 2010-07-26 23:36:26 UTC
I have found that libm.a is build without -fPIC. After some researches of glibc build logs I found libm_pic.a that is build _with_ -fPIC option. After copying it to /usr/lib64 and renaming to libm.a cairo was able to compile. 

So this is not a cairo bug, but I am wondering why I have had not relocatable version of libm.a in /usr/lib64
Comment 7 Rafał Mużyło 2010-07-27 15:33:38 UTC
The bug lies somewhere in your system -
it should link with libm.so.6, not with the static lib, but something you did
prevents it, making it get the static lib instead.
My first guess was cross-compiling, as you say you're not,
...

For completeness, attach config.log.
Comment 8 Dzianis Barzakouski 2010-07-28 12:39:25 UTC
Created attachment 240423 [details]
config.log
Comment 9 Dzianis Barzakouski 2010-07-28 13:54:37 UTC
(In reply to comment #7)
> The bug lies somewhere in your system -
> it should link with libm.so.6, not with the static lib, but something you did
> prevents it, making it get the static lib instead.
> My first guess was cross-compiling, as you say you're not,
> ...
> 
> For completeness, attach config.log.
> 

yes, it was a bug in my system. After some researches I have found the following:

/ext/usr/lib64$ file * | grep broken
libanl.so:                                      broken symbolic link to `../../lib64/libanl.so.1'
libBrokenLocale.so:                             broken symbolic link to `../../lib64/libBrokenLocale.so.1'
libcidn.so:                                     broken symbolic link to `../../lib64/libcidn.so.1'
libcrypt.so:                                    broken symbolic link to `../../lib64/libcrypt.so.1'
libdl.so:                                       broken symbolic link to `../../lib64/libdl.so.2'
libe2p.so:                                      broken symbolic link to `../../lib64/libe2p.so.2'
libext2fs.so:                                   broken symbolic link to `../../lib64/libext2fs.so.2'
libm.so:                                        broken symbolic link to `../../lib64/libm.so.6'
libnsl.so:                                      broken symbolic link to `../../lib64/libnsl.so.1'
libnss_compat.so:                               broken symbolic link to `../../lib64/libnss_compat.so.2'
libnss_dns.so:                                  broken symbolic link to `../../lib64/libnss_dns.so.2'
libnss_files.so:                                broken symbolic link to `../../lib64/libnss_files.so.2'
libnss_hesiod.so:                               broken symbolic link to `../../lib64/libnss_hesiod.so.2'
libnss_nisplus.so:                              broken symbolic link to `../../lib64/libnss_nisplus.so.2'
libnss_nis.so:                                  broken symbolic link to `../../lib64/libnss_nis.so.2'
libresolv.so:                                   broken symbolic link to `../../lib64/libresolv.so.2'
librt.so:                                       broken symbolic link to `../../lib64/librt.so.1'
libthread_db.so:                                broken symbolic link to `../../lib64/libthread_db.so.1'
libudev.so:                                     broken symbolic link to `../../lib64/libudev.so.0.6.1'
libutil.so:                                     broken symbolic link to `../../lib64/libutil.so.1'

after moving /usr to another hdd I got this broken symbolic links. They belongs to this packages: 

/ext/usr/lib64$ file * | grep broken | awk -F ":" '{print $1}' | xargs equery b 
[ Searching for file(s) libanl.so,libBrokenLocale.so,libcidn.so,libcrypt.so,libdl.so,libe2p.so,libext2fs.so,libm.so,libnsl.so,libnss_compat.so,libnss_dns.so,libnss_files.so,libnss_hesiod.so,libnss_nisplus.so,libnss_nis.so,libresolv.so,librt.so,libthread_db.so,libudev.so,libutil.so in *... ]
sys-libs/glibc-2.11.2 (/usr/lib32/libresolv.so -> ../../lib32/libresolv.so.2)
sys-libs/glibc-2.11.2 (/usr/lib64/libnss_nisplus.so -> ../../lib64/libnss_nisplus.so.2)
sys-libs/glibc-2.11.2 (/usr/lib32/libcidn.so -> ../../lib32/libcidn.so.1)
sys-libs/glibc-2.11.2 (/usr/lib64/libBrokenLocale.so -> ../../lib64/libBrokenLocale.so.1)
sys-libs/glibc-2.11.2 (/usr/lib32/librt.so -> ../../lib32/librt.so.1)
sys-libs/glibc-2.11.2 (/usr/lib64/libresolv.so -> ../../lib64/libresolv.so.2)
sys-libs/glibc-2.11.2 (/usr/lib32/libanl.so -> ../../lib32/libanl.so.1)
sys-libs/glibc-2.11.2 (/usr/lib64/libnss_nis.so -> ../../lib64/libnss_nis.so.2)
sys-libs/glibc-2.11.2 (/usr/lib32/libnss_nisplus.so -> ../../lib32/libnss_nisplus.so.2)
sys-libs/glibc-2.11.2 (/usr/lib32/libnss_hesiod.so -> ../../lib32/libnss_hesiod.so.2)
sys-libs/glibc-2.11.2 (/usr/lib64/librt.so -> ../../lib64/librt.so.1)
sys-libs/glibc-2.11.2 (/usr/lib32/libnss_files.so -> ../../lib32/libnss_files.so.2)
sys-libs/glibc-2.11.2 (/usr/lib32/libcrypt.so -> ../../lib32/libcrypt.so.1)
sys-libs/glibc-2.11.2 (/usr/lib32/libnss_dns.so -> ../../lib32/libnss_dns.so.2)
sys-libs/glibc-2.11.2 (/usr/lib64/libnss_dns.so -> ../../lib64/libnss_dns.so.2)
sys-libs/glibc-2.11.2 (/usr/lib64/libthread_db.so -> ../../lib64/libthread_db.so.1)
sys-libs/glibc-2.11.2 (/usr/lib32/libnss_nis.so -> ../../lib32/libnss_nis.so.2)
sys-libs/glibc-2.11.2 (/usr/lib32/libdl.so -> ../../lib32/libdl.so.2)
sys-libs/glibc-2.11.2 (/usr/lib64/libnsl.so -> ../../lib64/libnsl.so.1)
sys-libs/glibc-2.11.2 (/usr/lib64/libanl.so -> ../../lib64/libanl.so.1)
sys-libs/glibc-2.11.2 (/usr/lib64/libcrypt.so -> ../../lib64/libcrypt.so.1)
sys-libs/glibc-2.11.2 (/usr/lib32/libthread_db.so -> ../../lib32/libthread_db.so.1)
sys-libs/glibc-2.11.2 (/usr/lib32/libm.so -> ../../lib32/libm.so.6)
sys-libs/glibc-2.11.2 (/usr/lib32/libnss_compat.so -> ../../lib32/libnss_compat.so.2)
sys-libs/glibc-2.11.2 (/usr/lib64/libutil.so -> ../../lib64/libutil.so.1)
sys-libs/glibc-2.11.2 (/usr/lib64/libnss_files.so -> ../../lib64/libnss_files.so.2)
sys-libs/glibc-2.11.2 (/usr/lib64/libm.so -> ../../lib64/libm.so.6)
sys-libs/glibc-2.11.2 (/usr/lib64/libnss_hesiod.so -> ../../lib64/libnss_hesiod.so.2)
sys-libs/glibc-2.11.2 (/usr/lib64/libdl.so -> ../../lib64/libdl.so.2)
sys-libs/glibc-2.11.2 (/usr/lib32/libnsl.so -> ../../lib32/libnsl.so.1)
sys-libs/glibc-2.11.2 (/usr/lib64/libnss_compat.so -> ../../lib64/libnss_compat.so.2)
sys-libs/glibc-2.11.2 (/usr/lib32/libBrokenLocale.so -> ../../lib32/libBrokenLocale.so.1)
sys-libs/glibc-2.11.2 (/usr/lib64/libcidn.so -> ../../lib64/libcidn.so.1)
sys-libs/glibc-2.11.2 (/usr/lib32/libutil.so -> ../../lib32/libutil.so.1)
app-emulation/emul-linux-x86-baselibs-20100611 (/usr/lib32/libext2fs.so -> ../../lib32/libext2fs.so.2)
app-emulation/emul-linux-x86-baselibs-20100611 (/usr/lib32/libe2p.so -> ../../lib32/libe2p.so.2)
sys-fs/udev-151-r2 (/usr/lib64/libudev.so -> ../../lib64/libudev.so.0.6.1)
sys-fs/e2fsprogs-1.41.11 (/usr/lib64/libext2fs.so -> ../../lib64/libext2fs.so.2)
sys-fs/e2fsprogs-1.41.11 (/usr/lib64/libe2p.so -> ../../lib64/libe2p.so.2)

I have tryed to reinstall glibc, but it steel makes relative links for these libs. Should it be considered as a bug in sys-libs/glibc-2.11.2, app-emulation/emul-linux-x86-baselibs-20100611, sys-fs/udev-151-r2 and sys-fs/e2fsprogs-1.41.11? 
Comment 10 Rafał Mużyło 2010-07-28 16:46:32 UTC
I'd say it's a bug of your '/ext/usr' setup.
YMMV. 
Comment 11 Dzianis Barzakouski 2010-07-28 17:59:54 UTC
(In reply to comment #10)
> I'd say it's a bug of your '/ext/usr' setup.
> YMMV. 
> 
I agree that it was bad idea to move /usr somewhere else but is there good reason why are these symbolic links not absolute? 

I have fixed paths but for example after reinstall of sys-fs/e2fsprogs I get broken links for libext2fs.so again. Installer should create symbolic links like ../../../lib64/ but it does not
Comment 12 Ryan Harris 2011-04-13 15:18:31 UTC
My advice would be to remove the symlink to usr and instead mount --bind /ext/usr to /usr
Comment 13 Doug Goldstein (RETIRED) gentoo-dev 2012-07-14 19:35:43 UTC
Its a configuration issue.