Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 603658

Summary: sys-libs/ncurses-6.0: if 6.0 is installed after 6.0-r1, slotmove causes ncurses 6.0-r1 to be autocleaned by emerge
Product: Gentoo Linux Reporter: Zac Medico <zmedico>
Component: Current packagesAssignee: Gentoo's Team for Core System packages <base-system>
Severity: normal CC: dev-portage, hossie, pacho, teika
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: All   
Package list:
Runtime testing required: ---

Description Zac Medico gentoo-dev 2016-12-24 20:35:38 UTC
In bug 598080, comment #9, a user has reported that ncurses-6.0-r1 was removed by emerge autoclean:

> Today, portage removed ncurses-6.0-r1, but 6.0 remained, as reported by
> Daniel Augstin in Comment #7
> BTW: I had to manually scroll my X terminal to find this message:
> ------------------------------------------------------------------------
> >>> Auto-cleaning packages...
>  sys-libs/ncurses
>     selected: 6.0-r1
>    protected: 6.0
>      omitted: none
> All selected packages: =sys-libs/ncurses-6.0-r1
> ------------------------------------------------------------------------

We can expect this behavior if the ncurses-6.0 ebuild is installed after the ncurses-6.0-r1, and then this slotmove is applied:

profiles/updates/3Q-2015:slotmove ~sys-libs/ncurses-6.0 5 0
Comment 1 Zac Medico gentoo-dev 2016-12-25 00:51:13 UTC
I've removed the slotmove, so that it won't cause any more damage:

Without the slotmove, users upgrading from the old version of the nucurses-6.0 ebuild added in this commit can experience a file collision with the ncurses-6.0-r1 ebuild:

So, we probably want to add a blocker like !~sys-libs/ncurses-6.0:5 to the ncurses-6.0-r1 ebuild. Does anyone see a reason not to add this blocker? Also, it seems that the ncurses-6.0 ebuild is useless, so is there reason not to remove it? It looks like we should have used a blocker instead of a slotmove in the first place. I guess the slotmove was a hack in order to avoid triggering slot-operator rebuilds?
Comment 2 Zac Medico gentoo-dev 2016-12-25 01:20:11 UTC
(In reply to Zac Medico from comment #1)
> I guess the slotmove was a hack in order to
> avoid triggering slot-operator rebuilds?

The slotmove does did not help for the slot-operator deps of installed packages, because portage doesn't support that for slot moves with versioned atoms, as noted in bug 558856, comment #7.

It seems the purpose of the ncurses-6.0 ebuild is to satisfy the dependencies of installed packages having built slot-operator dependencies like sys-libs/ncurses:5/6= which are not affected by the slotmove. I expect that emerge has triggered rebuilds for such packages, building them against the newer 0/6 slot/subslot. So, nobody should need the ncurses-6.0 ebuild.
Comment 3 Simon 2017-01-07 17:50:01 UTC
I'm actually now getting the following slot conflict, which doesn't seem to make sense (I don't have ncurses in my world file)

Total: 9 packages (7 upgrades, 2 reinstalls, 2 binaries), Size of downloads: 44,715 KiB

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:


  (sys-libs/ncurses-6.0:5/6::gentoo, ebuild scheduled for merge) pulled in by
    (no parents that aren't satisfied by other packages in this slot)

  (sys-libs/ncurses-5.9-r101:5/5::gentoo, binary scheduled for merge) pulled in by
    >=sys-libs/ncurses-5.2:5/5= required by (net-misc/netkit-telnetd-0.17-r10:0/0::gentoo, binary scheduled for merge)

When masking sys-libs/ncurses-6.0 it works fine
Comment 4 Zac Medico gentoo-dev 2017-01-07 20:09:08 UTC
(In reply to Simon from comment #3)
>     >=sys-libs/ncurses-5.2:5/5= required by
> (net-misc/netkit-telnetd-0.17-r10:0/0::gentoo, binary scheduled for merge)

You need to rebuild that netkit-telnetd-0.17-r10 binary package against the ncurses 0/6 slot. Since the rebuild didn't happen automatically, I'm guessing that the netkit-telnetd-0.17-r10 ebuild is masked or unavailable (bug 602964 has a patch to report such cases).