Am Sonntag, den 04.04.2010, 23:44 -0700 schrieb Brian Harring: > On Mon, Apr 05, 2010 at 08:16:42AM +0200, Maciej Mrozowski wrote: > > Unconditionally removing libraries (instead of preserving them) and making > > their reverse runtime dependencies reinstalled is unacceptable because > > "emerge" process involving multiple packages is not atomic. Simple as that. > > Is this what you suggest? Correct me if I'm wrong: > > 1. Users wants to uninstall or reinstall package, we let him do it provided > > reverse runtime dependencies are satisfied afterwards. Let's say he wants to > > upgrade expat. > > 2. Expat SOVERSION changed meanwhile but package was not SLOTtted and runtime > > reverse deps will still be satisfied when we upgrade. > > 3. Expat has been upgraded sucessfully, > > 4a. "emerge" discovers reverse runtime dependencies are broken and it starts > > to rebuild them, then it bails out due to error ld: libexpat.so. not > > found. Because step 3 cannot be rolled back (no atomicy) - game over. > > or > > 4b. "emerge does not discover those and does nothing. python is broken so > > emerge cannot be used anymore. Game over > > This is called 'nondeterministic resolution'- known issue also w/ > proposals of that sort. > > Pretty much everytime someone proposes it as a solution, it gets > smacked down by most folk since an emerge -p invocation that is a > single pkg upgade shouldn't be able to go rebuild your entire world. > > The alternative is a slotted ABI var- basically a counter (although it > doesn't have to be) w/in ebuilds themselves to indicate if they're > carrying a new ABI from upstream for that slotting. For example, > you've got EXPAT merged w/ ABI=2, version 2.0. version 2.0.1, for > whatever reason, breaks ABI- thus v2.0.1 in the tree is ABI=2.0.1 (or > 3, as said it's an arbitrary value). > > Via that, the resolver can see that a rebuild is necessary and plan a > rebuild of all consumers (whether NEEDED based or revdep). Note > preserve-lib would be rather useful here- specifically holding onto > the intermediate lib while doing rebuilding. No, it doesn't help since you may have the same problems some people try to solve in this thread. > This however breaks down > a bit when the ABI change is in reverse of normal versioning. How so? Such a var should just specify the ABI and the PM only has to check whether it changed from one PVR to the other. The "how" is completely irrelevant. -- Tiziano Müller Gentoo Linux Developer Areas of responsibility: Samba, PostgreSQL, CPP, Python, sysadmin, GLEP Editor E-Mail : dev-zero@gentoo.org GnuPG FP : F327 283A E769 2E36 18D5 4DE2 1B05 6A63 AE9C 1E30