On Tue, 20 Feb 2018 09:56:15 +0000, Holger Hoffstätte wrote:

> On Mon, 19 Feb 2018 15:29:52 +0100, Branko Grubic wrote:
> 
>> On Mon, 19 Feb 2018 12:55:08 +0000 (UTC)
>> Holger Hoffstätte <[email protected]> wrote:
>> 
>>> Hey,
>>> 
>>> I'm not exactly new to portage, but one thing that I cannot seem to
>>> figure out is how to rebuild all dependants of a package. Not
>>> *dependencies*, dependants: packages that require said package.
>>> 
>>> As a recent example: whenever go (the language) is updated to a new
>>> version (say from 1.9 to 1.10, as it happended recently), I'd like to
>>> rebuild docker & friends - or more specifically 'things that are
>>> compiled with go'.
>>> 
>>> The --changed-deps option doesn't seem to do the trick, so instead I
>>> manually do a -vp --depclean on go and manually --oneshot all
>>> installed packages that have their hands on it. This is obviously
>>> stupid and error-prone.
>>> 
>>> Am I missing something or is this really not easily possible?
>>> Basically I'm looking for a hard --oneshot --revdep-rebuild with a
>>> package argument.
>>> 
>>> thanks,
>>> Holger
>>> 
>>> 
>> 
>> I never needed this, so I don't know how to do it directly with emerge
>> (is it possible?), but you can use equery like this to get a list:
>> 
>> equery -q d dev-lang/go
>> 
>> -q/--quiet (minimal output)
>> (d)epends (list all packages directly depending on ATOM)
>> 
>> to get a list of packages installed which depend on dev-lang/go
>> you can filter versions out of it and feed that to 'emerge -av1'.
>> 
>> Or if you trust this ugly one-liner without filtering (probably ugliest
>> thing, but seems to do the job):
>> 
>> emerge -av1 $(for i in $(equery -q d sys-apps/util-linux); do echo
>> "=$i"; done)
> 
> That was useful and saved me the time to sed & grep my way through the
> equery output. Turning this into a generic script is easy enough.

For the peanut gallery..

Turns out it's not so clear-cut since equery d finds *all possible*
dependants, including those for unset USE flags.

Oh well..depclan & grep here we go..

-h


Reply via email to