Alan McKinnon schrieb am 09.11.2008 07:13:
> On Sunday 09 November 2008 06:04:02 Dale wrote:
>> [EMAIL PROTECTED] wrote:
>>> Hi,
>>>
>>> is there a way to list the package, which depend on
>>> a given (known) package (in my case a library)?
>>>
>>> Kind regards,
>>>  Meino Cramer
>> If I understand correctly, equery depends <package name> .  That's if I
>> understand correctly.  If you don't have it, emerge gentoolkit.
> 
> Just be aware that equery depends is somewhat broken
> 
> It lists dependencies in the tree, not dependencies a specific machine is 
> using. Plus it doesn't find some valid deps either.
> 
> It's still useful, but the user also has to use eix to determine which deps 
> are valid for them and which are not.
> 

There is a possibility to get the reverse dependencies, but it seems
almost nobody is aware of this because this function of portage is
mostly used for cleaning up unneeded packages. But in order to remove
unneeded packages portage has to know the reverse dependencies of each
package to determine if it is unneeded.

emerge -pv --depclean atom

Always consider that equery and depclean only work on packages that are
installed on the system and not for packages that are not.
Gentoo-Portage [1] can list the reverse dependencies for packages that
are not installed.



Note the output of equery is sometimes wrong. To test this let us
compare the output of the "emerge -pv depclean atom" with "equery
depends atom". For example we want to check the reverse dependencies of
x11-libs/gtk+ on my system.

It is almost identical besides 1) media-video/mplayer and 2)
sys-devel/gcc are listed only in equery and 3) net-www/gnash is only
listed in depclean output.

1) So why is mplayer listed in equery. The gtk use flag is globally on
on my system but I have disabled gtk in package.use so equery is wrong here.

2) Now for gcc I have no entry in package.use that disables it so it
seems at the first glance equery is right. Lets take a look at the
ebuild itself. The following is from the RDEPEND section.

!build? (
 gcj? (
  gtk? (
   x11-libs/libXt
   x11-libs/libX11
   x11-libs/libXtst
   x11-proto/xproto
   x11-proto/xextproto
   >=x11-libs/gtk+-2.2
   x11-libs/pango
)

To explain this, it says if the build flag is disabled and gcj and gtk
are enabled it will depend on the the packages listed below gtk. I have
build and gcj disabled but gtk enabled, so it does not fulfill the
conditions needed for a gtk dependency and equery is wrong again.

3) Now finally why does depclean list gnash and equery not. The gtk flag
is enabled for the ebuild and the dependency list in the ebuild clearly
shows:

gtk? (
 >x11-libs/gtk+-2
 x11-libs/pango
 dev-libs/glib
 dev-libs/atk
)

I guess equery gets confused by the following construct in the ebuild
which looks similar to the gcc case:

!gtk? ( !kde? ( !qt3? ( !sdl? ( ( !fbcon? (
 >x11-libs/gtk+-2
 x11-libs/pango
 dev-libs/glib
 dev-libs/atk
 =kde-base/kdelibs-3.5*
) ) ) ) ) )

This conditions doesn't match on my system so equery does not list
gnash. In addition I think such conditions may cause some
misunderstanding as they mean if gtk kde qt3 sdl and fbcon are all unset
it should depend on gtk and kde which would be rather confusing for the
user if he has this flags unset.



[1] http://www.gentoo-portage.com/x11-libs/gtk+/RDep#ptabs

Regards,

Daniel


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to