Summary: | sys-apps/portage-2.2.0_alpha99 hangs due to extremely long slot_conflict_handler._check_solution loop | ||
---|---|---|---|
Product: | Portage Development | Reporter: | PM <mitaspiotr> |
Component: | Unclassified | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED FIXED | ||
Severity: | normal | Keywords: | InVCS |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 300071, 409383 | ||
Attachments: | debug log |
Description
PM
2012-04-04 18:12:00 UTC
Please post a backtrace, created as follows: 1) killall -s SIGUSR1 emerge 2) When emerge shows the (Pdb) prompt, type the 'bt' command and press 'Enter' # emerge world -uD Calculating dependencies... done! [ebuild U ] dev-libs/icu-49.1 [4.8.1.1-r1] [ebuild U ] dev-libs/libnl-1.1-r3 [1.1-r2] [ebuild U ] dev-perl/Net-SSLeay-1.470.0 [1.450.0] [ebuild U ] x11-apps/xpr-1.0.4 [1.0.3] [ebuild U ] x11-apps/xwud-1.0.4 [1.0.3] [ebuild U ] x11-apps/xlsatoms-1.1.1 [1.1.0] [ebuild R ] x11-libs/qt-core-4.8.1 USE="(-c++0x*)" [ebuild R ] x11-libs/qt-script-4.8.1 USE="(-c++0x*)" [ebuild R ] x11-libs/qt-dbus-4.8.1 USE="(-c++0x*)" [ebuild U ] x11-libs/qt-gui-4.8.1-r1 [4.8.1] USE="(-c++0x*)" [ebuild R ] x11-libs/qt-sql-4.8.1 USE="(-c++0x*)" [ebuild R ] x11-libs/qt-qt3support-4.8.1 USE="(-c++0x*)" [ebuild U ] net-p2p/bitcoin-qt-0.6.0 [0.6.0_rc5] LINGUAS="-he%" [ebuild U ] app-text/xdvik-22.85 [22.84.16] --Return-- > /usr/bin/emerge(28)debug_signal()->None -> pdb.set_trace() (Pdb) bt /usr/bin/emerge(43)<module>() -> retval = emerge_main() /usr/lib64/portage/pym/_emerge/main.py(2039)emerge_main() -> myopts, myaction, myfiles, spinner) /usr/lib64/portage/pym/_emerge/actions.py(305)action_build() -> mydepgraph.display_problems() /usr/lib64/portage/pym/_emerge/depgraph.py(6232)display_problems() -> self._display_problems() /usr/lib64/portage/pym/_emerge/depgraph.py(6251)_display_problems() -> self._show_slot_collision_notice() /usr/lib64/portage/pym/_emerge/depgraph.py(752)_show_slot_collision_notice() -> self._dynamic_config._slot_conflict_handler = slot_conflict_handler(self) /usr/lib64/portage/pym/_emerge/resolver/slot_collision.py(154)__init__() -> new_solutions = self._check_configuration(config, all_conflict_atoms_by_slotatom, conflict_nodes) /usr/lib64/portage/pym/_emerge/resolver/slot_collision.py(670)_check_configuration() -> solution = self._check_solution(config, candidate, all_conflict_atoms_by_slotatom) /usr/lib64/portage/pym/_emerge/resolver/slot_collision.py(785)_check_solution() -> self._force_flag_for_package(required_changes, ppkg, flag, "disabled") /usr/lib64/portage/pym/_emerge/resolver/slot_collision.py(695)_force_flag_for_package() -> changes[flag] = flag_change > /usr/bin/emerge(28)debug_signal()->None -> pdb.set_trace() (Pdb) Please attach a debug log so we can see what packages are triggering this: emerge world -uD --debug &> debug.log Kill it after it hangs up. Created attachment 307825 [details]
debug log
It looks like you need to disable the c++0x flag for x11-libs/qt-webkit-4.8.1, based on the following part of the log: !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: x11-libs/qt-core:4 (x11-libs/qt-core-4.8.1::gentoo, ebuild scheduled for merge) pulled in by ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,qpa=,debug=,glib=,qt3support=] required by (x11-libs/qt-gui-4.8.1-r1::gentoo, ebuild scheduled for merge) ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,qpa=] required by (x11-libs/qt-script-4.8.1::gentoo, ebuild scheduled for merge) ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,qpa=,qt3support] required by (x11-libs/qt-qt3support-4.8.1::gentoo, ebuild scheduled for merge) ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,qpa=] required by (x11-libs/qt-dbus-4.8.1::gentoo, ebuild scheduled for merge) ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,qpa=,qt3support=] required by (x11-libs/qt-sql-4.8.1::gentoo, ebuild scheduled for merge) (x11-libs/qt-core-4.8.1::gentoo, installed) pulled in by ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,ssl,qpa=] required by (x11-libs/qt-webkit-4.8.1::gentoo, installed) It might be possible to solve this slot collision by applying all of the following changes: - x11-libs/qt-qt3support-4.8.1 (Change USE: +c++0x +debug +qpa +aqua) - x11-libs/qt-sql-4.8.1 (Change USE: +c++0x +debug +qpa +aqua) - x11-libs/qt-core-4.8.1 (Change USE: +c++0x +debug +qpa +aqua) - x11-libs/qt-script-4.8.1 (Change USE: +c++0x +debug +qpa +aqua) - x11-libs/qt-dbus-4.8.1 (Change USE: +c++0x +debug +qpa +aqua) - x11-libs/qt-webkit-4.8.1 (Change USE: +debug +qpa +aqua) - x11-libs/qt-gui-4.8.1-r1 (Change USE: +c++0x +debug +qpa +aqua) Maybe simply adding --newuse to your command will solve it, since the flag is masked. From profiles/base/ChangeLog: 31 Mar 2012; Davide Pesavento <pesa@gentoo.org> package.use.mask: Update mask of c++0x and qpa USE flags to include Qt 4.8.1. I can't
>Change USE: +c++0x
since it's masked
Doing emerge world -uDN seems to resolve everything, but it also wants to rebuild 30 other packages...
I tried rebuilding only the qt packages with various combinations of packages and switches, they either hang up or give me something like this:
# emerge qt-gui -a1ND
These are the packages that would be merged, in order:
Calculating dependencies... done!
emerge: there are no ebuilds to satisfy "~x11-libs/qt-script-4.8.1[-aqua,c++0x,-qpa,-debug]".
(dependency required by "x11-libs/qt-gui-4.8.1" [installed])
(dependency required by "qt-gui" [argument])
(In reply to comment #7) > I can't > >Change USE: +c++0x > since it's masked Yeah, the suggestion is backwards. You actually have to disable it, like I said at the beginning of comment #5. The flag is masked, so enabling it isn't really an option. Apparently we need to fix the code so that it won't suggest to enable masked flags. > Doing emerge world -uDN seems to resolve everything, but it also wants to > rebuild 30 other packages... You could try --changed-use instead of --newuse, to see if it rebuilds fewer packages. --changed-use seems to be the best workaround. Thanks. The debug log shows that it's checking 2^31 = 2147483648 solutions, which is not really practical. If we eliminate choices for c++0x, qpa, and aqua flags which are all masked, it will be reduced to 2^16 = 65536 solutions. Here's a minimal fix: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=eba99d86fe3bf43488c5df09419218d4b2941e90 This is fixed in 2.1.10.56 and 2.2.0_alpha100. |