On Fri, May 29, 2009 at 10:12:43PM +0000, Duncan wrote: > Patrick Börjesson <psychoti...@lavabit.com> posted > 20090529201741.gb11...@nexon.nexus, excerpted below, on Fri, 29 May 2009 > 22:17:41 +0200: > > > Why exactly would you want to use --oneshot for a "leaf package" that is > > not depended on by any other package in the world set? If spam IS > > depended on by any other package (recursively) in the world set, it will > > be pulled in by --complete-graph, but that's not the case here if i > > understand it correctly, thus it's a package that you explicitly wanted > > installed, thus it belongs in the world set, and you should thus not use > > --oneshot for it. > > I use -1 by default, here (via scriptlet), mainly so I don't have to > worry about cluttering up my world file while emerging individual > packages, just as I always use -NuD with my @system and @world runs. > > But for leaf packages, it serves as a sort of test install as well. > Since I always do revdep-rebuild -p and emerge --depclean -p after every > update (typically 2-3 times a week), then rebuild and clean as I need to, > keeping the "trial merges" on the depclean list for a few days keeps me > aware of them. If I know it's something I want to keep, I run a > different scriptlet without the -1, but that's not often once a system is > up and running with the normal working set merged. Meanwhile, I > ultimately either emerge -C (or let depclean handle it) the "trialware", > or emerge --noreplace, thus adding it to world. > > But experimental installs and their deps typically sit in the --depclean > list for anything from a few minutes to a few days, until I decide > whether I want to keep or remove them. > > If he was testing how the switches under discussion here worked and has a > similar policy, I could easily see him using -1 by habit, even if he > didn't explicitly reason that it was a test and therefore something he > didn't want in @world.
Indeed i can see the reason for using --oneshot for packages you possibly only want installed for a limited time period, but as --complete-graph is limited by definition to the world set, you can't expect emerge to consider the dependencies of a leaf-package installed with --oneshot (when using --complete-graph of "-D @world"). It's a weigh-off between having an easy time pruning your system and having emerge calculate a "correct" dependency graph for your entire system. As far as emerge is concerned, a leaf package installed with --oneshot isn't reachable through the dependency graph, thus its dependencies shouldn't be accounted for.