Alan McKinnon wrote: > On 03/02/2013 21:09, Dale wrote: >> Alan McKinnon wrote: >>> emerge -e --keep-going @world >>> shows output like this when a build fails: >>> >>> * One or more packages are either masked or have missing dependencies: >>> * >>> * >=dev-libs/icu-49:0/50= pulled in by: >>> * (x11-libs/qt-core-4.8.4-r1::gentoo, installed) >>> >>> I can't parse that. What kind of SLOT is "0/50=" ? >>> >>> So far this has happened twice. The packages that failed prior are not >>> important, >>> what is important is that when the depgraph is *recalculated*, I get >>> that error. >>> It's always that specific atom for icu causing issues and it's always >>> pulled in >>> by qt-<something> >>> >>> Anyone know what that atom means and if it's a bug or not? >>> >>> This system is ~amd64 and portage is latest masked 2.2.0_alpha161. >>> Active python is 2.7 >>> >> >> LOL I'll give this a go, sort of. I get this for icu: >> >> root@fireball / # equery l -p icu >> * Searching for icu ... >> [IP-] [ ] dev-libs/icu-49.1.2:0 >> [-P-] [ ~] dev-libs/icu-50.1-r1:0/50.1 >> [-P-] [ ~] dev-libs/icu-50.1-r2:0/50.1 >> [-P-] [ ~] dev-libs/icu-50.1.1:0/50.1.1 >> root@fireball / # >> >> So, does it maybe want icu-50.* instead of the 49 that is installed? >> That would be equal to or greater than what you likely have. I might >> add, the 50 and above are keyworded. >> >> I took a stab at it but not sure what I hit. ;-) > It's confusing, lemme see if I can describe it, using the URL that > Michel O posted. > > Your eix shows 4 versions of icu. Everything there up to the "/" chars > is normal and what you've been using for ages. > > The "/" is sub-slots, introduced in EAPI=5. icu-49 uses a lesser EAPI so > it has no sub-slots. Each icu version >=50 is in SLOT 0, and it will > install .so files with the version after the "/". > > So take my icu for example, it's version 50.1.1 and equery files reveals > it installs: > > /usr/lib64/libicui18n.so.50.1.1 > /usr/lib64/libicuio.so.50.1.1 > /usr/lib64/libicule.so.50.1.1 > > Well whaddaya know, the .so version matches what eix claims (meaning the > icu ebuild is correctly declaring what it will provide). > > That's one half of the story, the other half is with packages that > DEPEND on icu. qt-core for example has this: > > icu? ( >=dev-libs/icu-49:= ) > > Now what that means is "qt-core DEPENDS on any version of icu >49, plus > the following: (this is the bit that's gonna bake your noodle) > > If icu is re-emerged and that new version has a different .so version to > what the current version provides, then qt-core will break at run-time. > That's what the trailing = means, ie. qt-core depends on an icu that has > an soname equal to the one it has right now. In my case that is 50.1.1. > If I upgrade icu to a version with a different soname, then qt-core has > to be rebuilt, and now portage knows that. > > There's another operator that can go where the "=" is and it's "*". > Which basically means "any". So if I have some package using EAPI=5 and > it has this line in DEPENDS: > > icu? ( >=dev-libs/icu-49:* ) > > Then that would mean it depends on >icu-49 and the soname doesn't matter > as it can be any version. Presumably the devs did their homework and > figured out what their packages depend on, then put the right info in > their ebuilds. (I fear this last might be a tall order, but hey, we're > discussing syntax here, not human ability) > > Is this all starting to sound maybe just a little bit like some magic > that will make @preserved-rebuild and revdep-rebuild redundant? We need > those tools because portage does not know what so versions will work > fine with what, and these sub-slots are supposed to give portage that > info. Whoopee. > > ;-) > > Clear as mud now? > >
< Dale scratches head > Hmmmm, that mud is pretty thick. May have to let that one sit for a bit to settle out. ^-^ So, portage is getting smarter about breakages then? Dale :-) :-) -- I am only responsible for what I said ... Not for what you understood or how you interpreted my words!