Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 156959 - app-portage/gentoolkit - enhance revdep-rebuild on repeated failure
Summary: app-portage/gentoolkit - enhance revdep-rebuild on repeated failure
Status: CONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Tools (show other bugs)
Hardware: All Linux
: High enhancement (vote)
Assignee: Portage Tools Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-12-02 19:18 UTC by ivo welch
Modified: 2013-06-22 16:33 UTC (History)
1 user (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 ivo welch 2006-12-02 19:18:48 UTC
I think a lot of the less sophisticated gentoo users are struggling with revdep-rebuild's.  It is not so easy to figure out what is going on.  There are a number of issues that could be at fault when a revdep-rebuild fails in cleaning out the system.

would it be possible to keep the information about the most recent revdep-rebuild, and if it is the same as what the current revdep-rebuild wants to prescribe, at least to automatically switch on the verbose mode to tell me what libraries are broken?   

even better, it would be nice if it used some intelligence to try to tell me exactly why it wants to rebuild the package again.

[...and may I ask why gcc updates cannot be fully automatic?  why do I have to read the update guide and learn about special incantations?...  ]

sorry, I always sound like I am complaining.  gentoo is an amazing system, but I guess a bug system is not for kudos, but for suggestions.  thanks guys.

regards,

/iaw
Comment 1 SpanKY gentoo-dev 2006-12-02 22:48:05 UTC
not baselayout
Comment 2 Jakub Moc (RETIRED) gentoo-dev 2006-12-02 23:37:07 UTC
Eh, revdep-rebuild is a bash script using ldd to find out broken linkage. If something is missing shared library dependencies, then it tries to re-emerge the package; so I kinda don't see what kind of intelligence would you expect from this tool. The advice it gives you on failure is about as good as it can be.

(And no, gcc upgrades can't be automatic, because switching to ABI-incompatible gcc can break your system).
Comment 3 ivo welch 2006-12-03 07:43:53 UTC
(In reply to comment #2)
> Eh, revdep-rebuild is a bash script using ldd to find out broken linkage. If
> something is missing shared library dependencies, then it tries to re-emerge
> the package; so I kinda don't see what kind of intelligence would you expect
> from this tool. The advice it gives you on failure is about as good as it can
> be.

Hi Jakub:

Right now, I am getting:

Checking dynamic linking consistency...
  broken /usr/libexec/clock-applet (requires  libcamel-1.2.so.0 libebook-1.2.so.5 libecal-1.2.so.6 libedataserver-1.2.so.7 libedataserverui-1.2.so.6)
  broken /usr/lib/AbiWord-2.2/plugins/libAbiRSVG.la (requires /usr/lib/librsvg-2.la)
  broken /usr/lib/AbiWord-2.2/plugins/libAbiRSVG.la (requires /usr/lib/libcroco.la)
  broken /usr/lib/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgcjawt.la (requires /usr/lib/../lib64/lib-gnu-java-awt-peer-gtk.la)
  broken /usr/lib/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgij.la (requires /usr/lib/../lib64/libgcj.la)
  broken /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/libgcjawt.la (requires /usr/lib/../lib64/lib-gnu-java-awt-peer-gtk.la)
  broken /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/libgij.la (requires /usr/lib/../lib64/libgcj.la)
  broken /usr/lib/libOggFLAC++.la (requires /usr/lib64/libOggFLAC.la)
  broken /usr/lib/libpoppler-cairo.la (requires /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1//libstdc++.la)
  broken /usr/lib/vmware/libconf/lib/gtk-2.0/2.4.0/engines/libsvg.la (requires /usr/lib/librsvg-2.la)
  broken /usr/lib/vmware/libconf/lib/gtk-2.0/2.4.0/loaders/svg_loader.la (requires /usr/lib/librsvg-2.la)
  broken /usr/lib64/AbiWord-2.2/plugins/libAbiRSVG.la (requires /usr/lib/librsvg-2.la)
  broken /usr/lib64/AbiWord-2.2/plugins/libAbiRSVG.la (requires /usr/lib/libcroco.la)
  broken /usr/lib64/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgcjawt.la (requires /usr/lib/../lib64/lib-gnu-java-awt-peer-gtk.la)
  broken /usr/lib64/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgij.la (requires /usr/lib/../lib64/libgcj.la)
  broken /usr/lib64/libOggFLAC++.la (requires /usr/lib64/libOggFLAC.la)
  broken /usr/lib64/libpoppler-cairo.la (requires /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1//libstdc++.la)
  broken /usr/lib64/vmware/libconf/lib/gtk-2.0/2.4.0/engines/libsvg.la (requires /usr/lib/librsvg-2.la)
  broken /usr/lib64/vmware/libconf/lib/gtk-2.0/2.4.0/loaders/svg_loader.la (requires /usr/lib/librsvg-2.la)
 done.
  (/home/ivo/.revdep-rebuild.3_rebuild)

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

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

All prepared. Starting rebuild...
emerge --oneshot --pretend --verbose =sys-devel/gcc-4.1.1 =gnome-base/gnome-panel-2.12.3

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] sys-devel/gcc-4.1.1  USE="fortran gcj gtk nls (-altivec) -bootstrap -build -doc (-hardened) -ip28 -ip32r10k -mudflap (-multilib) -multislot (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -test -vanilla" 0 kB
[ebuild   R   ] gnome-base/gnome-panel-2.12.3  USE="-debug -doc -eds*" 0 kB

Total size of downloads: 0 kB
Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.


I think what I would love to see is
   sys-devel/gcc-4.1.1 is being rebuilt because of
         /usr/lib/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgij.la
         /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/libgcjawt.la
   gnome-panel is being rebuild because of 
         /usr/lib64/vmware/libconf/lib/gtk-2.0/2.4.0/engines/libsvg.la

The following libraries are broken, but don't seem to be used.  You may be able to delete them:
    /usr/libexec/clock-applet

The following libraries are desired by other programs, but do not exist, and I cannot determine which package they might have belonged to:
         /usr/lib/librsvg-2.la  (used by xyz)
xyz may therefore be broken.  You might want to emerge rsvg to fix this.


of course, I have no concept of how easy or difficult this would be.  I am speaking purely from an ordinary end user perspective.  This would make my life easier diagnosing the state of my system.


> (And no, gcc upgrades can't be automatic, because switching to ABI-incompatible
> gcc can break your system).
> 

Hmmm...the steps that are described in the gcc updating guide seem all easy to automate: fix-libtool, revdep-rebuild on libstdc++, etc. .  Why can't a post-emerge chained shell script execute these for ordinary users automatically?

regards,

/ivo
Comment 4 Michael Palimaka (kensington) gentoo-dev 2013-06-22 16:33:57 UTC
I think the situation is a lot better now due to subslots. Thoughts?