If package A has a := dependency on package B, then when B is scheduled for upgrade, is it valid for Portage to rebuild A before upgrading B? I'm hitting this case on a couple of my machines, with the perl 5.30.3 to 5.32.1 upgrade. When I run 'emerge -puvDU @world', Portage wants to rebuild several dev-perl/* and virtual/perl-* packages [rR] before building dev-lang/perl [rU]. At best, the initial rebuilds look redundant, but this disagrees with how I understand subslot rebuilds to work. A section of the emerge pretend output is as follows, the full log is attached: > ... (53 other packages, mostly perl things) ... > [ebuild rR ] dev-perl/TimeDate-2.330.0::gentoo 0 KiB > [ebuild rR ] perl-core/File-Temp-0.230.900::gentoo 74 KiB > [ebuild U ] dev-perl/Digest-HMAC-1.30.0-r2::gentoo [1.30.0-r1::gentoo] 0 KiB > [ebuild U ] sys-devel/automake-1.16.3-r1:1.16::gentoo [1.16.2-r1:1.16::gentoo] USE="-test" 1,554 KiB > [ebuild rR ] dev-perl/Module-Build-0.422.400::gentoo USE="-test" 298 KiB > [ebuild rR ] dev-perl/Locale-gettext-1.70.0::gentoo 9 KiB > [ebuild r U ] dev-lang/perl-5.32.1:0/5.32::gentoo [5.30.3:0/5.30::gentoo] USE="berkdb gdbm -debug -doc -ithreads -minimal%" 12,442 KiB > [ebuild U ] dev-vcs/git-2.31.1::gentoo [2.26.3::gentoo] USE="blksha1 curl emacs gpg iconv nls pcre perl threads tk webdav -cgi -cvs -doc -gnome-keyring -highlight -mediawiki -mediawiki-experimental -perforce (-ppcsha1) -subversion -test -xinetd (-pcre-jit%*)" PYTHON_SINGLE_TARGET="python3_8 -python3_7 -python3_9%" 6,740 KiB > [ebuild rR ] dev-perl/IPC-System-Simple-1.250.0::gentoo USE="-test" 0 KiB > ... > The following packages are causing rebuilds: > > (dev-lang/perl-5.32.1:0/5.32::gentoo, ebuild scheduled for merge) causes rebuilds for: > ... > (dev-perl/Locale-gettext-1.70.0:0/0::gentoo, ebuild scheduled for merge) > ... dev-lang/perl-5.32.1 has PDEPEND on some virtual/perl-* packages, but at least I don't see why Locale-gettext couldn't be built after perl. Portage wanted to do this on two of three of my machines. On one where I went ahead with the world upgrade, the upgrade went smoothly, though a subsequent 'emerge -puvDU @world' now wants to rebuild those too-early packages again. On the remaining machine, disabling dynamic deps and adding --changed-deps=y doesn't change the build plan. Portage reports that libxml2 can't be updated due to dependency constraints, not sure if that's related. I'm happy to post the compressed 'emerge --debug' log if that'll help, it's 1.7M. Or maybe this is just a corner case that Portage is handling correctly? Thanks!
Created attachment 713379 [details] emerge --info
Created attachment 713382 [details] emerge -puvDU @world
Things like this are triggered by bug 756199.
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/proj/portage.git/commit/?id=224207c7d1988a354d004507bb7ecfb90b4ef097 commit 224207c7d1988a354d004507bb7ecfb90b4ef097 Author: YiFei Zhu <zhuyifei1999@gmail.com> AuthorDate: 2023-06-13 00:47:52 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2023-06-16 03:34:46 +0000 depgraph: Do not allow slotted deps to be satisfied by wrong slots This may be part of what caused the "perl rebuild bug". The "priority" of perl, when seen by perl modules, may have "satisfied" set to an installed perl of a wrong slot. Compounding this factor with bug #756199 where find_smallest_cycle would select a single node, in this case because the dependency of perl is satisfied and the priority then gets ignored, the "cycle" becomes a perl module alone and gets rebuilt early. I also updated the test from the previous patch to account for this change. No other tests seems affected. For a larger scale test, I reproduced this initially with a stage3 chroot from a Jan 1 2022 stage3 snapshot, and testing in an equivalent dockerfile would work too: FROM gentoo/stage3:amd64-openrc-20220101 RUN emerge-webrsync COPY . /portage Before this patch (USE flags omitted): # cd /portage && bin/emerge -puDN @world 2>&1 | grep -i perl [ebuild U ] app-admin/perl-cleaner-2.30-r1 [2.30] [ebuild rR ] virtual/perl-File-Temp-0.231.100 [ebuild rR ] dev-perl/Locale-gettext-1.70.0-r1 [ebuild rR ] dev-perl/MIME-Charset-1.12.2-r1 [ebuild rR ] dev-perl/Module-Build-0.423.100 [ebuild rR ] dev-perl/Text-CharWidth-0.40.0-r2 [ebuild U ] dev-lang/perl-5.36.0-r2 [5.34.0-r3] [ebuild N ] virtual/perl-CPAN-2.330.0 [ebuild U ] virtual/perl-ExtUtils-MakeMaker-7.640.0 [7.620.0] [ebuild U ] virtual/perl-File-Spec-3.840.0 [3.800.0] [...] After this patch: # cd /portage && bin/emerge -puDN @world 2>&1 | grep -i perl [ebuild U ] app-admin/perl-cleaner-2.30-r1 [2.30] [ebuild U ] dev-lang/perl-5.36.0-r2:0/5.36 [5.34.0-r3:0/5.34] [ebuild N ] virtual/perl-CPAN-2.330.0 [ebuild U ] virtual/perl-ExtUtils-MakeMaker-7.640.0 [7.620.0] [ebuild U ] virtual/perl-Data-Dumper-2.184.0 [2.179.0] [ebuild U ] virtual/perl-File-Spec-3.840.0 [3.800.0] [ebuild U ] virtual/perl-Test-Harness-3.440.0-r1 [3.430.0] [ebuild rR ] dev-perl/Pod-Parser-1.630.0-r1 [ebuild rR ] dev-perl/Text-CharWidth-0.40.0-r2 [ebuild rR ] dev-perl/Text-WrapI18N-0.60.0-r2 [...] Bug: https://bugs.gentoo.org/463976 Bug: https://bugs.gentoo.org/592880 Bug: https://bugs.gentoo.org/596664 Bug: https://bugs.gentoo.org/631490 Bug: https://bugs.gentoo.org/764365 Bug: https://bugs.gentoo.org/793992 Signed-off-by: YiFei Zhu <zhuyifei1999@gmail.com> Closes: https://github.com/gentoo/portage/pull/1055 Signed-off-by: Sam James <sam@gentoo.org> lib/_emerge/depgraph.py | 18 ++++++++++++++++++ lib/portage/tests/resolver/test_perl_rebuild_bug.py | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) https://gitweb.gentoo.org/proj/portage.git/commit/?id=ff457f742b513a65e6609054e5310f8beee488ec commit ff457f742b513a65e6609054e5310f8beee488ec Author: YiFei Zhu <zhuyifei1999@gmail.com> AuthorDate: 2023-06-13 08:08:51 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2023-06-16 03:34:46 +0000 tests: resolver: Test the broken behavior of Perl rebuild bug Bug: https://bugs.gentoo.org/463976 Bug: https://bugs.gentoo.org/592880 Bug: https://bugs.gentoo.org/596664 Bug: https://bugs.gentoo.org/631490 Bug: https://bugs.gentoo.org/764365 Bug: https://bugs.gentoo.org/793992 Signed-off-by: YiFei Zhu <zhuyifei1999@gmail.com> Signed-off-by: Sam James <sam@gentoo.org> .../tests/resolver/test_perl_rebuild_bug.py | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+)
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9502761c5bef818dbec90f062909d46dc22289df commit 9502761c5bef818dbec90f062909d46dc22289df Author: Sam James <sam@gentoo.org> AuthorDate: 2023-06-21 19:09:31 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2023-06-21 19:11:05 +0000 sys-apps/portage: add 3.0.49 Closes: https://bugs.gentoo.org/485100 Cloess: https://bugs.gentoo.org/592880 Closes: https://bugs.gentoo.org/596664 Closes: https://bugs.gentoo.org/631490 Closes: https://bugs.gentoo.org/764365 Closes: https://bugs.gentoo.org/793992 Closes: https://bugs.gentoo.org/890812 Closes: https://bugs.gentoo.org/905660 Closes: https://bugs.gentoo.org/907949 Signed-off-by: Sam James <sam@gentoo.org> sys-apps/portage/Manifest | 1 + sys-apps/portage/portage-3.0.49.ebuild | 296 +++++++++++++++++++++++++++++++++ 2 files changed, 297 insertions(+)