Summary: | sys-apps/portage: app-text/libspectre rebuilt before app-text/ghostscript-gpl DEPEND with USE="cups gtk zeroconf" | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Pacho Ramos <pacho> |
Component: | Core - Dependencies | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | esigra |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: | https://bugs.gentoo.org/show_bug.cgi?id=703750 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | 690436 | ||
Bug Blocks: | 689644, 701268 | ||
Attachments: | emerge output |
Description
Pacho Ramos
2019-12-24 21:08:14 UTC
It's probably triggered by this dependency cycle:
> $ emerge -pv libspectre
>
> These are the packages that would be merged, in order:
>
> Calculating dependencies ... done!
>
>
> [nomerge ] app-text/libspectre-0.2.8::gentoo USE="-debug -doc -static-libs"
> [nomerge ] app-text/ghostscript-gpl-9.50::gentoo USE="cups gtk unicode -X -dbus -static-libs -tiff" L10N="-de (-ja) -ko -zh-CN -zh-TW"
> [ebuild N ] x11-libs/gtk+-3.24.11:3::gentoo USE="X cups introspection (-aqua) -broadway -cloudprint -colord -examples -gtk-doc -test -vim-syntax -wayland -xinerama" ABI_X86="(64) -32 (-x32)" 20483 KiB
> [ebuild N ] x11-themes/adwaita-icon-theme-3.32.0::gentoo USE="-branding" 18106 KiB
> [nomerge ] net-print/cups-filters-1.25.11::gentoo USE="foomatic postscript zeroconf -dbus -ipp_autosetup -jpeg -ldap -pclm -pdf -perl -png -static-libs -test -tiff"
> [nomerge ] app-text/ghostscript-gpl-9.50::gentoo USE="cups gtk unicode -X -dbus -static-libs -tiff" L10N="-de (-ja) -ko -zh-CN -zh-TW"
> [nomerge ] net-print/cups-2.2.13::gentoo USE="acl pam ssl threads zeroconf -X -dbus -debug -java -kerberos -lprng-compat -python (-selinux) -static-libs -systemd -usb -xinetd" ABI_X86="(64) -32 (-x32)" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7"
> [nomerge ] net-dns/avahi-0.7-r2::gentoo USE="dbus gdbm gtk introspection ipv6 nls -autoipd -bookmarks -doc -gtk3 -howl-compat -mdnsresponder-compat -mono -python -qt5 (-selinux) -test" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7"
> [nomerge ] x11-libs/gtk+-2.24.32-r1:2::gentoo USE="cups introspection (-aqua) -examples -test -vim-syntax -xinerama" ABI_X86="(64) -32 (-x32)"
> [ebuild N ] x11-themes/gtk-engines-adwaita-3.28::gentoo ABI_X86="(64) -32 (-x32)" 2885 KiB
> [ebuild N ] x11-libs/gtk+-2.24.32-r1:2::gentoo USE="cups introspection (-aqua) -examples -test -vim-syntax -xinerama" ABI_X86="(64) -32 (-x32)" 12339 KiB
> [ebuild N ] net-print/cups-filters-1.25.11::gentoo USE="foomatic postscript zeroconf -dbus -ipp_autosetup -jpeg -ldap -pclm -pdf -perl -png -static-libs -test -tiff" 1449 KiB
> [ebuild N ] net-dns/avahi-0.7-r2::gentoo USE="dbus gdbm gtk introspection ipv6 nls -autoipd -bookmarks -doc -gtk3 -howl-compat -mdnsresponder-compat -mono -python -qt5 (-selinux) -test" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7" 919 KiB
> [ebuild N ] app-text/libspectre-0.2.8::gentoo USE="-debug -doc -static-libs" 412 KiB
> [ebuild N ] app-text/ghostscript-gpl-9.50::gentoo USE="cups gtk unicode -X -dbus -static-libs -tiff" L10N="-de (-ja) -ko -zh-CN -zh-TW" 33806 KiB
> [ebuild N ] net-print/cups-2.2.13::gentoo USE="acl pam ssl threads zeroconf -X -dbus -debug -java -kerberos -lprng-compat -python (-selinux) -static-libs -systemd -usb -xinetd" ABI_X86="(64) -32 (-x32)" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7" 10167 KiB
>
> Total: 9 packages (9 new), Size of downloads: 100561 KiB
>
> * Error: circular dependencies:
>
> (net-dns/avahi-0.7-r2:0/0::gentoo, ebuild scheduled for merge) depends on
> (x11-libs/gtk+-2.24.32-r1:2/2::gentoo, ebuild scheduled for merge) (buildtime)
> (net-print/cups-2.2.13:0/0::gentoo, ebuild scheduled for merge) (buildtime_slot_op)
> (net-dns/avahi-0.7-r2:0/0::gentoo, ebuild scheduled for merge) (buildtime)
>
> It might be possible to break this cycle
> by applying any of the following changes:
> - net-print/cups-2.2.13 (Change USE: -zeroconf)
> - net-dns/avahi-0.7-r2 (Change USE: -gtk)
> - x11-libs/gtk+-2.24.32-r1 (Change USE: -cups)
I see that libspectre links against libgs.so, but it doesn't use a slot operator dependency for app-text/ghostscript-gpl. Especially in the presence of dependency cycles, it's better to use a slot operator dependency like app-text/ghostscript-gpl:= so that the dependency will be assigned a higher priority. (In reply to Zac Medico from comment #1) > It's probably triggered by this dependency cycle: > > > $ emerge -pv libspectre I am not sure... I remember that cycle the first time I needed to install the systems, but now, I don't hit the cycle as they are already installed (In reply to Zac Medico from comment #2) > I see that libspectre links against libgs.so, but it doesn't use a slot > operator dependency for app-text/ghostscript-gpl. Especially in the presence > of dependency cycles, it's better to use a slot operator dependency like > app-text/ghostscript-gpl:= so that the dependency will be assigned a higher > priority. OK... but that looks more like a workaround, or should we add a RDEPEND like that? I wonder because ghostscript-gpl doesn't even set a subslot, then, I am not sure if all will agree on using := for the reverse deps. Do you think you will need more information? For now I stopped the update of one of the affected systems to try to reproduce the issue... but if all the needed information is already there... I can manually update ghostscript and continue with the queue ;) Thanks! (In reply to Pacho Ramos from comment #3) > (In reply to Zac Medico from comment #2) > > I see that libspectre links against libgs.so, but it doesn't use a slot > > operator dependency for app-text/ghostscript-gpl. Especially in the presence > > of dependency cycles, it's better to use a slot operator dependency like > > app-text/ghostscript-gpl:= so that the dependency will be assigned a higher > > priority. > > OK... but that looks more like a workaround, or should we add a RDEPEND like > that? I wonder because ghostscript-gpl doesn't even set a subslot, then, I > am not sure if all will agree on using := for the reverse deps. In theory, ghostscript-gpl could bump its subslot at some point in the future, and then it would be advantageous to have the := for the reverse deps. When that happens, if you don't have := for reverse deps then you'll have to rely on @preserved-rebuild to trigger rebuilds. > Do you think you will need more information? For now I stopped the update of > one of the affected systems to try to reproduce the issue... but if all the > needed information is already there... I can manually update ghostscript and > continue with the queue ;) The issue is well understood, so please go ahead and finish your updates. I think the patch for bug 690436 will help with this case, since libspectre is not directly involved in the dependency cycle. OK, thanks a lot :) The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/proj/portage.git/commit/?id=680276cc4d4faa653203366cbe3c896ac3883cf2 commit 680276cc4d4faa653203366cbe3c896ac3883cf2 Author: Zac Medico <zmedico@gentoo.org> AuthorDate: 2019-12-25 08:37:18 +0000 Commit: Zac Medico <zmedico@gentoo.org> CommitDate: 2019-12-26 22:56:39 +0000 _serialize_tasks: limit scope of dropped circular dependencies Ensure that all members of a buildtime dependency cycle are merged as a group, such that packages which depend on one or more members of the group will only be merged *after* the entire group has been merged. This extends runtime cycle handling to also handle buildtime cycles in cases where the buildtime dependencies happen to be satisfied by installed packages. In situations when this is necessary, it is desirable to rely on the old installed instances of these packages as little as possible, since they might have been broken by the upgrade of a package that is a member of the dependency cycle. Upgrading members of the cycle as a group effectively minimizes reliance on the old installed package instances, avoiding some cases of bug 199856. For example, it should avoid bug 703676, where libspectre reportedly failed to build against an old installed instance of ghostscript-gpl. Bug: https://bugs.gentoo.org/199856 Bug: https://bugs.gentoo.org/689644 Bug: https://bugs.gentoo.org/690436 Bug: https://bugs.gentoo.org/703676 Signed-off-by: Zac Medico <zmedico@gentoo.org> lib/_emerge/depgraph.py | 94 +++++++++++++++----------- lib/portage/tests/resolver/test_merge_order.py | 25 ++++++- 2 files changed, 78 insertions(+), 41 deletions(-) The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1793a98a4543c8ea3b166af4383744ab060f37d5 commit 1793a98a4543c8ea3b166af4383744ab060f37d5 Author: Zac Medico <zmedico@gentoo.org> AuthorDate: 2019-12-26 22:46:29 +0000 Commit: Zac Medico <zmedico@gentoo.org> CommitDate: 2019-12-26 22:49:36 +0000 sys-apps/portage: Bump to version 2.3.84 #690436 limit scope of dropped circular dependencies, which should solve some cases of bug 199856 such as bug 703676 (also see tracker bug 689644) Bug: https://bugs.gentoo.org/701268 Bug: https://bugs.gentoo.org/199856 Bug: https://bugs.gentoo.org/689644 Bug: https://bugs.gentoo.org/690436 Bug: https://bugs.gentoo.org/703676 Package-Manager: Portage-2.3.84, Repoman-2.3.20 Signed-off-by: Zac Medico <zmedico@gentoo.org> sys-apps/portage/Manifest | 1 + sys-apps/portage/portage-2.3.84.ebuild | 276 +++++++++++++++++++++++++++++++++ 2 files changed, 277 insertions(+) The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6a713b0d43dfc4a9e9c66e41723b8643363b64e5 commit 6a713b0d43dfc4a9e9c66e41723b8643363b64e5 Author: Pacho Ramos <pacho@gentoo.org> AuthorDate: 2020-06-26 22:53:35 +0000 Commit: Pacho Ramos <pacho@gentoo.org> CommitDate: 2020-06-26 22:53:35 +0000 app-text/libspectre: Get ready for potential ghostscript subslot bumps This should also help to prevent issues like bug #703676 or bug #728582 as suggested by Zac Medico, ensuring ghostscript gets updated in proper order. Thanks-to: Zac Medico Closes: https://bugs.gentoo.org/703750 Bug: https://bugs.gentoo.org/703676 Bug: https://bugs.gentoo.org/728582 Package-Manager: Portage-2.3.100, Repoman-2.3.22 Signed-off-by: Pacho Ramos <pacho@gentoo.org> app-text/libspectre/libspectre-0.2.9.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) |