Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug
Bug#: 179392
Alias:
Product:
Component:
Status: RESOLVED
Resolution: FIXED
Assigned To: Portage Utilities Team <tools-portage@gentoo.org>
Hardware:
OS:
Version:
Priority:
Severity:
Reporter: Rafael Kolless <rafael@mondoria.de>
Add CC:
CC:
Remove selected CCs
URL:
Summary:
Status Whiteboard:
Keywords:

Filename Description Type Creator Created Size Actions
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 179392 depends on: Show dependency tree
Bug 179392 blocks: 170220
Votes: 0    Show votes for this bug    Vote for this bug

Additional Comments: (this is where you put emerge --info)


Not eligible to see or edit group visibility for this bug.






View Bug Activity   |   Format For Printing   |   XML   |   Clone This Bug


Description:   Opened: 2007-05-22 07:20 0000
When I check the consistency with revdep-rebuild, it always finish with the
message:

Dynamic linking on your system is consistent... All done.

Even if the checking phase shows several broken linkings (and all files are
emerged with portage.



Reproducible: Always

Steps to Reproduce:
1.start revdep-rebuild
2.
3.

Actual Results:  
Here an example of a current run:

revdep-rebuild -vv -p
Configuring search environment for revdep-rebuild

revdep-rebuild environment:
SEARCH_DIRS="/usr/qt/3/ /bin/ /sbin/ /usr/bin/ /usr/sbin/ /lib/ /usr/lib/
/usr/libexec/ /opt/bin/ /usr/i686-pc-linux-gnu/gcc-bin/4.1.2/ /opt/ICAClient/
/opt/sun-jdk-1.4.2.14/bin/ /opt/sun-jdk-1.4.2.14/jre/bin/
/opt/sun-jdk-1.4.2.14/jre/javaws/ /usr/kde/3.5/sbin/ /usr/kde/3.5/bin/
/usr/qt/3/bin/ /opt/vmware/workstation/bin/ /opt/bin/
/usr/i686-pc-linux-gnu/gcc-bin/4.1.2/ /opt/ICAClient/
/opt/sun-jdk-1.4.2.14/bin/ /opt/sun-jdk-1.4.2.14/jre/bin/
/opt/sun-jdk-1.4.2.14/jre/javaws/ /usr/kde/3.5/bin/ /usr/qt/3/bin/
/usr/games/bin/ /opt/vmware/workstation/bin/ /usr/local/lib/
/usr/lib/opengl/nvidia/lib/ /usr/i686-pc-linux-gnu/lib/
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/ /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/
/usr/lib/nspr/ /usr/lib/nss/ /usr/lib/openmotif-2.2/
/opt/sun-jdk-1.4.2.14/jre/lib/i386/
/opt/sun-jdk-1.4.2.14/jre/lib/i386/native_threads/
/opt/sun-jdk-1.4.2.14/jre/lib/i386/classic/
/opt/sun-jdk-1.4.2.14/jre/lib/i386/server/ /usr/lib/qt4/ /usr/kde/3.5/lib/
/usr/qt/3/lib/ /usr/games/lib/ /usr/lib/libstdc++-v3/"
SEARCH_DIRS_MASK="/usr/lib/real /usr/lib/win32 /opt/opera/lib/opera/plugins"
LD_LIBRARY_MASK="libjvm.so libjawt.so libodbcinst.so libodbc.so libjava.so
libjvm.so"
PORTAGE_ROOT="/"
CALLED_OPTIONS=""
EMERGE_OPTIONS="-p"


Checking reverse dependencies...

Packages containing binaries and libraries broken by a package update
will be emerged.

Collecting system binaries and libraries... done.
  (/root/.revdep-rebuild.1_files)

Collecting complete LD_LIBRARY_PATH... done.
  (/root/.revdep-rebuild.2_ldpath)

Checking dynamic linking consistency...
  broken /usr/bin/digikam (requires  libexiv2-0.13.so libkexiv2.so.0)
  broken /usr/bin/gwenview (requires  libexiv2-0.13.so)
  broken /usr/bin/showfoto (requires  libexiv2-0.13.so libkexiv2.so.0)
  broken /usr/lib/kde3/digikamimageplugin_adjustcurves.so (requires 
libexiv2-0.13.so libk
exiv2.so.0)
  broken /usr/lib/libgwenviewcore.so.1.0.0 (requires  libexiv2-0.13.so)
  broken /usr/lib/libkdeinit_gwenview.so (requires  libexiv2-0.13.so)
 done.
  (/root/.revdep-rebuild.3_rebuild)

Assigning files to ebuilds... done.
  (/root/.revdep-rebuild.4_ebuilds)

Evaluating package order... done.
  (/root/.revdep-rebuild.5_order)

Dynamic linking on your system is consistent... All done.
Freya ~ #


Expected Results:  
that the rebuild of the packages are suggested

Portage 2.1.2.7 (default-linux/x86/2006.1/desktop, gcc-4.1.2, glibc-2.5-r2,
2.6.20-gentoo-r8 i686)
=================================================================
System uname: 2.6.20-gentoo-r8 i686 Intel(R) Pentium(R) 4 CPU 3.20GHz
Gentoo Base System release 1.12.9
Timestamp of tree: Tue, 22 May 2007 05:50:01 +0000
distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632)
[disabled]
ccache version 2.4 [enabled]
dev-java/java-config: 1.3.7, 2.0.31-r5
dev-lang/python:     2.4.4-r4
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     2.4-r7
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.61
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.16.1-r3
sys-devel/gcc-config: 1.3.16
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.17-r2
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=prescott -fomit-frame-pointer -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config
/usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf
/etc/java-config/vms/ /etc/revdep-rebuild /etc/splash /etc/terminfo
/etc/texmf/web2c"
CXXFLAGS="-O2 -march=prescott -fomit-frame-pointer -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="ccache distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://ftp.uni-erlangen.de/pub/mirrors/gentoo
http://mirror.uni-c.dk/pub/gentoo/
http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/"
LANG="de_DE.utf8"
LC_ALL="de_DE.utf8"
LINGUAS="de"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress
--force --whole-file --delete --delete-after --stats --timeout=180
--exclude=/distfiles --exclude=/local --exclude=/packages
--filter=H_**/files/digest-*"
PORTAGE_TMPDIR="/data/system/var/"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/data/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="X a52 aac acpi alsa arts asf audiofile bash-completion berkdb bitmap-fonts
bluetooth browserplugin bzip2 cairo capi cdparanoia cdr cli cracklib crypt css
cups curl dbus dga directfb dri dts dv dvb dvd dvdr dvdread dvdreadi eds emboss
encode esd exif fam fame fax ffmpeg firefox font-server fortran fping gdbm gif
gimp gimpprint glut gmp gpm gstreamer gtk gtk2 hal iconv icq idn ieee1394
imagemagick imlib ipod isdnlog java javascript joystick jpeg jpeg2k kde
kdeenablefinal kdehiddenvisibility kipi koffice-plugin lcms libg++ lua mad
maildir matroska mbox midi mikmod mime mjpeg mmx mmxext mng moneyplex monkey
mozbranding moznocompose moznoirc moznomail mozsvg mp3 mpeg mplayer msn mudflap
musicbrainz mysql ncurses nls nptl nptlonly nsplugin objc ogg openal opengl
openmp oscar oss pam pcre perl png ppds pppd python qt3 qt4 quicktime rar
rdesktop readline real reflection reiserfs ruby samba scanner sdl session smp
sms sox speedo spell spl sqlite sse sse-filters sse2 ssl stats subtitles sysfs
tcltk tcpd theora tiff truetype truetype-fonts type1-fonts unicode usb utf8 v4l
vcd videos vidix vorbis win32codecs x86 xcomposite xine xinerama xml xorg xpm
xscreensaver xv xvid yahoo zlib" ALSA_CARDS="cs46xx" ALSA_PCM_PLUGINS="adpcm
alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa
lfloat linear meter mulaw multi null plug rate route share shm softvol"
ELIBC="glibc" FRITZCAPI_CARDS="fcpci" INPUT_DEVICES="keyboard joystick mouse"
KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001
mtxorb ncurses text" LINGUAS="de" USERLAND="GNU" VIDEO_CARDS="nvidia"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, PORTAGE_COMPRESS,
PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

