commit: fca3478de7127bbdf58c6f4b809c177662d5e4cb Author: James Le Cuirot <chewi <AT> gentoo <DOT> org> AuthorDate: Sun Nov 20 11:46:34 2022 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Wed Nov 23 23:01:57 2022 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=fca3478d
depgraph: Resolve atoms using the correct root This bug may have played out in different ways, but one example was a rebuild in / causing the same package to be added to ROOT, even when it had no other reason to be. Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org> Closes: https://github.com/gentoo/portage/pull/941 Signed-off-by: Sam James <sam <AT> gentoo.org> NEWS | 4 ++++ lib/_emerge/depgraph.py | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 1426a0856..8767d393c 100644 --- a/NEWS +++ b/NEWS @@ -31,6 +31,10 @@ Bug fixes: by the SYSROOT location. For example, if BROOT=/foo, ROOT=/bar, EPREFIX=/baz, EROOT=/bar/baz, and SYSROOT=/ then ESYSROOT should be /foo, not /baz. +* depgraph: Resolve atoms using the correct root. This bug may have played out + in different ways, but one example was a rebuild in / causing the same package + to be added to ROOT, even when it had no other reason to be. + portage-3.0.39 (2022-11-20) -------------- diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py index c976f8205..e556d6616 100644 --- a/lib/_emerge/depgraph.py +++ b/lib/_emerge/depgraph.py @@ -5019,13 +5019,14 @@ class depgraph: a favorite list.""" debug = "--debug" in self._frozen_config.myopts onlydeps = "--onlydeps" in self._frozen_config.myopts - myroot = self._frozen_config.target_root - pkgsettings = self._frozen_config.pkgsettings[myroot] - pprovideddict = pkgsettings.pprovideddict - virtuals = pkgsettings.getvirtuals() args = self._dynamic_config._initial_arg_list[:] for arg in self._expand_set_args(args, add_to_digraph=True): + myroot = arg.root_config.root + pkgsettings = self._frozen_config.pkgsettings[myroot] + pprovideddict = pkgsettings.pprovideddict + virtuals = pkgsettings.getvirtuals() + for atom in sorted(arg.pset.getAtoms()): self._spinner_update() dep = Dependency(atom=atom, onlydeps=onlydeps, root=myroot, parent=arg) @@ -5169,6 +5170,11 @@ class depgraph: ) raise + try: + del myroot, pkgsettings, pprovideddict, virtuals + except NameError: + pass + # Now that the root packages have been added to the graph, # process the dependencies. if not self._create_graph():
