Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 771987 - sys-apps/portage: emerge --keep-going support for behavior related to --ignore-world and --implicit-system-deps=n
Summary: sys-apps/portage: emerge --keep-going support for behavior related to --ignor...
Status: CONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Interface (emerge) (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 373807
  Show dependency tree
 
Reported: 2021-02-21 22:39 UTC by Michael Moon
Modified: 2021-03-03 17:37 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Output of emerge -avtDUu @world --keep-going, emerge --resume, emerge ppp, emerge --info (portage-bug.txt,93.65 KB, text/plain)
2021-02-21 22:39 UTC, Michael Moon
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Moon 2021-02-21 22:39:16 UTC
Created attachment 687984 [details]
Output of emerge -avtDUu @world --keep-going, emerge --resume, emerge ppp, emerge --info

Seems like a regression of https://bugs.gentoo.org/374583

With --keep-going, it comes up with an empty resume list.

With --resume, it complains that the list is invalid somehow.

After a merge failure of dev-lang/spidermonkey during emerge -avtDUu @world (which I made a separate bug about):

(see attachment, bugzilla complained about too much text)

Highlights:

from emerge --keep-going -avtDUu @world after spidermonkey failure:

*** Resuming merge...

These are the packages that would be merged, in reverse order:
... done!

...

Note: empty list, despite merge list being large and many packages not depending on spidermonkey!


From emerge --resume --skipfirst

These are the packages that would be merged, in order:

Calculating dependencies                       ... done!
* Invalid resume list:
*
*   ('ebuild', '/', 'media-libs/gst-plugins-base-1.16.3', 'merge')
*   ('ebuild', '/', 'media-libs/gst-plugins-good-1.16.3', 'merge')
*   ('ebuild', '/', 'media-libs/gst-plugins-bad-1.16.3', 'merge')
*   ('ebuild', '/', 'media-libs/gst-plugins-ugly-1.16.3', 'merge')

etc etc - list looks ok to me, why is it being flagged as invalid?
Comment 1 Zac Medico gentoo-dev 2021-02-21 23:32:51 UTC
(In reply to Michael Moon from comment #0)
> From emerge --resume --skipfirst
> 
> These are the packages that would be merged, in order:
> 
> Calculating dependencies                       ... done!
> * Invalid resume list:
> *
> *   ('ebuild', '/', 'media-libs/gst-plugins-base-1.16.3', 'merge')
> *   ('ebuild', '/', 'media-libs/gst-plugins-good-1.16.3', 'merge')
> *   ('ebuild', '/', 'media-libs/gst-plugins-bad-1.16.3', 'merge')
> *   ('ebuild', '/', 'media-libs/gst-plugins-ugly-1.16.3', 'merge')
> 
> etc etc - list looks ok to me, why is it being flagged as invalid?

The behavior is intentional. The resume list is invalid because of this:

> * One or more packages are either masked or have missing dependencies:
> *
> *   >=dev-libs/icu-67.1:0/67.1= pulled in by:
> *     (dev-lang/spidermonkey-78.6.0:78/78::gentoo, installed)

Since you skipped the spidermonkey update, it seems that your installed spidermonkey has a broken icu dependency. You need a working spidermonkey because this polkit stuff, since polkit requires spidermonkey:

> [nomerge       ] kde-plasma/systemsettings-5.20.5:5::gentoo  USE="-debug handbook"
> [nomerge       ]  kde-frameworks/kauth-5.77.0:5/5.77::gentoo [5.74.0:5/5.74::gentoo] USE="-debug -doc nls (policykit) -test"
> [nomerge       ]   sys-auth/polkit-qt-0.113.0::gentoo  USE="-debug"
> [nomerge       ]    sys-auth/polkit-0.118::gentoo  USE="elogind -examples gtk introspection -jit kde nls pam (-selinux) -systemd -test"
> [nomerge       ]     kde-plasma/polkit-kde-agent-5.20.5:5::gentoo  USE="-debug"
> [nomerge       ]      kde-frameworks/kiconthemes-5.77.0:5/5.77::gentoo [5.74.0:5/5.74::gentoo] USE="-debug -designer -doc -test"
> [ebuild     U  ]       kde-frameworks/karchive-5.77.0:5/5.77::gentoo [5.74.0:5/5.74::gentoo] USE="-debug -doc -test" 0 KiB
> [ebuild     U  ]      kde-frameworks/breeze-icons-5.77.0-r1:5/5.77::gentoo [5.74.0:5/5.74::gentoo] USE="-test" 0 KiB
> [ebuild     U  ]      kde-frameworks/ki18n-5.77.0:5/5.77::gentoo [5.74.0:5/5.74::gentoo] USE="-debug -doc -test" PYTHON_SINGLE_TARGET="-python3_7 python3_8 -python3_9" 0 KiB
> [nomerge       ] kde-plasma/sddm-kcm-5.20.5:5::gentoo  USE="-debug"
> [nomerge       ]  kde-plasma/kde-cli-tools-5.20.5:5::gentoo  USE="X -debug handbook -kdesu -test"
> [nomerge       ]   kde-plasma/libkworkspace-5.20.5:5::gentoo  USE="-debug -test"
> [nomerge       ]    kde-frameworks/plasma-5.77.0-r1:5/5.77::gentoo [5.74.0-r1:5/5.74::gentoo] USE="X -debug -doc -gles2-only -test -wayland"
> [nomerge       ]     kde-frameworks/kio-5.77.0-r2:5/5.77::gentoo [5.74.1-r2:5/5.74::gentoo] USE="X acl -debug -designer -doc handbook -kerberos kwallet -test"
> [nomerge       ]      kde-frameworks/kauth-5.77.0:5/5.77::gentoo [5.74.0:5/5.74::gentoo] USE="-debug -doc nls (policykit) -test"
> [nomerge       ]       kde-plasma/polkit-kde-agent-5.20.5:5::gentoo  USE="-debug"
> [nomerge       ]        dev-qt/qtwidgets-5.15.2:5/5.15::gentoo  USE="X -debug -gles2-only gtk png -test"
> [nomerge       ]         x11-libs/gtk+-3.24.24-r1:3::gentoo [3.24.22:3::gentoo] USE="X (-aqua) -broadway -cloudprint -colord cups -examples -gtk-doc introspection -sysprof% -test -vim-syntax -wayland xinerama" ABI_X86="32 (64) (-x32)"
> [ebuild     U  ]          dev-util/gtk-update-icon-cache-3.24.24::gentoo [3.24.21::gentoo] 0 KiB
> [ebuild     U  ]          x11-misc/shared-mime-info-2.0-r2::gentoo [1.15::gentoo] 0 KiB
Comment 2 Michael Moon 2021-02-21 23:36:19 UTC
Ok sure, but why doesn't it pick up net-dialup/ppp for example, which emerge seems to be perfectly happy to merge without spidermonkey when specified manually?

Also, pretty sure shadowsocks-libev doesn't need spidermonkey, nor distcc, nor many others in the list..

I distinctly remember portage being able to skip _some_ of the resume list due to unsatisfied deps and continue with the other stuff not so long ago.
Comment 3 Zac Medico gentoo-dev 2021-02-22 00:17:04 UTC
(In reply to Michael Moon from comment #2)
> Ok sure, but why doesn't it pick up net-dialup/ppp for example, which emerge
> seems to be perfectly happy to merge without spidermonkey when specified
> manually?
> 
> Also, pretty sure shadowsocks-libev doesn't need spidermonkey, nor distcc,
> nor many others in the list..
> 
> I distinctly remember portage being able to skip _some_ of the resume list
> due to unsatisfied deps and continue with the other stuff not so long ago.

I see your expectation is that the --keep-going flag would cause it to drop anything requiring polkit and spidermonkey. The --keep-going flag currently does not affect emerge --resume commands.
Comment 4 Michael Moon 2021-02-22 00:20:14 UTC
> I see your expectation is that the --keep-going flag would cause it to drop anything requiring polkit and spidermonkey.

Yes, and from memory this did used to happen - although I don't know when it stopped working.

> The --keep-going flag currently does not affect emerge --resume commands.

Yeah I'm not too worried about that, just thought it would be useful to point out that both of them don't work in a somewhat similar manner in this case.
Comment 5 Zac Medico gentoo-dev 2021-02-22 00:22:24 UTC
(In reply to Michael Moon from comment #4)
> > I see your expectation is that the --keep-going flag would cause it to drop anything requiring polkit and spidermonkey.
> 
> Yes, and from memory this did used to happen - although I don't know when it
> stopped working.

The --keep-going flag has never had any effect on the initial dependency calculation for emerge --resume commands.
Comment 6 Michael Moon 2021-02-22 00:24:48 UTC
OK, let's forget about resume for now.

What I expect is that --keep-going would decide "these dozen things can't be built because their dependency failed, but these _other_ dozen things don't depend on that failed dep - so I can continue merging them"

It would be nice if resume did the same, but I guess that's a separate issue
Comment 7 Zac Medico gentoo-dev 2021-02-22 01:14:28 UTC
(In reply to Michael Moon from comment #6)
> OK, let's forget about resume for now.
> 
> What I expect is that --keep-going would decide "these dozen things can't be
> built because their dependency failed, but these _other_ dozen things don't
> depend on that failed dep - so I can continue merging them"

I think what we need is something like the emerge --ignore-world option, but it will specifically ignore packages which are not needed to complete the desired builds. The --ignore-world option doesn't fit exactly, since we also want to ignore packages that may have been given as arguments but later failed to build.

Users might have different preferences on how much they'd like to ignore. Maybe they'd like to ignore world packages but not system packages. The --implicit-system-deps=n option exists to remove special considerations for system packages.

Maybe you could test with 'emerge -uD --keep-going --ignore-world @world' to see if it gives better results? I'd like to try it myself.

> It would be nice if resume did the same, but I guess that's a separate issue

The intention of --resume is only to resume the specific set of packages from a previous emerge invocation, and nothing more. Filed as bug 771999.