------- Comment #1 From Rafael Kolless 2007-05-22 07:23:23 0000 -------
I shortened the output of revdep, because the list is so much long with the
kipi-plugins.

------- Comment #2 From Paul Varner 2007-05-22 21:58:05 0000 -------
You will see that behavior when files are orphaned.  What do the following
equery commands return:

equery belongs /usr/bin/digikam
equery belongs /usr/bin/gwenview
equery belongs /usr/bin/showfoto
equery belongs /usr/lib/kde3/digikamimageplugin_adjustcurves.so
equery belongs /usr/lib/libgwenviewcore.so.1.0.0
equery belongs /usr/lib/libkdeinit_gwenview.so

------- Comment #3 From Rafael Kolless 2007-05-23 07:36:45 0000 -------
Actually, I have to query all files for my own and build the emerge string
manually.

The equery outputs this here:

equery belongs /usr/bin/digikam /usr/bin/gwenview /usr/bin/showfoto
/usr/lib/kde3/digikamimageplugin_adjustcurves.so
/usr/lib/libgwenviewcore.so.1.0.0 usr/lib/libkdeinit_gwenview.so
[ Searching for file(s)
/usr/bin/digikam,/usr/bin/gwenview,/usr/bin/showfoto,/usr/lib/kde3/digikamimageplugin_adjustcurves.so,/usr/lib/libgwenviewcore.so.1.0.0,usr/lib/libkdeinit_gwenview.so
in *... ]
media-gfx/digikam-0.9.1 (/usr/bin/digikam)
media-gfx/digikam-0.9.1 (/usr/bin/showfoto)
media-gfx/gwenview-1.4.1 (/usr/lib/libgwenviewcore.so.1.0.0)
media-gfx/gwenview-1.4.1 (/usr/lib/libkdeinit_gwenview.so)
media-gfx/gwenview-1.4.1 (/usr/bin/gwenview)
media-plugins/digikamimageplugins-0.9.1
(/usr/lib/kde3/digikamimageplugin_adjustcurves.so)

I played a little with the script revdep-rebuild and I found the following:

The command:

find /var/db/pkg -name CONTENTS | xargs fgrep -l -f .revdep-rebuild.3_rebuild
in line 596 does not find any content. On my system /var/db/pkg is a symbolic
link to the path /data/system/var/db/pkg (a partition with optimized filesystem
for portage). I use it for PORTAGE_TMPDIR also.

The find command is not executed with the parameter -L, so it does not follow
any symlinks.

The command

find -L /var/db/pkg -name CONTENTS | xargs fgrep -l -f
.revdep-rebuild.3_rebuild

outputs correct

/var/db/pkg/media-gfx/digikam-0.9.1/CONTENTS
/var/db/pkg/media-gfx/gwenview-1.4.1/CONTENTS
/var/db/pkg/media-plugins/digikamimageplugins-0.9.1/CONTENTS
/var/db/pkg/media-plugins/kipi-plugins-0.1.3-r1/CONTENTS

It seems, that this is the problem. I altered revdep-rebuild to use -L and now
it works, until the next revision :)






------- Comment #4 From Rafael Kolless 2007-05-24 06:25:10 0000 -------
I suggest to add the parameter -L in the internal find argument.

------- Comment #5 From Stefaan De Roeck 2007-08-12 09:15:47 0000 -------
Exact same symptoms on my system, exact same soft-link as well :)

------- Comment #6 From Jakub Moc (RETIRED) 2007-08-13 10:34:57 0000 -------
People, you really should use bind mounts for shuffling stuff around
filesystem, NOT symlinks.

------- Comment #7 From Stefaan De Roeck 2007-08-13 11:03:43 0000 -------
(In reply to comment #6)
> People, you really should use bind mounts for shuffling stuff around
> filesystem, NOT symlinks.

While this may solve the problem in this case, it's very intrusive and not
really equivalent to symlinks. I didn't see anyone using bind mounts with the
introduction of x.org :)

------- Comment #8 From Jakub Moc (RETIRED) 2007-08-13 11:12:22 0000 -------
(In reply to comment #7)
> While this may solve the problem in this case, it's very intrusive and not
> really equivalent to symlinks. I didn't see anyone using bind mounts with the
> introduction of x.org :)

Hmm, what's intrusive about it? o_O 

I just see lots of intrusive 'bugs' that users experience when shuffling stuff
around for a lack of space via symlinks and wondering why they end up with a
broken system, noexec /var/tmp being unable to emerge anything or whatever
similar. Will never happen when you bind-mount the stuff properly.

------- Comment #9 From Marius Mauch (RETIRED) 2007-08-14 04:33:33 0000 -------
(In reply to comment #7)
> (In reply to comment #6)
> > People, you really should use bind mounts for shuffling stuff around
> > filesystem, NOT symlinks.
> 
> While this may solve the problem in this case, it's very intrusive and not
> really equivalent to symlinks. I didn't see anyone using bind mounts with the
> introduction of x.org :)

The situation with X.org is quite different:
a) expected vs. unexpected
b) system defined vs. user defined
c) X.org doesn't have to care about file identity (not a real issue in this
case, but one of the big problems when dealing with symlinks in portage)

The problem might be trivial to solve in this specific case, but often it
requires a lot more work to deal with symlinks in a transparent way, while
bind-mounts (or normal mounts) handle the situation at the filesystem level, so
we don't have to care about the issue at the application level.

------- Comment #10 From Rafael Kolless 2007-08-16 22:07:22 0000 -------
Afaik symlinks are not banned for system administration and as it is a normal
use for e.g. the make.profile under Gentoo at this point it should not be used. 

So the question that comes up is: "Why is /etc/make.profile" not a bind mount
for regular use if symlinks are problematic?"

An application should be able to handle symlinks on linux systems. 

------- Comment #11 From Marius Mauch (RETIRED) 2007-08-17 01:30:54 0000 -------
(In reply to comment #10)
> Afaik symlinks are not banned for system administration and as it is a normal
> use for e.g. the make.profile under Gentoo at this point it should not be used. 

Nobody said that they are banned, jsut that they can create a large nuber of
problems in many situations, as they aren't as transparent as people tend to
think.

> So the question that comes up is: "Why is /etc/make.profile" not a bind mount
> for regular use if symlinks are problematic?"

Very similar to the X.org example above:
a) it's expected to be a symlink. Problems mainly arise when symlinks are used
in unexpected locations (usually to "solve" the "free space" issue)
b) in this particular case a bind mount would be counter productive, as we care
about the destination name (unlike how it's used here, where the destination
should be hidden from the application)
c) the link isn't really managed by the user but the system

> An application should be able to handle symlinks on linux systems. 

Generally yes, the point is that handling symlinks everywhere adds quite a bit
of complexity in many cases. In some cases it's also questionable how symlinks
should be handled, e.g. if foo is a symlink to bla, should foo == bla be true?
Depending on the use case the answer can be yes, no or maybe.
Or to use this bug, it's not always a good idea to follow symlinks when
processing directories, it can easily cause infinite loops, requiring even more
complexity to avoid those (we had that with collision-protect for example).

As said, in this case it's trivial to fix (but only because we can assume that
/var/db/pkg itself doesn't contain links to unexpected locations), and should
be fixed. However, if it would require an extensive patch, just for a very
uncommon setup, I'd probably close it as WORKSFORME as there is a better
solution available.

------- Comment #12 From Paul Varner 2007-09-19 21:22:19 0000 -------
$ svn commit -m "Fix handling of /var/db/pkg when it is a symbolic link. (Bug
#179392)"
Sending        ChangeLog
Sending        src/revdep-rebuild/revdep-rebuild
Transmitting file data ..

------- Comment #13 From Paul Varner 2007-09-27 00:19:54 0000 -------
Fixed in gentoolkit-0.2.4_rc1

Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug