* [gentoo-dev] RFC about another *DEPEND variable @ 2006-09-21 10:35 Alin Nastac 2006-09-21 11:38 ` Luca Barbato 2006-09-21 13:50 ` Mike Frysinger 0 siblings, 2 replies; 48+ messages in thread From: Alin Nastac @ 2006-09-21 10:35 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1282 bytes --] I'm annoyed about impossibility to fix a certain class of breakages (other than reemerging the failing package). I am referring to the breakages occurred when foo has been upgraded, but the bar package cannot work with it because it was build against the old foo version. We all had to run revdep-rebuild once in awhile, for fixing dynamic linkage problems, but unfortunately revdep-rebuild cannot fix another kind of incompatibility, namely dynamic version check implemented in some packages. For instance, the recent openssl-0.9.8* update broke dev-libs/neon (and consequently subversion) because neon library isn't happy just by linking with libssl.so.0.9.7 but also check the libssl version when loads the ssl library. Another example is the subtle dependency between the pppd version and pppd plugins (net-dialup/pptpd needs to be rebuild every time you change PV of the net-dialup/ppp because pptpd builds a plugin for the ppp daemon). I reckon this could be solved by yet another *DEPEND variable. The only atoms accepted by this variable would be "CATEGORY/PN". Every time when a package gets updated from PV1 to PV2 (distinct versions, revisions will not count), portage will automatically re-emerge those packages that depend on it. Thoughts? [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 252 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 10:35 [gentoo-dev] RFC about another *DEPEND variable Alin Nastac @ 2006-09-21 11:38 ` Luca Barbato 2006-09-21 11:59 ` Brian Harring 2006-09-21 12:05 ` Alin Nastac 2006-09-21 13:50 ` Mike Frysinger 1 sibling, 2 replies; 48+ messages in thread From: Luca Barbato @ 2006-09-21 11:38 UTC (permalink / raw To: gentoo-dev Alin Nastac wrote: > I reckon this could be solved by yet another *DEPEND variable. The only > atoms accepted by this variable would be "CATEGORY/PN". Every time when > a package gets updated from PV1 to PV2 (distinct versions, revisions > will not count), portage will automatically re-emerge those packages > that depend on it. > > Thoughts? > It would require revdep resolution on emerge... how painful would be? lu -- Luca Barbato Gentoo/linux Gentoo/PPC http://dev.gentoo.org/~lu_zero -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 11:38 ` Luca Barbato @ 2006-09-21 11:59 ` Brian Harring 2006-09-21 13:52 ` Mike Frysinger 2006-09-21 14:38 ` Alin Nastac 2006-09-21 12:05 ` Alin Nastac 1 sibling, 2 replies; 48+ messages in thread From: Brian Harring @ 2006-09-21 11:59 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 2330 bytes --] On Thu, Sep 21, 2006 at 01:38:59PM +0200, Luca Barbato wrote: > Alin Nastac wrote: > >I reckon this could be solved by yet another *DEPEND variable. The only > >atoms accepted by this variable would be "CATEGORY/PN". Every time when > >a package gets updated from PV1 to PV2 (distinct versions, revisions > >will not count), portage will automatically re-emerge those packages > >that depend on it. > > > >Thoughts? > > > > It would require revdep resolution on emerge... how painful would be? Off the top of my head, adding revdeps (period) for unmerge functionality (fex) is the harder part; slipping something of this sort in is just a logic tweak. The problem with this proposal however is that it's attempting automatic revdep based off of version; _any_ non-rev version bump is way too rebuild happy. Proposal I was pushing a while back was addition of a metadata key; it's not exactly .so version, but pretty close- a _manually_ maintained counter var in the ebuild that represents the abi compatibility for that packages versions. Example would be openssl-0.9.7, you stick BINCOMPAT=0.9.7 in it, in openssl-0.9.8, you stick BINCOMPAT=0.9.8 in it, for a replace op the resolver sees that it's breaking compatibility and knows to rebuild any revdeps. Why have the explicit var? Because 0.9.7a through 0.9.7c may all be compatible, but 0.9.7d isn't. If you force an automatic algo that tries to (effectively) guess, you get a lot of rebuilds through a,b,c, end result being folks likely update less because it becomes a bigger pain in the ass. There is one flaw with this though; packages can provide both libraries _and_ binaries. Our dependencies don't represent whether the dep is actual linkage, or just commandline consuming, so (using the openssl example) any package that invokes openssl via the commandline to do a few simple chksum ops gets rebuilt, despite the fact it wasn't affected by linkage change ups. So... short version, at least what jstubbs/marius/myself hashed out in irc a long while back, need binding dependencies and actual tracking of the lib breakage in the metadata. Alternative to shoving an extra key in would be extending slot rules, but that can be somewhat ugly. My 2 cents, for what its worth. ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 11:59 ` Brian Harring @ 2006-09-21 13:52 ` Mike Frysinger 2006-09-21 14:04 ` Brian Harring ` (2 more replies) 2006-09-21 14:38 ` Alin Nastac 1 sibling, 3 replies; 48+ messages in thread From: Mike Frysinger @ 2006-09-21 13:52 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 660 bytes --] On Thursday 21 September 2006 07:59, Brian Harring wrote: > Why have the explicit var? Because 0.9.7a through 0.9.7c may all be > compatible, but 0.9.7d isn't. If you force an automatic algo that > tries to (effectively) guess, you get a lot of rebuilds through a,b,c, > end result being folks likely update less because it becomes a bigger > pain in the ass. if it isnt compatible then it shouldnt have the same SONAME, simple as that ... that is after all the point of encoding the ABI version number into the SONAME forcing devs to maintain a manual var which is basically duplicating the SONAME smells like maintenance nightmare -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 13:52 ` Mike Frysinger @ 2006-09-21 14:04 ` Brian Harring 2006-09-21 14:43 ` Mike Frysinger 2006-09-21 14:14 ` Donnie Berkholz 2006-09-21 14:56 ` Duncan Coutts 2 siblings, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-21 14:04 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1359 bytes --] On Thu, Sep 21, 2006 at 09:52:27AM -0400, Mike Frysinger wrote: > On Thursday 21 September 2006 07:59, Brian Harring wrote: > > Why have the explicit var? Because 0.9.7a through 0.9.7c may all be > > compatible, but 0.9.7d isn't. If you force an automatic algo that > > tries to (effectively) guess, you get a lot of rebuilds through a,b,c, > > end result being folks likely update less because it becomes a bigger > > pain in the ass. > > if it isnt compatible then it shouldnt have the same SONAME, simple as > that ... that is after all the point of encoding the ABI version number into > the SONAME > > forcing devs to maintain a manual var which is basically duplicating the > SONAME smells like maintenance nightmare I agree; while I'm labeling it ABI, includes both bad soname handling and seperate sonames. Re: forcing devs... the request was to fold revdep-rebuild into resolution; in other words, 3 options 1) situation gets ignored, stays as is 2) all packages are somehow fixed (ultra restrictive deps) to never require revdep-rebuild 3) revdep-rebulid capabilities get inline into resolution. Feel free to point out a 4th option if I'm missing it, but for the request, that's what exists afaict; meanwhile, stating that pkgs are being stupid, while true, doesn't actually solve the issue :) ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:04 ` Brian Harring @ 2006-09-21 14:43 ` Mike Frysinger 2006-09-21 15:08 ` Brian Harring 0 siblings, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-21 14:43 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 959 bytes --] On Thursday 21 September 2006 10:04, Brian Harring wrote: > I agree; while I'm labeling it ABI, includes both bad soname handling > and seperate sonames. those people should be smacked (for the interest of disclosure, i have violated the "bad soname" rule for the sake of following upstream) > Feel free to point out a 4th option if I'm missing it, but for the > request, that's what exists afaict; meanwhile, stating that pkgs are > being stupid, while true, doesn't actually solve the issue :) 4) portage maintains a list of ABI SONAMEs in use and does not unmerge the library until all consumers are gone i'm referring to the specific file of course, not anything else in the package ... so integrating the hack eutils.eclass:preserve_old_lib() into portage so it isnt a hack (not a knock against the current implementation here; it's always going to be a hack until portage manages proper unmerging of the ABI library) -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:43 ` Mike Frysinger @ 2006-09-21 15:08 ` Brian Harring 2006-09-23 10:20 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-21 15:08 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1694 bytes --] On Thu, Sep 21, 2006 at 10:43:11AM -0400, Mike Frysinger wrote: > On Thursday 21 September 2006 10:04, Brian Harring wrote: > > I agree; while I'm labeling it ABI, includes both bad soname handling > > and seperate sonames. > > those people should be smacked (for the interest of disclosure, i have > violated the "bad soname" rule for the sake of following upstream) > > > Feel free to point out a 4th option if I'm missing it, but for the > > request, that's what exists afaict; meanwhile, stating that pkgs are > > being stupid, while true, doesn't actually solve the issue :) > > 4) portage maintains a list of ABI SONAMEs in use and does not unmerge the > library until all consumers are gone > > i'm referring to the specific file of course, not anything else in the > package ... so integrating the hack eutils.eclass:preserve_old_lib() into > portage so it isnt a hack (not a knock against the current implementation > here; it's always going to be a hack until portage manages proper unmerging > of the ABI library) The reason folks aren't talking about using NEEDED is that NEEDED data is generated _after_ building; getting the info into the resolver up front allows for a helluva lot more options, and makes stuff like ensuring you have all sources required downloaded *prior* actually simple to do, rather then inserting recalculating hacks into the resolver. Clarifying the 'recalculating', what you're suggesting is effectivelly unbounded resolution, re-calculating at each step. That route is *very* nasty since you can't gurantee up front the resolution will work, let alone ensuring the bugger doesn't go cyclic. ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 15:08 ` Brian Harring @ 2006-09-23 10:20 ` Mike Frysinger 2006-09-23 13:14 ` Brian Harring 0 siblings, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-23 10:20 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1551 bytes --] On Thursday 21 September 2006 11:08, Brian Harring wrote: > On Thu, Sep 21, 2006 at 10:43:11AM -0400, Mike Frysinger wrote: > > i'm referring to the specific file of course, not anything else in the > > package ... so integrating the hack eutils.eclass:preserve_old_lib() into > > portage so it isnt a hack (not a knock against the current implementation > > here; it's always going to be a hack until portage manages proper > > unmerging of the ABI library) > > The reason folks aren't talking about using NEEDED is that NEEDED data > is generated _after_ building; as well it should be ... trying to enumerate the linking ABI possibilities before hand is not doable and not worth wasting the time of maintainers when it can be automated > getting the info into the resolver > up front allows for a helluva lot more options, and makes stuff like > ensuring you have all sources required downloaded *prior* actually > simple to do, rather then inserting recalculating hacks into the > resolver. rather than integrating it all into the resolver in a one-pass system, a two pass system would work: - build all the packages requested - after each package, if an ABI library is being removed, check to see if it is needed by any other package. if it is needed, record it and preserve it and move on - once all the packages requested have been merged, you start the second phase and calculate everything that needs to be rebuilt. as ABI libs are no longer needed on a system, portage can scrub them out -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 10:20 ` Mike Frysinger @ 2006-09-23 13:14 ` Brian Harring 2006-09-23 13:50 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-23 13:14 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 3152 bytes --] On Sat, Sep 23, 2006 at 06:20:44AM -0400, Mike Frysinger wrote: > On Thursday 21 September 2006 11:08, Brian Harring wrote: > > On Thu, Sep 21, 2006 at 10:43:11AM -0400, Mike Frysinger wrote: > > > i'm referring to the specific file of course, not anything else in the > > > package ... so integrating the hack eutils.eclass:preserve_old_lib() into > > > portage so it isnt a hack (not a knock against the current implementation > > > here; it's always going to be a hack until portage manages proper > > > unmerging of the ABI library) > > > > The reason folks aren't talking about using NEEDED is that NEEDED data > > is generated _after_ building; > > as well it should be ... trying to enumerate the linking ABI possibilities > before hand is not doable and not worth wasting the time of maintainers when > it can be automated > > > getting the info into the resolver > > up front allows for a helluva lot more options, and makes stuff like > > ensuring you have all sources required downloaded *prior* actually > > simple to do, rather then inserting recalculating hacks into the > > resolver. > > rather than integrating it all into the resolver in a one-pass system, a two > pass system would work: > - build all the packages requested > - after each package, if an ABI library is being removed, check to see if it > is needed by any other package. if it is needed, record it and preserve it > and move on You're assuming that after the merge of the pkg that breaks compatibility, building is actually _still_ possible for the depends. We don't classify our deps as actual build depends vs link depends; as such trying to (essentially) "patch things up after" allow for the scenario where merging breaks the toolchain, thus building isn't possible. Because we don't classify the type of build time dep, that means each DEPEND match must have it's run time depends (RDEPEND) satisfied prior to being usable as a DEPEND; that right there punches a whole in the "delay till the end" approach, and is a good example of what I mean when I say "this is unbounded resolution"; the only way to solve it is to redo the resolution between finished building and merging the pkg to determine if it will break any required DEPENDS for later steps. > - once all the packages requested have been merged, you start the second > phase and calculate everything that needs to be rebuilt. as ABI libs are no > longer needed on a system, portage can scrub them out "as ABI libs are no longer needed on a system", phrasing of that implies you're suggesting that portage should leave the older package in place till it's updated all revdeps, then wipe it. Which is fairly nasty, especially if you factor in the user potential of ctrl+c'ing it. Finally, if I'm interpretting your statement there correctly, still isn't guranteed to work- just having the lib around doesn't mean that the older package is left in a working state with the new partially merged over it, only way that would work is if the two were slotted (indicating they could coexist on disk). ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 13:14 ` Brian Harring @ 2006-09-23 13:50 ` Mike Frysinger 2006-09-23 13:59 ` Mike Frysinger 2006-09-23 14:30 ` Brian Harring 0 siblings, 2 replies; 48+ messages in thread From: Mike Frysinger @ 2006-09-23 13:50 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1150 bytes --] On Saturday 23 September 2006 09:14, Brian Harring wrote: > You're assuming that after the merge of the pkg that breaks > compatibility, building is actually _still_ possible for the depends. of course i am; i just said that portage would make sure to not unmerge any ABI lib still in use > We don't classify our deps as actual build depends vs link depends; as > such trying to (essentially) "patch things up after" allow for the > scenario where merging breaks the toolchain, thus building isn't > possible. huh ? RDEPEND is linktime ... see my statement above > > - once all the packages requested have been merged, you start the second > > phase and calculate everything that needs to be rebuilt. as ABI libs are > > no longer needed on a system, portage can scrub them out > > "as ABI libs are no longer needed on a system", phrasing of that > implies you're suggesting that portage should leave the older package > in place till it's updated all revdeps, then wipe it. no i am not; read my previous e-mails where i said it would leave behind the 1 ABI lib required ... aka whatever is encoded in SONAME -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 13:50 ` Mike Frysinger @ 2006-09-23 13:59 ` Mike Frysinger 2006-09-23 14:30 ` Brian Harring 1 sibling, 0 replies; 48+ messages in thread From: Mike Frysinger @ 2006-09-23 13:59 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 860 bytes --] On Saturday 23 September 2006 09:50, Mike Frysinger wrote: > On Saturday 23 September 2006 09:14, Brian Harring wrote: > > We don't classify our deps as actual build depends vs link depends; as > > such trying to (essentially) "patch things up after" allow for the > > scenario where merging breaks the toolchain, thus building isn't > > possible. > > huh ? RDEPEND is linktime ... see my statement above lemme rephrase ... you keep the ABI SONAME lib around until all packages are done with it; this does not affect any other package (including upgrades to the same package) as the ABI filename is unique in the filesystem it is not used at linktime because it does not provide a linkable file ... it merely provides the library used at runtime so you can upgrade on the fly as the old ABI lib does not conflict with anything -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 13:50 ` Mike Frysinger 2006-09-23 13:59 ` Mike Frysinger @ 2006-09-23 14:30 ` Brian Harring 2006-09-24 3:31 ` Mike Frysinger 1 sibling, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-23 14:30 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 3868 bytes --] On Sat, Sep 23, 2006 at 09:50:12AM -0400, Mike Frysinger wrote: > On Saturday 23 September 2006 09:14, Brian Harring wrote: > > You're assuming that after the merge of the pkg that breaks > > compatibility, building is actually _still_ possible for the depends. > > of course i am; i just said that portage would make sure to not unmerge any > ABI lib still in use dlopen? How does this fix openssl horkage? (bad soname handling) Also... what do we do for python/perl (*-updater scripts in general) where a change in a pkg state means we have to rebuild the revdeps? What you're suggesting works for strictly linkage; still think this shouuld work for the general problem rather then just one subset. > > We don't classify our deps as actual build depends vs link depends; as > > such trying to (essentially) "patch things up after" allow for the > > scenario where merging breaks the toolchain, thus building isn't > > possible. > > huh ? RDEPEND is linktime ... see my statement above RDEPEND is execution requirements; to use the binary, this is what needs to be in the graph. Clarifying my statement; we don't break our DEPEND down into "this is what is executed in building the package" (toolchain), vs "this is the crap the binaries we build against need avail to be linked against", literally what winds up as -l args. If punting the old lib (as I assumed), means we would potentially be making certain DEPEND atoms unusable if they're required in an execution context (rather then just winding up as a -l arg). So... ignore that bit since you're talking about lingering files. > > > - once all the packages requested have been merged, you start the second > > > phase and calculate everything that needs to be rebuilt. as ABI libs are > > > no longer needed on a system, portage can scrub them out > > > > "as ABI libs are no longer needed on a system", phrasing of that > > implies you're suggesting that portage should leave the older package > > in place till it's updated all revdeps, then wipe it. > > no i am not; read my previous e-mails where i said it would leave behind the 1 > ABI lib required ... aka whatever is encoded in SONAME Yeah, missed the "presvered" (woot for 5am wakeup). In that case, wouldn't mind a response to the "what about ctrl+c during the run?" The potential for orphaning there sucks; recording the old library in the new version sucks also since it complicates the merge process, that lib *must* be removed else it's a potential collision-protect minefield. Finally, even if the lib is temporarily left behind, this solution doesn't gurantee the library actually would *work* still- it only can work if the lib is standalone from the rest of the pkg and doesn't rely on any external data from the pkg. Example would be pkg foobar that internally has libconvience, used by it's libs but not externally linked, contains (oddly enough) convience bits shared across foobars libraries. libconvience is *not* to be externally linked against, consumers must access the other libs (say libfoo); any soname bumps to libfoo, the old version gets broke in the process despite due to it linking internally against an unversioned so. Granted, semi retarded, but gnomes libegg comes to mind as a potential case of this. Basically trying to point out that what you're proposing only works in a subset of the cases revdep must deal with, and that revdep itself doesn't deal with *all* situations as is; hence BINCOMPAT as a way to try and shift it under maintainers control. Maintainence of it *should* be pretty simple also; for sane upstream soname handling, you just bump it with the majors; for the rest, its a knob that can be fiddled to at least give up front warning of the issue. ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 14:30 ` Brian Harring @ 2006-09-24 3:31 ` Mike Frysinger 2006-09-25 18:16 ` Brian Harring 0 siblings, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-24 3:31 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 4498 bytes --] On Saturday 23 September 2006 10:30, Brian Harring wrote: > dlopen? we already said that this will need a new depend variable > How does this fix openssl horkage? (bad soname handling) it wont, but such things are broken regardless outside of Gentoo ... and trying to accommodate something that happens every three blue moons at the cost of developer time is not worth it > Also... what do we do for python/perl (*-updater scripts in general) > where a change in a pkg state means we have to rebuild the revdeps? my solution does not address this, but what you're proposing would over address this ... how do you know when a package needs to be rebuilt (a perl module) or rebuilding is a waste of time (a package installs perl scripts that execute `perl` and nothing else) > What you're suggesting works for strictly linkage; still think this > shouuld work for the general problem rather then just one subset. yes, i am addressing what i see to be the most critical issue and the easiest to break a user's system > Clarifying my statement; we don't break our DEPEND down into "this is > what is executed in building the package" (toolchain), DEPEND > vs "this is the > crap the binaries we build against need avail to be linked against", > literally what winds up as -l args. RDEPEND > If punting the old lib (as I assumed), means we would potentially be > making certain DEPEND atoms unusable if they're required in an > execution context (rather then just winding up as a -l arg). no ... lemme give a perfect example. user has openssl-0.9.7j installed and they upgrade to openssl-0.9.8c ... the old version provided SONAME files libcrypto.so.0.9.7 and libssl.so.0.9.7 while the new one provides SONAME files libcrypto.so.0.9.8 and libssl.so.0.9.8 everything from openssl-0.9.7j is unmerged except for the two files libcrypto.so.0.9.7 and libssl.so.0.9.7. openssl-0.9.8c, being a different ABI, does not provide these files thus there is no clash. portage keeps track of libcrypto.so.0.9.7 and libssl.so.0.9.7 and once no more packages have NEEDED entries for these, will silently clean them out openssl is odd in that it encodes .x.y.z version into the ABI ... if we use the more common example with say expat, older versions install libexpat.so.0.1, libexpat.so.0.2, libexpat.so.0.3, etc... but the ABI SONAME is still just libexpat.so.0. when the next major version of expat comes out, the SONAME is bumped to libexpat.so.1 and portage needs to keep around the last libexpat.so.0 > In that case, wouldn't mind a response to the "what about ctrl+c > during the run?" The potential for orphaning there sucks; recording > the old library in the new version sucks also since it complicates the > merge process, that lib *must* be removed else it's a potential > collision-protect minefield. - portage merges new version 2 to $ROOT - system now has version 1 and version 2 in $ROOT - portage starts to clean out version 1 from $ROOT - do not fully trim version 1's vdb until version 2 has been updated with the new information so ctrl+c at any point and so what ? you dont remove old files until new files are fully placed and you can resume at any point > Finally, even if the lib is temporarily left behind, this solution > doesn't gurantee the library actually would *work* still- it only can > work if the lib is standalone from the rest of the pkg and doesn't > rely on any external data from the pkg. we're talking about preserving the system long enough to rebuild things; we're not talking about keeping the system forever in a sane state. i would guess that this corner case is not the norm and thus we can ignore it as the situation is still a lot better than what we have now: $ foo foo: error while loading shared libraries: libbar.so.1: cannot open shared object file: No such file or directory awesome > Basically trying to point out that what you're proposing only works in > a subset of the cases revdep must deal with, and that revdep itself > doesn't deal with *all* situations as is; hence BINCOMPAT as a way to > try and shift it under maintainers control. revdep-rebuild doesnt take into consideration any of the issues you raised and forcing maintainers to always track BINCOMPAT is unwieldy ... a single package provides multiple SONAMEs ? bitrot ? SONAME is dynamic based upon architecture or USE flags ? -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-24 3:31 ` Mike Frysinger @ 2006-09-25 18:16 ` Brian Harring 2006-09-27 6:24 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-25 18:16 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 8846 bytes --] On Sat, Sep 23, 2006 at 11:31:12PM -0400, Mike Frysinger wrote: > On Saturday 23 September 2006 10:30, Brian Harring wrote: > > dlopen? > > we already said that this will need a new depend variable > > > How does this fix openssl horkage? (bad soname handling) > > it wont, but such things are broken regardless outside of Gentoo ... and > trying to accommodate something that happens every three blue moons at the > cost of developer time is not worth it Bad soname handling is just *part* of what BINCOMPAT could do; it's not the sole reason for it's existance, as such it's not quite right dismissing it just because it addresses a rarity the NEEDED approach doesn't. :) > > Also... what do we do for python/perl (*-updater scripts in general) > > where a change in a pkg state means we have to rebuild the revdeps? > > my solution does not address this, but what you're proposing would over > address this ... how do you know when a package needs to be rebuilt (a perl > module) or rebuilding is a waste of time (a package installs perl scripts > that execute `perl` and nothing else) Original email stated that 'binding deps' would be required for that, marking deps in some way such that it indicates they're sensitive to changes in BINCOMPAT of the match. *IF* we actually had that in place it would enable detecting and rebuilding c++ code whenever gcc pulls its next c++ abi change with appropriate deps in place (iow, kill off the implicit system deps). Back to your example, if it's just a caller of it, it's not binding; now if it were a perl module that sticks its modules into the perl installation, yes, binding (it needs to rebuild to merge to the new location). > > What you're suggesting works for strictly linkage; still think this > > shouuld work for the general problem rather then just one subset. > > yes, i am addressing what i see to be the most critical issue and the easiest > to break a user's system > > > Clarifying my statement; we don't break our DEPEND down into "this is > > what is executed in building the package" (toolchain), > > DEPEND > > > vs "this is the > > crap the binaries we build against need avail to be linked against", > > literally what winds up as -l args. > > RDEPEND If that were the case, why do we have libraries listed in DEPEND then? DEPEND is (and always has been) "this is the crap I need merged to be able to build an install image of myself", RDEPEND is (and always has been) "this is the crap I need on the fs to actually run my binaries/libs" and PDEPEND is around to cover up portages resolver, but moreso the trees mostly whacked deps. This is why eradicator, solar, and you were discussing splitting link depends out of DEPEND for saner CHOST/CTARGET support around a year back also. Semantics at this point, but RDEPEND does *not* need to be merged to build a pkg, only DEPEND; it's never been any other way. > > If punting the old lib (as I assumed), means we would potentially be > > making certain DEPEND atoms unusable if they're required in an > > execution context (rather then just winding up as a -l arg). > > no ... lemme give a perfect example. > > user has openssl-0.9.7j installed and they upgrade to openssl-0.9.8c ... the > old version provided SONAME files libcrypto.so.0.9.7 and libssl.so.0.9.7 > while the new one provides SONAME files libcrypto.so.0.9.8 and > libssl.so.0.9.8 > > everything from openssl-0.9.7j is unmerged except for the two files > libcrypto.so.0.9.7 and libssl.so.0.9.7. openssl-0.9.8c, being a different > ABI, does not provide these files thus there is no clash. > > portage keeps track of libcrypto.so.0.9.7 and libssl.so.0.9.7 and once no more > packages have NEEDED entries for these, will silently clean them out > > openssl is odd in that it encodes .x.y.z version into the ABI ... if we use > the more common example with say expat, older versions install > libexpat.so.0.1, libexpat.so.0.2, libexpat.so.0.3, etc... but the ABI SONAME > is still just libexpat.so.0. when the next major version of expat comes out, > the SONAME is bumped to libexpat.so.1 and portage needs to keep around the > last libexpat.so.0 > > > In that case, wouldn't mind a response to the "what about ctrl+c > > during the run?" The potential for orphaning there sucks; recording > > the old library in the new version sucks also since it complicates the > > merge process, that lib *must* be removed else it's a potential > > collision-protect minefield. > > - portage merges new version 2 to $ROOT > - system now has version 1 and version 2 in $ROOT > - portage starts to clean out version 1 from $ROOT > - do not fully trim version 1's vdb until version 2 has been updated with the > new information > > so ctrl+c at any point and so what ? you dont remove old files until new > files are fully placed and you can resume at any point Bleh, this is getting back to exactly my point that it's unbounded resolution. To support this, every step of execution would require scanning for dangling nodes to punt; aside from invalidating -p's output it *still* is a collision-protect hit. It also involves changing vdb nodes from "installed and usable" to "installed/usable" or "lingering", which makes things messier for 1) resolver 2) for --info 3) for has_version 4) for built_with_use 5) glsa scanning There are more, but the point is that there isn't any concept of "half merged" packages for portage; introducing it gums things up pretty heavily, beyond the support NEEDED requires to actually mangle the half merged nodes. > > Finally, even if the lib is temporarily left behind, this solution > > doesn't gurantee the library actually would *work* still- it only can > > work if the lib is standalone from the rest of the pkg and doesn't > > rely on any external data from the pkg. > > we're talking about preserving the system long enough to rebuild things; we're > not talking about keeping the system forever in a sane state. > > i would guess that this corner case is not the norm and thus we can ignore it > as the situation is still a lot better than what we have now: > $ foo > foo: error while loading shared libraries: libbar.so.1: cannot open shared > object file: No such file or directory > > awesome So... NEEDED doesn't support bad soname handling, doesn't have a graph based gurantee that the remaining bits actually would work (bits above), and requires making merging *massively* slower (a NEEDED scan per vdb change effectively), finally emerge -p results no longer being accurate to what will be undertaken. Ways to speed it up, but frankly NEEDED just plain sucks. Its the route towards openembeddeds resolution, rather then up front calculation portage/rpm resolvers/apt all do. > > Basically trying to point out that what you're proposing only works in > > a subset of the cases revdep must deal with, and that revdep itself > > doesn't deal with *all* situations as is; hence BINCOMPAT as a way to > > try and shift it under maintainers control. > > revdep-rebuild doesnt take into consideration any of the issues you raised > > and forcing maintainers to always track BINCOMPAT is unwieldy ... a single > package provides multiple SONAMEs ? bitrot ? SONAME is dynamic based upon > architecture or USE flags ? Tracking BINCOMPAT should *not* be that hard. You hit a major version? Bump the bincompat. Not that fricking hard really; if dealing in a package that is pissy about it's so handling, well, you ought to know your inducing wide spread breakage for a rename already- so again, not that hard. The only case that is slightly funky is if the so doesn't change name, but changes abi- BINCOMPAT at least enables notifying the manager that a rebuild is needed, NEEDED based approach is incapable of it. Hell, automate a tool to determine if it's a BINCOMPAT bump via NEEDED data (folks should be compiling the pkg anyways), point is it's mainly common sense for maintainenance of it. The NEEDED approach doesn't really fix much frankly; from a complexity standpoint, leaving it in revdep-rebuild is *far* better then trying to integrate the crap you're requesting, both from an implementation and from a long standing maintainence view (unbounded resolution is *really* not the direction you want to go). The solution (imo) should be one that enables fixing the *class* of problem without making matters worse. Yes, if the solution can be automated without flinging poo into the code, I'm for it; that said I know what the implementation is going to have to look like, and it's *nasty*. ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-25 18:16 ` Brian Harring @ 2006-09-27 6:24 ` Mike Frysinger 2006-09-27 7:54 ` Brian Harring 0 siblings, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-27 6:24 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 2991 bytes --] On Monday 25 September 2006 14:16, Brian Harring wrote: > Bad soname handling is just *part* of what BINCOMPAT could do; it's > not the sole reason for it's existance, as such it's not quite right > dismissing it just because it addresses a rarity the NEEDED approach > doesn't. :) i dismiss it as being a real advantage and/or argument for taking BINCOMPAT over an automated NEEDED scan as i said, if you have changed ABI without an ABI bump, then the upstream package maintainer is screwing everyone who uses the package, not just Gentoo ... so perhaps we should be talking to them to get the situation resolved for all consumers, not just Gentoo > *IF* we actually had that in place it would enable detecting and > rebuilding c++ code whenever gcc pulls its next c++ abi change with > appropriate deps in place (iow, kill off the implicit system deps). scanelf already does this ... the only time you need to rebuild is when the ABI breaks ... aka libstdc++.so.5 -> libstdc++.so.6 > If that were the case, why do we have libraries listed in DEPEND then? because i have a short memory > Bleh, this is getting back to exactly my point that it's unbounded > resolution. To support this, every step of execution would require > scanning for dangling nodes to punt; aside from invalidating -p's > output it *still* is a collision-protect hit. when the package upgrade detects an ABI change you recalculate the packages that need to be rebuilt ... dangling nodes get recorded in the new package and considering these old files are not detrimental to the health of the system, you can do such a cleanup once at the end of the emerge > It also involves changing vdb nodes from "installed and usable" to > "installed/usable" or "lingering" no ... the old versions get merged into the new one as their existence is purely hidden > Tracking BINCOMPAT should *not* be that hard. it's one more thing to keep track of and considering all of the possibilities i outlined, a single maintainer can easily lose his sanity ... or you force wasted rebuilds on people when it's only needed in some circumstances > Hell, automate a tool to determine if it's a BINCOMPAT bump via NEEDED > data (folks should be compiling the pkg anyways), point is it's mainly > common sense for maintainenance of it. and when are you going to run that tool ? when you bump the package ? so now the maintainer has to test it on all the KEYWORDed arches with all the USE combos, or de-KEYWORD it and make the arch maintainers test it ? or dig through the source code line by line and hope to catch all such cases by hand/eye ? > Yes, if the solution can be automated without flinging poo into the > code, I'm for it; that said I know what the implementation is going to > have to look like, and it's *nasty*. i dont think either of our solutions are satisfactory for all presented cases; a hybrid model would be needed -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-27 6:24 ` Mike Frysinger @ 2006-09-27 7:54 ` Brian Harring 2006-09-30 18:01 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-27 7:54 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 7820 bytes --] On Wed, Sep 27, 2006 at 02:24:41AM -0400, Mike Frysinger wrote: > On Monday 25 September 2006 14:16, Brian Harring wrote: > > Bad soname handling is just *part* of what BINCOMPAT could do; it's > > not the sole reason for it's existance, as such it's not quite right > > dismissing it just because it addresses a rarity the NEEDED approach > > doesn't. :) > > i dismiss it as being a real advantage and/or argument for taking BINCOMPAT > over an automated NEEDED scan > > as i said, if you have changed ABI without an ABI bump, then the upstream > package maintainer is screwing everyone who uses the package, not just > Gentoo ... so perhaps we should be talking to them to get the situation > resolved for all consumers, not just Gentoo Happens however; afaik, we also weren't monkey patching ssl in the past to preserve the abi either so it still is valid (although rare if upstream is behaving) scenario. > > *IF* we actually had that in place it would enable detecting and > > rebuilding c++ code whenever gcc pulls its next c++ abi change with > > appropriate deps in place (iow, kill off the implicit system deps). > > scanelf already does this ... the only time you need to rebuild is when the > ABI breaks ... aka libstdc++.so.5 -> libstdc++.so.6 > > > If that were the case, why do we have libraries listed in DEPEND then? > > because i have a short memory > > > Bleh, this is getting back to exactly my point that it's unbounded > > resolution. To support this, every step of execution would require > > scanning for dangling nodes to punt; aside from invalidating -p's > > output it *still* is a collision-protect hit. > > when the package upgrade detects an ABI change you recalculate the packages > that need to be rebuilt ... Reiterating, this screws over any form of up front calculation; dialup users/per minute connections can't rely on emerge -f to actually fetch all involved sources, -p results ain't guranteed valid, parallelization must now lock at each threads merge on the off chance a recalc is forced. This is a rather huge step *backwards*; it actually puts us at a similar level to autopackages 'resolver'. The approach would have to solve it perfectly imo for it to even be realistically considered. For your proposal to fly, it must address this somehow imo which isn't possible from where I'm sitting. > dangling nodes get recorded in the new package and considering these old files > are not detrimental to the health of the system, you can do such a cleanup > once at the end of the emerge It's not orphaning files, but your scheme doesn't work for any form of interruption; failed builds, user intervention, etc, they all can leave the lib stuck in the new contents. Dealing with that possibility means the manager has to maintain on disk a list of the refcount of each dangling libs to decrement, unmerge has to modify said list, etc. Further nastyness in short. > > It also involves changing vdb nodes from "installed and usable" to > > "installed/usable" or "lingering" > > no ... the old versions get merged into the new one as their existence is > purely hidden How exactly are they going to be hidden? A new file? If so, backwards compatibility for vdb for transitioning in such a support has to be addressed. > > Tracking BINCOMPAT should *not* be that hard. > > it's one more thing to keep track of and considering all of the possibilities > i outlined, a single maintainer can easily lose his sanity ... or you force > wasted rebuilds on people when it's only needed in some circumstances How exactly is this forcing wasted rebuilds? You're stating that maintainers are going to bump it willy nilly. As I said, it is a key that would be bumped *as needed*, and would only affected pkgs that specified that node as a binding dep (specially marked atom). Seriously, maintainers ought to know *now* when they're forcing a revdep on folks systems, I'm not seeing the massive overhead from pushing that info into a var, nor am I seeing mass forced useless rebuilds. What I *am* seeing is one cluster fuck done to resolution and some nasty side affects you're glossing over. Invalidating -p's output opens up some nasty issues. To be fair, one claimed con could be that it is one more knob maintainers have to fool with, although counter is that they should already know about the issue (see dev quiz about "what should be done when bumping a lib" for an example). > > Hell, automate a tool to determine if it's a BINCOMPAT bump via NEEDED > > data (folks should be compiling the pkg anyways), point is it's mainly > > common sense for maintainenance of it. > > and when are you going to run that tool ? when you bump the package ? One would hope that when bumping a package, the dev actually attempts to *compile* the damn thing. Theres your opportunity to run a check, hell integrate it as a feature into portage that does the check for soname change. Gurantee that mod is far less intrusive, and far less error prone then what you're proposing. > so now > the maintainer has to test it on all the KEYWORDed arches with all the USE > combos, or de-KEYWORD it and make the arch maintainers test it ? Realistically, just the same as the NEEDED solution has holes, the maintaining dev can screw up and miss a BINCOMPAT bump. Difference is that they can do something for BINCOMPAT; hell, QA checks can be automated to catch missing BINCOMPAT bumps. Meanwhile, use flag affects: use deps reduce this heavily (toggle a flag off, graph is incomplete and the resolver 'fixes' it), so that's actually solvable *without* bincompat. KEYWORDed arches bit, bit unlikely that the underlying arch is actually going to screw with the soname, thus I'd want actual examples backing it up. Besides, again, for keywording, the dev *should* be compiling it, so there is a way to catch it :P. A revbump isn't going to break things unless the dev is introducing something intrusive, minor version bumps (1.1.0 to 1.1.1) shouldn't be again, introducing anything intrusive; regardless, dev should know the high level affects of their change Inducing a revdep-rebuild is definitely one of those high level changes they should be aware of *prior* to the bump. > or dig > through the source code line by line and hope to catch all such cases by > hand/eye ? Bit of FUD here, although I spose I'll just point out that if so's change as massively as you're implying above, the affects on -p are that much worse. > > Yes, if the solution can be automated without flinging poo into the > > code, I'm for it; that said I know what the implementation is going to > > have to look like, and it's *nasty*. > > i dont think either of our solutions are satisfactory for all presented cases; > a hybrid model would be needed bind the checks in as a QA measure, enabled via FEATURES=stricter, used to maintain a metadata var. Keep in mind I'm not claiming that implementing the binding deps modification is all that simple for portage; what I'm pushing here is a general solution that can be abused for more then just soname, *while* not cluster fucking the resolver execution to hell and preserving bounded resolution. Finally, anyone got a general list of revdep events for the tree? Literally, pkg x version y forced a rebuild. revdep is annoying, but stats would be useful to actually evaluate the seperate proposals; related, getting stats for how often the various updaters were required to be ran for a particular pkgs upgrade would be useful in evaluating that particular gap NEEDED has. ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-27 7:54 ` Brian Harring @ 2006-09-30 18:01 ` Mike Frysinger 2006-09-30 19:34 ` Brian Harring 0 siblings, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-30 18:01 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 7271 bytes --] On Wednesday 27 September 2006 03:54, Brian Harring wrote: > On Wed, Sep 27, 2006 at 02:24:41AM -0400, Mike Frysinger wrote: > > as i said, if you have changed ABI without an ABI bump, then the upstream > > package maintainer is screwing everyone who uses the package, not just > > Gentoo ... so perhaps we should be talking to them to get the situation > > resolved for all consumers, not just Gentoo > > Happens however; afaik, we also weren't monkey patching ssl in the > past to preserve the abi either so it still is valid (although rare if > upstream is behaving) scenario. we've never monkey patched ssl so i dont really know what you're referring to > > > Bleh, this is getting back to exactly my point that it's unbounded > > > resolution. To support this, every step of execution would require > > > scanning for dangling nodes to punt; aside from invalidating -p's > > > output it *still* is a collision-protect hit. > > > > when the package upgrade detects an ABI change you recalculate the > > packages that need to be rebuilt ... > > Reiterating, this screws over any form of up front calculation; > dialup users/per minute connections can't rely on emerge -f to > actually fetch all involved sources, -p results ain't guranteed > valid, parallelization must now lock at each threads merge on the off > chance a recalc is forced. it does indeed prevent full up front calculation. we can always make the behavior configurable; revdep on the fly or allow people to break it up. the key being that their system will still continue to function as the ABI lib has been preserved automagically > > dangling nodes get recorded in the new package and considering these old > > files are not detrimental to the health of the system, you can do such a > > cleanup once at the end of the emerge > > It's not orphaning files, but your scheme doesn't work for any form of > interruption; failed builds, user intervention, etc, they all can > leave the lib stuck in the new contents. huh ? i outlined in a previous e-mail how by simply ordering the operations sanely, there is no race condition > Dealing with that possibility means the manager has to maintain on > disk a list of the refcount of each dangling libs to decrement, > unmerge has to modify said list, etc. which is already being done in the NEEDED file ... funny how unpainless it is to generate that file > > > It also involves changing vdb nodes from "installed and usable" to > > > "installed/usable" or "lingering" > > > > no ... the old versions get merged into the new one as their existence is > > purely hidden > > How exactly are they going to be hidden? A new file? If so, > backwards compatibility for vdb for transitioning in such a support > has to be addressed. purely hidden from the standpoint of any new package trying to use it ... since you're only installing the runtime ABI library, you cannot link against it or utilize it any way other than existing files > > > Tracking BINCOMPAT should *not* be that hard. > > > > it's one more thing to keep track of and considering all of the > > possibilities i outlined, a single maintainer can easily lose his sanity > > ... or you force wasted rebuilds on people when it's only needed in some > > circumstances > > How exactly is this forcing wasted rebuilds? You're stating that > maintainers are going to bump it willy nilly. As I said, it is a key > that would be bumped *as needed*, and would only affected pkgs that > specified that node as a binding dep (specially marked atom). no, i mean for example scenarios where a package provides more than one library (say libfoo and libbar) and only one of those changes ABI values (say libfoo.0 -> libfoo.1). if another package links against just libbar, you've got a pointless rebuild. > Seriously, maintainers ought to know *now* when they're forcing a > revdep on folks systems, I'm not seeing the massive overhead from > pushing that info into a var, nor am I seeing mass forced useless > rebuilds. there's a ton of things maintainers ought to know ... pretty soon our package maintainers are going to have to be gods if they want to write an ebuild as they're going to have to know every detail about the package inside and out > Realistically, just the same as the NEEDED solution has holes, the > maintaining dev can screw up and miss a BINCOMPAT bump. Difference is > that they can do something for BINCOMPAT; hell, QA checks can be > automated to catch missing BINCOMPAT bumps. what's the difference ? in my scenario they dont have to do anything because the bump would have been caught automatically ? > KEYWORDed arches bit, bit unlikely that the underlying arch is > actually going to screw with the soname, thus I'd want actual examples > backing it up. how about libc.so from glibc and libgcc.so from gcc ? or would you like other packages ? > Besides, again, for keywording, the dev *should* be compiling it, so > there is a way to catch it :P. A revbump isn't going to break things > unless the dev is introducing something intrusive, minor version bumps > (1.1.0 to 1.1.1) shouldn't be again, introducing anything intrusive; > regardless, dev should know the high level affects of their change uhh, there is no such requirement at this time for revbumping on different arches ... currently we say the maintainer tests for his arches and leaves all the others as ~arch > Inducing a revdep-rebuild is definitely one of those high level > changes they should be aware of *prior* to the bump. and yet we look at our history of so many packages being bumped with ABI changes and users having broken-as-shit systems ... i'm accounting for the worst; not hoping for the best > > or dig > > through the source code line by line and hope to catch all such cases by > > hand/eye ? > > Bit of FUD here, although I spose I'll just point out that if so's > change as massively as you're implying above, the affects on -p are > that much worse. awesome, mark something you disagree with as FUD, problem solved. my point is that you can never know completely for sure the behavior of a package without digging through the entire source code. > bind the checks in as a QA measure, enabled via FEATURES=stricter, > used to maintain a metadata var. a lot of things fail already with FEATURES=stricter ... too bad we dont have per-package env var support as then maintainers could just flag all their own packages as stricter without wanting to shoot themselves due to everyone else's package failures > Literally, pkg x version y forced a rebuild. revdep is annoying, but > stats would be useful to actually evaluate the seperate proposals; > related, getting stats for how often the various updaters were > required to be ran for a particular pkgs upgrade would be useful in > evaluating that particular gap NEEDED has. any openssl version bump where the numerical value changes ... only the letter updates preserve ABI compat (0.9.7[a-z] are compat) expat-1.x -> expat-2.x iirc, tcl-8.3.x -> tcl-8.4.x readline-4.x -> readline-5.x ncurses-4.x -> ncurses-5.x -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-30 18:01 ` Mike Frysinger @ 2006-09-30 19:34 ` Brian Harring 2006-10-02 12:53 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-30 19:34 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 12725 bytes --] On Sat, Sep 30, 2006 at 02:01:08PM -0400, Mike Frysinger wrote: > On Wednesday 27 September 2006 03:54, Brian Harring wrote: > > > > Bleh, this is getting back to exactly my point that it's unbounded > > > > resolution. To support this, every step of execution would require > > > > scanning for dangling nodes to punt; aside from invalidating -p's > > > > output it *still* is a collision-protect hit. > > > > > > when the package upgrade detects an ABI change you recalculate the > > > packages that need to be rebuilt ... > > > > Reiterating, this screws over any form of up front calculation; > > dialup users/per minute connections can't rely on emerge -f to > > actually fetch all involved sources, -p results ain't guranteed > > valid, parallelization must now lock at each threads merge on the off > > chance a recalc is forced. > > it does indeed prevent full up front calculation. we can always make the > behavior configurable; revdep on the fly or allow people to break it up. the > key being that their system will still continue to function as the ABI lib > has been preserved automagically Folks aren't that daft; you make it an optional component, it means a *proper* solution will never be pushed because the duct tape is in place already. If that's what folks want, sure, but what you're proposing is just sliding NEEDED in as the defacto solution without labeling it as such. > > > dangling nodes get recorded in the new package and considering these old > > > files are not detrimental to the health of the system, you can do such a > > > cleanup once at the end of the emerge > > > > It's not orphaning files, but your scheme doesn't work for any form of > > interruption; failed builds, user intervention, etc, they all can > > leave the lib stuck in the new contents. > > huh ? i outlined in a previous e-mail how by simply ordering the operations > sanely, there is no race condition Re-read your emails, and mine please. The scenario I pointed out was ctrl+c'ing the merge while it's doing a rebuild for lib1 to lib2. Now how does portage know that it needs to complete that upgrade for the next emerge action? How does it know to even scan for lib1, let alone punting? It's *not* simple, and I keep pointing out this issue (and you're missing it every damn time). Please address it, or point to where you have (gone over the thread and still not seeing anything even remotely touching this flaw). > > Dealing with that possibility means the manager has to maintain on > > disk a list of the refcount of each dangling libs to decrement, > > unmerge has to modify said list, etc. > > which is already being done in the NEEDED file ... funny how unpainless it is > to generate that file First of all, unpainless is painful. Which is apt, actually. Familiar with old style virtuals? That whole, "you have to walk the whole vdb to collect all old style virtuals" ? This is the same damn thing. There is no refcount maintained via NEEDED, just a list of libs a binary uses; you _still_ have to walk the damn vdb to build the refcount list. Now either you're forcing a fairly huge mapping in memory, or you're forcing a scan of the vdb for every pkg operation that has NEEDED entries it will install. So no, NEEDED doesn't cover this, and my point still stands. > > > > It also involves changing vdb nodes from "installed and usable" to > > > > "installed/usable" or "lingering" > > > > > > no ... the old versions get merged into the new one as their existence is > > > purely hidden > > > > How exactly are they going to be hidden? A new file? If so, > > backwards compatibility for vdb for transitioning in such a support > > has to be addressed. > > purely hidden from the standpoint of any new package trying to use it ... > since you're only installing the runtime ABI library, you cannot link against > it or utilize it any way other than existing files. Except for dlopen, but thats again besides my original point; how do you note to portage that the lib is one to watch so it can be punted? You're suggesting it get shoved into contents, and for portage to identify it, it has to do a revdep mapping on the fly to find it. This *sucks* massively, both from a speed and complexity standpoint; further, the lib isn't hidden from pkg ops (say quickpkging, or binpkging) in any way so the cruft spreads. That's surprisingly minor in comparison to implications of relying on refcounting to identify the lib to punt. If the lib to punt isn't tracked in some fashion, the only algo you're left with is attempting to find all libs that have a refcount of zero, and punt those- obviously, this is going to screw up just about every single dlopen based linkage, literally, suck an algo won't spot that python dlopen's it's modules, and would think the refcount was zero (thus the so could get booted). The response there is to add blacklists, directories to *not* inspect, which is a further hack to try and make this tank fly. *OR*, you're stuck maintaining a seperated list of libs to punt, rather then just trying to slide the lib into existing CONTENTS. > > > > Tracking BINCOMPAT should *not* be that hard. > > > > > > it's one more thing to keep track of and considering all of the > > > possibilities i outlined, a single maintainer can easily lose his sanity > > > ... or you force wasted rebuilds on people when it's only needed in some > > > circumstances > > > > How exactly is this forcing wasted rebuilds? You're stating that > > maintainers are going to bump it willy nilly. As I said, it is a key > > that would be bumped *as needed*, and would only affected pkgs that > > specified that node as a binding dep (specially marked atom). > > no, i mean for example scenarios where a package provides more than one > library (say libfoo and libbar) and only one of those changes ABI values (say > libfoo.0 -> libfoo.1). if another package links against just libbar, you've > got a pointless rebuild. If one changes it's version, it's a fair bet that any consumer of that pkg is linked to more then just that lib; as such they would be rebuilt *anyways*. > > Seriously, maintainers ought to know *now* when they're forcing a > > revdep on folks systems, I'm not seeing the massive overhead from > > pushing that info into a var, nor am I seeing mass forced useless > > rebuilds. > > there's a ton of things maintainers ought to know ... pretty soon our package > maintainers are going to have to be gods if they want to write an ebuild as > they're going to have to know every detail about the package inside and out Sorry, but if a developer is bumping a pkg and doesn't even look to see if the damn thing is potentially going to break others via soname changes, that maintainer is being an idiot. Being aware of a high level detail like "hey, my package installs a library, and they changed the soname" isn't being god like, it's being at least haphazardly concerned about QA of the tree. Worth noting this exact scenario is already laid out in the quizes too; 'sposed to know the affects of stabilizing a library. > > Realistically, just the same as the NEEDED solution has holes, the > > maintaining dev can screw up and miss a BINCOMPAT bump. Difference is > > that they can do something for BINCOMPAT; hell, QA checks can be > > automated to catch missing BINCOMPAT bumps. > > what's the difference ? in my scenario they dont have to do anything because > the bump would have been caught automatically ? Your solution has holes up the ying yang for actual implementation/handling of it due to the fact it's forcing the resolver to be an effective recalc at each step, and relies on duct taping metadata handling to try and exempt bits of lingering data. You move that data up front, the implementation is actually sane, it's deterministic (thus *representative* to the user) and is more powerful. > > KEYWORDed arches bit, bit unlikely that the underlying arch is > > actually going to screw with the soname, thus I'd want actual examples > > backing it up. > > how about libc.so from glibc and libgcc.so from gcc ? or would you like other > packages ? Considering such a change would be internal ABI, NEEDED doesn't actually fix anything; if it were a soname change, level playing ground again. Admittedly, BINCOMPAT breaks down there due to not being fine grained enough if it's internal changes; that however doesn't make NEEDED a good solution, just means that my alternative has a hole. > > Besides, again, for keywording, the dev *should* be compiling it, so > > there is a way to catch it :P. A revbump isn't going to break things > > unless the dev is introducing something intrusive, minor version bumps > > (1.1.0 to 1.1.1) shouldn't be again, introducing anything intrusive; > > regardless, dev should know the high level affects of their change > > uhh, there is no such requirement at this time for revbumping on different > arches ... currently we say the maintainer tests for his arches and leaves > all the others as ~arch Reiterating; devs should know the high level affects of their changes. If it's going to change the soname version, they should know from the get go- unless it's an arch specific breakage (which I still posit is the rare/corner case), they will *see* it for their arch and bump it already. They keywording comment above is specific to moving from ~arch to arch also; for new bumps, the ~arch keywords carry forward, but see the paragraph above re: it. > > Inducing a revdep-rebuild is definitely one of those high level > > changes they should be aware of *prior* to the bump. > > and yet we look at our history of so many packages being bumped with ABI > changes and users having broken-as-shit systems ... i'm accounting for the > worst; not hoping for the best ABI changes aren't fixed by NEEDED. Presume you meant soname changes. Stating that things are broken doesn't make NEEDED automagically better either; *both* enable a way to fix it, so you need to justify the "accounting for the worst; not hoping for the best". > > > or dig > > > through the source code line by line and hope to catch all such cases by > > > hand/eye ? > > > > Bit of FUD here, although I spose I'll just point out that if so's > > change as massively as you're implying above, the affects on -p are > > that much worse. > > awesome, mark something you disagree with as FUD, problem solved. my point is > that you can never know completely for sure the behavior of a package without > digging through the entire source code. It's FUD due to the fact NEEDED suffers the same fucking issue. The irony is that BINCOMPAT would at least give a knob to mark it as a breakage, NEEDED cannot. > > bind the checks in as a QA measure, enabled via FEATURES=stricter, > > used to maintain a metadata var. > > a lot of things fail already with FEATURES=stricter ... too bad we dont have > per-package env var support as then maintainers could just flag all their own > packages as stricter without wanting to shoot themselves due to everyone > else's package failures Take it up with your fellow portage devs then. It was shot down internally multiple times due to the affects it has on the python side. If you want to get into per package features, split a thread and I'll let marius argue over it. > > Literally, pkg x version y forced a rebuild. revdep is annoying, but > > stats would be useful to actually evaluate the seperate proposals; > > related, getting stats for how often the various updaters were > > required to be ran for a particular pkgs upgrade would be useful in > > evaluating that particular gap NEEDED has. > > any openssl version bump where the numerical value changes ... only the letter > updates preserve ABI compat (0.9.7[a-z] are compat) > > expat-1.x -> expat-2.x > > iirc, tcl-8.3.x -> tcl-8.4.x > > readline-4.x -> readline-5.x > > ncurses-4.x -> ncurses-5.x Was looking for stats comparing breakage to a subset of the tree; iow, out of N packages, how many actually induce a rebuild? Yes it's slightly nasty generating those stats (tinderbox?), but it would be useful. Frankly, if you don't believe me or think my points are correct about how a NEEDED based solution is going to suck, zac/jason/genone/anyone else. They're going to point out the same flaws. ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-30 19:34 ` Brian Harring @ 2006-10-02 12:53 ` Mike Frysinger 0 siblings, 0 replies; 48+ messages in thread From: Mike Frysinger @ 2006-10-02 12:53 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 6114 bytes --] On Saturday 30 September 2006 15:34, Brian Harring wrote: > If that's what folks want, sure, but what you're proposing is just > sliding NEEDED in as the defacto solution without labeling it as such. no idea what this means > Re-read your emails, and mine please. The scenario I pointed out was > ctrl+c'ing the merge while it's doing a rebuild for lib1 to lib2. then let me turn it around ... how exactly does your solution account for all these little details ? i dont recall you outlining anything ... > > > How exactly is this forcing wasted rebuilds? You're stating that > > > maintainers are going to bump it willy nilly. As I said, it is a key > > > that would be bumped *as needed*, and would only affected pkgs that > > > specified that node as a binding dep (specially marked atom). > > > > no, i mean for example scenarios where a package provides more than one > > library (say libfoo and libbar) and only one of those changes ABI values > > (say libfoo.0 -> libfoo.1). if another package links against just > > libbar, you've got a pointless rebuild. > > If one changes it's version, it's a fair bet that any consumer of that > pkg is linked to more then just that lib; as such they would be > rebuilt *anyways*. it isnt guaranteed ... you asked for a pointless rebuild and i gave you one ... one that is not falsely flagged when reviewing the NEEDED list the other example is where the ABI changes for one arch but not for any other ... what do you do, force ABI rebuild for everyone ? ok, maybe that arch was x86 so we say screw you to the smaller arch teams ... but what if that arch was a smaller arch team ? > Sorry, but if a developer is bumping a pkg and doesn't even look to > see if the damn thing is potentially going to break others via soname > changes, that maintainer is being an idiot. and yet it does happen and again, we're looking at this from different angles ... you'd rather assume the developer is 100% competent and never gets things wrong; i'd rather assume nothing and let the details be discovered automatically. in the end, the people using Gentoo are the ones that suffer and i'm tired of seeing systems broken beyond usuability because a developer unleashed a package without realizing the consequences of it > > > Realistically, just the same as the NEEDED solution has holes, the > > > maintaining dev can screw up and miss a BINCOMPAT bump. Difference is > > > that they can do something for BINCOMPAT; hell, QA checks can be > > > automated to catch missing BINCOMPAT bumps. i bet a post-emerge would make this painless and automate the QA step ... after src_install(), you run something like `scanelf -qsRS ${D}` and save the results in vdb/SONAME ... and then on subsequent installs, you run it again and if the SONAME changes but BINCOMPAT did not, you bail with a die message telling the user to go file a bug and preventing the merge which would have broken his system > > > KEYWORDed arches bit, bit unlikely that the underlying arch is > > > actually going to screw with the soname, thus I'd want actual examples > > > backing it up. > > > > how about libc.so from glibc and libgcc.so from gcc ? or would you like > > other packages ? > > Considering such a change would be internal ABI, NEEDED doesn't > actually fix anything; if it were a soname change, level playing > ground again. it is a SONAME change, why else would i mention this > Reiterating; devs should know the high level affects of their changes. reiterating: you're hoping for the best; i'm looking at our history and assuming that devs will make mistakes as everyone does > If it's going to change the soname version, they should know from the > get go- unless it's an arch specific breakage (which I still posit is > the rare/corner case), they will *see* it for their arch and bump it > already. maybe, but it's still a possibility which analyzing of SONAME would catch > Stating that things are broken doesn't make NEEDED automagically > better either; *both* enable a way to fix it, so you need to justify > the "accounting for the worst; not hoping for the best". justify how ? would you like me to dig up the bugs where devs bumped packages into stable and the SONAME change broke a ton of people's systems ? has it never happened to you ? > > > > or dig > > > > through the source code line by line and hope to catch all such cases > > > > by hand/eye ? > > > > > > Bit of FUD here, although I spose I'll just point out that if so's > > > change as massively as you're implying above, the affects on -p are > > > that much worse. > > > > awesome, mark something you disagree with as FUD, problem solved. my > > point is that you can never know completely for sure the behavior of a > > package without digging through the entire source code. > > It's FUD due to the fact NEEDED suffers the same fucking issue. The > irony is that BINCOMPAT would at least give a knob to mark it as a > breakage, NEEDED cannot. and then you get angry ? try to have a discussion without getting all anxious as that only wastes time there's a few issues here, not just one ... - ABI change w/no SONAME bump - impossible to catch without reading source; BINCOMPAT would allow for it; NEEDED would not - ABI change w/SONAME bump - BINCOMPAT would not catch; NEEDED would > Frankly, if you don't believe me or think my points are correct about > how a NEEDED based solution is going to suck, zac/jason/genone/anyone > else. They're going to point out the same flaws. if you dont want to hash out ideas on a development list but rather just declare one right and one wrong, then feel free to leave. if you're confused about my intentions here then let me set you straight. i see advantages to both sides and i'm going to argue out problems until we have something good to push back into portage. i dont really care if the final solution is "my idea" or not; such personal ties is just stupid and helps no one. -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 13:52 ` Mike Frysinger 2006-09-21 14:04 ` Brian Harring @ 2006-09-21 14:14 ` Donnie Berkholz 2006-09-21 14:40 ` Mike Frysinger 2006-09-21 14:56 ` Duncan Coutts 2 siblings, 1 reply; 48+ messages in thread From: Donnie Berkholz @ 2006-09-21 14:14 UTC (permalink / raw To: gentoo-dev Mike Frysinger wrote: > On Thursday 21 September 2006 07:59, Brian Harring wrote: >> Why have the explicit var? Because 0.9.7a through 0.9.7c may all be >> compatible, but 0.9.7d isn't. If you force an automatic algo that >> tries to (effectively) guess, you get a lot of rebuilds through a,b,c, >> end result being folks likely update less because it becomes a bigger >> pain in the ass. > > if it isnt compatible then it shouldnt have the same SONAME, simple as > that ... that is after all the point of encoding the ABI version number into > the SONAME > > forcing devs to maintain a manual var which is basically duplicating the > SONAME smells like maintenance nightmare Not adding it into the ebuild means that it's impossible to show in advance what packages will actually be installed, because you don't know whether the sover will bump. Thanks, Donnie -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:14 ` Donnie Berkholz @ 2006-09-21 14:40 ` Mike Frysinger 2006-09-21 14:54 ` Donnie Berkholz 0 siblings, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-21 14:40 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 709 bytes --] On Thursday 21 September 2006 10:14, Donnie Berkholz wrote: > Not adding it into the ebuild means that it's impossible to show in > advance what packages will actually be installed, because you don't know > whether the sover will bump. sometimes you dont know as the ABI bump may be arch or feature specific ... pathological case i agree ;) you would certainly know between the time you merge the new one and unmerge the old one though ... but now we tread into the territory of "portage should not unmerge ABI libraries until all consumers have been destroyed" which is better than the current craptastic situation of "you gotta revdep-rebuild after the fact with a broken system" -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:40 ` Mike Frysinger @ 2006-09-21 14:54 ` Donnie Berkholz 2006-09-21 15:01 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Donnie Berkholz @ 2006-09-21 14:54 UTC (permalink / raw To: gentoo-dev Mike Frysinger wrote: > On Thursday 21 September 2006 10:14, Donnie Berkholz wrote: >> Not adding it into the ebuild means that it's impossible to show in >> advance what packages will actually be installed, because you don't know >> whether the sover will bump. > > sometimes you dont know as the ABI bump may be arch or feature specific ... > pathological case i agree ;) > > you would certainly know between the time you merge the new one and unmerge > the old one though ... but now we tread into the territory of "portage should > not unmerge ABI libraries until all consumers have been destroyed" which is > better than the current craptastic situation of "you gotta revdep-rebuild > after the fact with a broken system" Yes, I agree with you. For example, take expat. The maintainers have refused to allow both versions to exist simultaneously on a system because it apparently causes more breakage than just breaking every app on your system by removing .so.0. Thanks, Donnie -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:54 ` Donnie Berkholz @ 2006-09-21 15:01 ` Mike Frysinger 2006-09-24 2:36 ` Ciaran McCreesh 0 siblings, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-21 15:01 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 734 bytes --] On Thursday 21 September 2006 10:54, Donnie Berkholz wrote: > Yes, I agree with you. For example, take expat. The maintainers have > refused to allow both versions to exist simultaneously on a system > because it apparently causes more breakage than just breaking every app > on your system by removing .so.0. that is the exact case portage should be handling for you it would go "oh hey, check out libexpat.so.0 ... some things seem to want it ... HEY USER, you need to rebuild: xxxxxxxx" ... once all the packages still consuming libexpat.so.0 are rebuilt, portage could silently trim it from the system complicated ? not really, scanelf can produce all this information in an easily digestable format -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 15:01 ` Mike Frysinger @ 2006-09-24 2:36 ` Ciaran McCreesh 2006-09-24 3:13 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Ciaran McCreesh @ 2006-09-24 2:36 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1510 bytes --] On Thu, 21 Sep 2006 11:01:40 -0400 Mike Frysinger <vapier@gentoo.org> wrote: | On Thursday 21 September 2006 10:54, Donnie Berkholz wrote: | > Yes, I agree with you. For example, take expat. The maintainers have | > refused to allow both versions to exist simultaneously on a system | > because it apparently causes more breakage than just breaking every | > app on your system by removing .so.0. | | that is the exact case portage should be handling for you | | it would go "oh hey, check out libexpat.so.0 ... some things seem to | want it ... HEY USER, you need to rebuild: xxxxxxxx" ... once all the | packages still consuming libexpat.so.0 are rebuilt, portage could | silently trim it from the system | | complicated ? not really, scanelf can produce all this information | in an easily digestable format How would it know what other files are required? For example, if libexpat.so.0 were to rely upon /usr/share/expat-0/config , how would the package manager know not to clobber that file? Or are you suggesting leaving (or reparenting, if you prefer) all a package's files, not just the .so files? Or a related question: what proportion of breakages will be fixed merely by keeping .so files and nothing else around? Will implementing this prevent enough breakages to make it worthwhile? -- Ciaran McCreesh Mail : ciaranm at ciaranm.org Web : http://ciaranm.org/ as-needed is broken : http://ciaranm.org/show_post.pl?post_id=13 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-24 2:36 ` Ciaran McCreesh @ 2006-09-24 3:13 ` Mike Frysinger 0 siblings, 0 replies; 48+ messages in thread From: Mike Frysinger @ 2006-09-24 3:13 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1083 bytes --] On Saturday 23 September 2006 22:36, Ciaran McCreesh wrote: > How would it know what other files are required? For example, if > libexpat.so.0 were to rely upon /usr/share/expat-0/config , how would > the package manager know not to clobber that file? Or are you > suggesting leaving (or reparenting, if you prefer) all a package's > files, not just the .so files? i'm talking about just libexpat.so.0 ... keep the file around long enough to update the system > Or a related question: what proportion of breakages will be fixed > merely by keeping .so files and nothing else around? Will implementing > this prevent enough breakages to make it worthwhile? of course it will when you look at core things like openssl, acl, openldap, etc... if you remove anyone one of these packages completely, you risk breaking everything (coreutils and many system packages use libacl) or all your network capabilities (sshd/ssh no longer usuable; now you require on-site service to fix ... hopefully you have packages cached cause wget no longer works either) -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 13:52 ` Mike Frysinger 2006-09-21 14:04 ` Brian Harring 2006-09-21 14:14 ` Donnie Berkholz @ 2006-09-21 14:56 ` Duncan Coutts 2006-09-21 15:10 ` Simon Stelling 2006-09-21 15:11 ` Mike Frysinger 2 siblings, 2 replies; 48+ messages in thread From: Duncan Coutts @ 2006-09-21 14:56 UTC (permalink / raw To: gentoo-dev On Thu, 2006-09-21 at 09:52 -0400, Mike Frysinger wrote: > On Thursday 21 September 2006 07:59, Brian Harring wrote: > > Why have the explicit var? Because 0.9.7a through 0.9.7c may all be > > compatible, but 0.9.7d isn't. If you force an automatic algo that > > tries to (effectively) guess, you get a lot of rebuilds through a,b,c, > > end result being folks likely update less because it becomes a bigger > > pain in the ass. > > if it isnt compatible then it shouldnt have the same SONAME, simple as > that ... that is after all the point of encoding the ABI version number into > the SONAME > > forcing devs to maintain a manual var which is basically duplicating the > SONAME smells like maintenance nightmare There are various kinds of ABI. Certainly for C libs the SONAME is probably the most common. If we go for some kind of ABI reverse deps feature I would beg for something a little more general - though certainly with SONAME as a common case. Other languages have similar problems. For example Python has incompatible ABIs for each major release 2.2, 2.3 etc. They have a similar solution to the revdep-rebuild: python-updater. As lead of the Haskell team my interest in this is that our primary Haskell compiler GHC has ABI incompatibility between versions too. We've made a ghc-updater similar in style to the python one but this is clearly an unsatisfactory situation. It's more acute for us as even minor revisions are ABI-incompatible. So for it's something like: # for C: ABI=${SONAME} # for python ABI=${PY_PV} # for haskell: ABI=${GHC_PV} paludis has something going in this direction but I don't think it'd quite solve the python/ghc abi issue. It was aimed more at cases like mips with it's multiple abis. If we do go in this direction it'd be great to be able to slot on the ABI and still have dependencies resolved correctly. For example imagine having parallel python-2.3 and 2.4 installations with some libs installed for both. Crucially, deps need to be resolved to the version of a lib with the right ABI. debian solves this problem in an ad-hoc way by tacking extra components into the package name: pyfoo-py22.deb which deps on pybar-py22.deb pyfoo-py23.deb which deps on pybar-py23.deb so all can be installed at once and deps are resolved within the right ABI. Now this is obviously not in the Gentoo tradition. We much prefer cleaner solutions like SLOTing. I would love to see this extended to allow us to SLOT on the abi and then correctly resolve based on that abi. If we just SLOTed at the moment we'd get the sitation where dev-python/bar built for py 2.2 would be considered ok to satisfy a dependency of dev-python/foo that is being built for py 2.3. We want some kind of extra component to be able to resolve on: dev-python/foo-1.0.ebuild: SLOT="${PV}-${PY_PV}" ABI="${PY_PV}" DEPEND="dev-python/bar @ ${PY_PV}" Actually for Haskell the situation is even more fun; we have multiple haskell implementations, so we would like to install a lib and SLOT upon and correctly resolve deps for multiple haskell compilers. Fun stuff. :-) If portage people are interested in moving in this direction we have an experimental emerge-compatible mini dep-resolver which might be useful to prototype an extended ABI/SLOTing system. Duncan Coutts -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:56 ` Duncan Coutts @ 2006-09-21 15:10 ` Simon Stelling 2006-09-21 15:11 ` Mike Frysinger 1 sibling, 0 replies; 48+ messages in thread From: Simon Stelling @ 2006-09-21 15:10 UTC (permalink / raw To: gentoo-dev Duncan Coutts wrote: > So for it's something like: > # for C: > ABI=${SONAME} > > # for python > ABI=${PY_PV} > > # for haskell: > ABI=${GHC_PV} > > paludis has something going in this direction but I don't think it'd > quite solve the python/ghc abi issue. It was aimed more at cases like > mips with it's multiple abis. It's all about multilib and has (except for the unfortunate name) nothing to do with this issue. -- Kind Regards, Simon Stelling Gentoo/AMD64 developer -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:56 ` Duncan Coutts 2006-09-21 15:10 ` Simon Stelling @ 2006-09-21 15:11 ` Mike Frysinger 2006-09-21 15:41 ` Duncan Coutts 1 sibling, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-21 15:11 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 521 bytes --] On Thursday 21 September 2006 10:56, Duncan Coutts wrote: > If we do go in this direction it'd be great to be able to slot on the > ABI and still have dependencies resolved correctly. For example imagine > having parallel python-2.3 and 2.4 installations with some libs > installed for both. Crucially, deps need to be resolved to the version > of a lib with the right ABI. ugh, no ... we are not a binary distribution so we should not have to worry about ABI baggage we SLOT based upon API, not ABI -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 15:11 ` Mike Frysinger @ 2006-09-21 15:41 ` Duncan Coutts 2006-09-21 18:27 ` Luca Barbato 2006-09-23 10:13 ` Mike Frysinger 0 siblings, 2 replies; 48+ messages in thread From: Duncan Coutts @ 2006-09-21 15:41 UTC (permalink / raw To: gentoo-dev On Thu, 2006-09-21 at 11:11 -0400, Mike Frysinger wrote: > On Thursday 21 September 2006 10:56, Duncan Coutts wrote: > > If we do go in this direction it'd be great to be able to slot on the > > ABI and still have dependencies resolved correctly. For example imagine > > having parallel python-2.3 and 2.4 installations with some libs > > installed for both. Crucially, deps need to be resolved to the version > > of a lib with the right ABI. > > ugh, no ... we are not a binary distribution so we should not have to worry > about ABI baggage So we can't ever install two versions of python or ghc at once? That seems a shame. > we SLOT based upon API, not ABI Here's another example; I'm not sure if it passes the ABI/API test: We would like to support 3 Haskell implementations: * GHC which compiles to native code (ELF binaries & static .a libs) * Hugs which is an interpreter so installation is .hs source files * YHC which compiles to portable bytecode A single Haskell library is likely to work with all three implementations. So that's API. Once installed however each implementation is very different. So that's incompatible ABI. This could be 'solved' by having dev-haskell/foo-ghc, dev-haskell/foo-hugs, dev-haskell/foo-yhc, but that's obviously not the Gentoo way (though it's pretty much what debian does). These multiple impls is pretty similar to multiple versions of the same compiler. So my point is, I don't think it can be simply dismissed as ABI nonsense that we don't have to deal with. Being able to SLOT on the compiler flavour (and possibly version) would allow us to do useful things that we cannot currently do. Duncan -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 15:41 ` Duncan Coutts @ 2006-09-21 18:27 ` Luca Barbato 2006-09-21 21:34 ` Duncan Coutts 2006-09-23 10:13 ` Mike Frysinger 1 sibling, 1 reply; 48+ messages in thread From: Luca Barbato @ 2006-09-21 18:27 UTC (permalink / raw To: gentoo-dev Duncan Coutts wrote: > > So my point is, I don't think it can be simply dismissed as ABI nonsense > that we don't have to deal with. Being able to SLOT on the compiler > flavour (and possibly version) would allow us to do useful things that > we cannot currently do. what about making them build what you want depending on useflags? lu -- Luca Barbato Gentoo/linux Gentoo/PPC http://dev.gentoo.org/~lu_zero -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 18:27 ` Luca Barbato @ 2006-09-21 21:34 ` Duncan Coutts 2006-09-21 23:25 ` Luca Barbato 0 siblings, 1 reply; 48+ messages in thread From: Duncan Coutts @ 2006-09-21 21:34 UTC (permalink / raw To: gentoo-dev On Thu, 2006-09-21 at 20:27 +0200, Luca Barbato wrote: > Duncan Coutts wrote: > > > > > So my point is, I don't think it can be simply dismissed as ABI nonsense > > that we don't have to deal with. Being able to SLOT on the compiler > > flavour (and possibly version) would allow us to do useful things that > > we cannot currently do. > > what about making them build what you want depending on useflags? Aye, for the implementation flavours that's probably the way to go once we have use-deps. We'll have to hold off on multiple versions of the same compiler though. It might get a bit hairy though :-) DEPEND="ghc? ( dev-haskell/foo @ ghc ) hugs? ( dev-haskell/foo @ hugs ) yhc? ( dev-haskell/foo @ yhc ) jhc? ( dev-haskell/foo @ jhc )" (I've not looked up what the use-dep syntax is, I'm just guessing) Duncan -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 21:34 ` Duncan Coutts @ 2006-09-21 23:25 ` Luca Barbato 0 siblings, 0 replies; 48+ messages in thread From: Luca Barbato @ 2006-09-21 23:25 UTC (permalink / raw To: gentoo-dev Duncan Coutts wrote: > On Thu, 2006-09-21 at 20:27 +0200, Luca Barbato wrote: >> Duncan Coutts wrote: >> >>> So my point is, I don't think it can be simply dismissed as ABI nonsense >>> that we don't have to deal with. Being able to SLOT on the compiler >>> flavour (and possibly version) would allow us to do useful things that >>> we cannot currently do. >> what about making them build what you want depending on useflags? > > Aye, for the implementation flavours that's probably the way to go once > we have use-deps. We'll have to hold off on multiple versions of the > same compiler though. > > It might get a bit hairy though :-) > > DEPEND="ghc? ( dev-haskell/foo @ ghc ) > hugs? ( dev-haskell/foo @ hugs ) > yhc? ( dev-haskell/foo @ yhc ) > jhc? ( dev-haskell/foo @ jhc )" > > (I've not looked up what the use-dep syntax is, I'm just guessing) as now, you can handle that with an eclass that takes deps, checks those deps with certain use if the use has been enabled and dies if those criterions aren't meet (asking you to falling back to hc-updater to keep those applications in shape) pretty hacky and itchy but that's probably the best you can do w/out use-deps. (PS can you slot on use now?) lu -- Luca Barbato Gentoo/linux Gentoo/PPC http://dev.gentoo.org/~lu_zero -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 15:41 ` Duncan Coutts 2006-09-21 18:27 ` Luca Barbato @ 2006-09-23 10:13 ` Mike Frysinger 2006-09-23 10:35 ` Duncan Coutts 1 sibling, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-23 10:13 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 779 bytes --] On Thursday 21 September 2006 11:41, Duncan Coutts wrote: > On Thu, 2006-09-21 at 11:11 -0400, Mike Frysinger wrote: > > On Thursday 21 September 2006 10:56, Duncan Coutts wrote: > > > If we do go in this direction it'd be great to be able to slot on the > > > ABI and still have dependencies resolved correctly. For example imagine > > > having parallel python-2.3 and 2.4 installations with some libs > > > installed for both. Crucially, deps need to be resolved to the version > > > of a lib with the right ABI. > > > > ugh, no ... we are not a binary distribution so we should not have to > > worry about ABI baggage > > So we can't ever install two versions of python or ghc at once? That > seems a shame. that's an issue for the python or ghc maintainers to address -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 10:13 ` Mike Frysinger @ 2006-09-23 10:35 ` Duncan Coutts 2006-09-23 10:52 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Duncan Coutts @ 2006-09-23 10:35 UTC (permalink / raw To: gentoo-dev On Sat, 2006-09-23 at 06:13 -0400, Mike Frysinger wrote: > On Thursday 21 September 2006 11:41, Duncan Coutts wrote: > > On Thu, 2006-09-21 at 11:11 -0400, Mike Frysinger wrote: > > > On Thursday 21 September 2006 10:56, Duncan Coutts wrote: > > > > If we do go in this direction it'd be great to be able to slot on the > > > > ABI and still have dependencies resolved correctly. For example imagine > > > > having parallel python-2.3 and 2.4 installations with some libs > > > > installed for both. Crucially, deps need to be resolved to the version > > > > of a lib with the right ABI. > > > > > > ugh, no ... we are not a binary distribution so we should not have to > > > worry about ABI baggage > > > > So we can't ever install two versions of python or ghc at once? That > > seems a shame. > > that's an issue for the python or ghc maintainers to address Yes and as ghc maintainer for Gentoo I'd love to be able to do it. It is easy to install more than one version of ghc at once as it uses versioned directories etc. The problem is that we cannot correctly resolve dependencies with the current versions of portage. Hence we cannot effectively do it. I was worried from your ABI/API comments that you meant that we should never be allowed to do it. As I said before, if we were to SLOT ghc and the various dev-haskell/* libs on the ghc version then we would run into this problem: assume dev-haskell/foo needs dev-haskell/bar supposing dev-haskell/bar was installed and sloted for ghc-6.2 now I install ghc-6.4 too now I emerge dev-haskell/foo. portage will use the existing installation of dev-haskell/bar even though it was installed for another version of ghc. Therefore the build will break (think of haskell libs of having a SONAME that is the version of ghc they were built with). What needs to happen is to install dev-haskell/bar sloted for ghc-6.4 and use that. Currently there is no way to explain these dependencies to portage. I was hoping that with this talk of tracking reverse deps and such like that we could move in a direction where this kind of dependency could be supported. Even if we can't slot on the ghc version, automatically rebuilding for the latest ghc version would be a great improvement - like the suggestion to rebuild dependent libs when the SONAME changes. Duncan -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 10:35 ` Duncan Coutts @ 2006-09-23 10:52 ` Mike Frysinger 0 siblings, 0 replies; 48+ messages in thread From: Mike Frysinger @ 2006-09-23 10:52 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 266 bytes --] On Saturday 23 September 2006 06:35, Duncan Coutts wrote: > I was worried from your ABI/API comments that you meant that we should > never be allowed to do it. i was commenting on the more general case; SLOTing something that wasnt meant to be SLOTed -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 11:59 ` Brian Harring 2006-09-21 13:52 ` Mike Frysinger @ 2006-09-21 14:38 ` Alin Nastac 2006-09-21 14:46 ` Mike Frysinger 2006-09-21 14:51 ` Brian Harring 1 sibling, 2 replies; 48+ messages in thread From: Alin Nastac @ 2006-09-21 14:38 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 909 bytes --] Brian Harring wrote: > On Thu, Sep 21, 2006 at 01:38:59PM +0200, Luca Barbato wrote: > > There is one flaw with this though; packages can provide both > libraries _and_ binaries. Our dependencies don't represent whether > the dep is actual linkage, or just commandline consuming, so (using > the openssl example) any package that invokes openssl via the > commandline to do a few simple chksum ops gets rebuilt, despite the > fact it wasn't affected by linkage change ups. > I like BINCOMPAT proposal but it solves only half of the problem. You assume that all dependent packages cares about binary compatibility. Why not using a BDEPEND var in those dependent packages affected by the BINCOMPAT values of their dependencies? For instance, I would set the following: - in net-dialup/ppp ebuild: BINCOMPAT=${PV} - in net-dialup/pptpd ebuild: BDEPEND="net-dialup/ppp" [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 252 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:38 ` Alin Nastac @ 2006-09-21 14:46 ` Mike Frysinger 2006-09-21 17:24 ` Alin Nastac 2006-09-21 14:51 ` Brian Harring 1 sibling, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-21 14:46 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1312 bytes --] On Thursday 21 September 2006 10:38, Alin Nastac wrote: > Brian Harring wrote: > > There is one flaw with this though; packages can provide both > > libraries _and_ binaries. Our dependencies don't represent whether > > the dep is actual linkage, or just commandline consuming, so (using > > the openssl example) any package that invokes openssl via the > > commandline to do a few simple chksum ops gets rebuilt, despite the > > fact it wasn't affected by linkage change ups. > > I like BINCOMPAT proposal but it solves only half of the problem. You > assume that all dependent packages cares about binary compatibility. > Why not using a BDEPEND var in those dependent packages affected by the > BINCOMPAT values of their dependencies? > > For instance, I would set the following: > - in net-dialup/ppp ebuild: BINCOMPAT=${PV} > - in net-dialup/pptpd ebuild: BDEPEND="net-dialup/ppp" i think you're merging the two issues you brought up ... there is binary ABI issues (which should not require a new DEPEND variable as portage can extract that information out at runtime) and there is runtime plugin issues with packages using dlopen() (which portage cannot extract as the dependency cannot ever be extracted) or did i not read your original e-mail incorrectly ? -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:46 ` Mike Frysinger @ 2006-09-21 17:24 ` Alin Nastac 0 siblings, 0 replies; 48+ messages in thread From: Alin Nastac @ 2006-09-21 17:24 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 782 bytes --] Mike Frysinger wrote: > i think you're merging the two issues you brought up ... there is binary ABI > issues (which should not require a new DEPEND variable as portage can extract > that information out at runtime) and there is runtime plugin issues with > packages using dlopen() (which portage cannot extract as the dependency > cannot ever be extracted) > Okay, maybe I hijacked BINCOMPAT purpose. As I said in a previous reply, my original message was about runtime compatibility, not compilation compatibility. I want to be able to save in a package metadata that it was build using some version (as in compatibility version, not necessarily PV) of another package and I want emerge to automatically rebuild my package whenever this version is changed. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 252 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:38 ` Alin Nastac 2006-09-21 14:46 ` Mike Frysinger @ 2006-09-21 14:51 ` Brian Harring 2006-09-21 17:15 ` Alin Nastac 1 sibling, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-21 14:51 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1477 bytes --] On Thu, Sep 21, 2006 at 05:38:08PM +0300, Alin Nastac wrote: > Brian Harring wrote: > > On Thu, Sep 21, 2006 at 01:38:59PM +0200, Luca Barbato wrote: > > > > There is one flaw with this though; packages can provide both > > libraries _and_ binaries. Our dependencies don't represent whether > > the dep is actual linkage, or just commandline consuming, so (using > > the openssl example) any package that invokes openssl via the > > commandline to do a few simple chksum ops gets rebuilt, despite the > > fact it wasn't affected by linkage change ups. > > > I like BINCOMPAT proposal but it solves only half of the problem. You > assume that all dependent packages cares about binary compatibility. > Why not using a BDEPEND var in those dependent packages affected by the > BINCOMPAT values of their dependencies? > > For instance, I would set the following: > - in net-dialup/ppp ebuild: BINCOMPAT=${PV} > - in net-dialup/pptpd ebuild: BDEPEND="net-dialup/ppp" BDEPEND was actually a seperate proposal/idea, intention there was to have that be the deps that *must* be CHOST (gcc would be an example); bits that are used to actually build the pkg, not data it consumes in building (headers would be data). Meanwhile, for this I don't see the point in using a seperate metadata key. Overload DEPEND and add a marker char that is used to indicate that a particular dependency is 'binding', ie, it is linkage. ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 14:51 ` Brian Harring @ 2006-09-21 17:15 ` Alin Nastac 2006-09-21 19:51 ` Brian Harring 2006-09-23 10:05 ` Mike Frysinger 0 siblings, 2 replies; 48+ messages in thread From: Alin Nastac @ 2006-09-21 17:15 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1077 bytes --] Brian Harring wrote: > BDEPEND was actually a seperate proposal/idea, intention there was to > have that be the deps that *must* be CHOST (gcc would be an example); > bits that are used to actually build the pkg, not data it consumes in > building (headers would be data). > Well, until now I didn't thought at the build compatibility. My concern was only the runtime compatibility. > Meanwhile, for this I don't see the point in using a seperate metadata > key. Overload DEPEND and add a marker char that is used to indicate > that a particular dependency is 'binding', ie, it is linkage. > Lets suppose we use & as 'binding' dependency marker. What sense would DEPEND="&net-dialup/ppp" have in a context of an ebuild. It certainly don't specify the necessity of package rebuild whenever net-dialup/ppp version is changed. Unless you save the specific compatibility version of the net-dialup/ppp used by net-dialup/pptpd for building the package, I don't see how can it help me. Judging after /var/db/pkg content, I have no such information. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 252 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 17:15 ` Alin Nastac @ 2006-09-21 19:51 ` Brian Harring 2006-09-23 10:05 ` Mike Frysinger 1 sibling, 0 replies; 48+ messages in thread From: Brian Harring @ 2006-09-21 19:51 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1403 bytes --] On Thu, Sep 21, 2006 at 08:15:48PM +0300, Alin Nastac wrote: > Brian Harring wrote: > > BDEPEND was actually a seperate proposal/idea, intention there was to > > have that be the deps that *must* be CHOST (gcc would be an example); > > bits that are used to actually build the pkg, not data it consumes in > > building (headers would be data). > > > Well, until now I didn't thought at the build compatibility. > My concern was only the runtime compatibility. > > Meanwhile, for this I don't see the point in using a seperate metadata > > key. Overload DEPEND and add a marker char that is used to indicate > > that a particular dependency is 'binding', ie, it is linkage. > > > Lets suppose we use & as 'binding' dependency marker. What sense would > DEPEND="&net-dialup/ppp" have in a context of an ebuild. It certainly > don't specify the necessity of package rebuild whenever net-dialup/ppp > version is changed. > > Unless you save the specific compatibility version of the net-dialup/ppp > used by net-dialup/pptpd for building the package, I don't see how can > it help me. > Judging after /var/db/pkg content, I have no such information. Any such implementation would require storing some extra data in the vdb.... For this, would just walk the *DEPEND collecting 'binding' dependencies, and storing their BINCOMPAT in a simple mapping. ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 17:15 ` Alin Nastac 2006-09-21 19:51 ` Brian Harring @ 2006-09-23 10:05 ` Mike Frysinger 2006-09-23 14:24 ` Alin Nastac 1 sibling, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-23 10:05 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 464 bytes --] On Thursday 21 September 2006 13:15, Alin Nastac wrote: > Unless you save the specific compatibility version of the net-dialup/ppp > used by net-dialup/pptpd for building the package, I don't see how can > it help me. > Judging after /var/db/pkg content, I have no such information. it is all there right now actually :) check out the NEEDED file ... combine that with CONTENTS of other packages, and you have all the binding info you want ... -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 10:05 ` Mike Frysinger @ 2006-09-23 14:24 ` Alin Nastac 2006-09-23 14:34 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Alin Nastac @ 2006-09-23 14:24 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 984 bytes --] Mike Frysinger wrote: > On Thursday 21 September 2006 13:15, Alin Nastac wrote: > >> Unless you save the specific compatibility version of the net-dialup/ppp >> used by net-dialup/pptpd for building the package, I don't see how can >> it help me. >> Judging after /var/db/pkg content, I have no such information. >> > > it is all there right now actually :) > > check out the NEEDED file ... combine that with CONTENTS of other packages, > and you have all the binding info you want ... I see only libraries in NEEDED and it is probably generated automatically. There is no way for the automatic tools to discover the dependency between pptpd and ppp version. Besides, even if I would have somehow /usr/lib/ppp/2.4.3 in NEEDED file of the pptpd, the amount of computation needed to discover which package offers such thing would be prohibitive. The reciprocal operation (find which packages use the old path before upgrade) would also be prohibitive. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 252 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 14:24 ` Alin Nastac @ 2006-09-23 14:34 ` Mike Frysinger 2006-09-23 14:53 ` Brian Harring 0 siblings, 1 reply; 48+ messages in thread From: Mike Frysinger @ 2006-09-23 14:34 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 865 bytes --] On Saturday 23 September 2006 10:24, Alin Nastac wrote: > I see only libraries in NEEDED and it is probably generated > automatically. There is no way for the automatic tools to discover the > dependency between pptpd and ppp version. that gets back to ABI versus dynamic plugins ... we already know we'll need a new DEPEND to track dlopen-ed plugins > Besides, even if I would have somehow /usr/lib/ppp/2.4.3 in NEEDED file > of the pptpd, the amount of computation needed to discover which package > offers such thing would be prohibitive. The reciprocal operation (find > which packages use the old path before upgrade) would also be prohibitive. no it wouldnt ... when you merge a package, you record all the SONAME's it provides: scanelf -qRS "${D}" > SONAME in fact, running `scanelf -qlpRS` doesnt take that long on my machine -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 14:34 ` Mike Frysinger @ 2006-09-23 14:53 ` Brian Harring 2006-09-23 15:07 ` Mike Frysinger 0 siblings, 1 reply; 48+ messages in thread From: Brian Harring @ 2006-09-23 14:53 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 1420 bytes --] On Sat, Sep 23, 2006 at 10:34:03AM -0400, Mike Frysinger wrote: > On Saturday 23 September 2006 10:24, Alin Nastac wrote: > > I see only libraries in NEEDED and it is probably generated > > automatically. There is no way for the automatic tools to discover the > > dependency between pptpd and ppp version. > > that gets back to ABI versus dynamic plugins ... we already know we'll need a > new DEPEND to track dlopen-ed plugins > > > Besides, even if I would have somehow /usr/lib/ppp/2.4.3 in NEEDED file > > of the pptpd, the amount of computation needed to discover which package > > offers such thing would be prohibitive. The reciprocal operation (find > > which packages use the old path before upgrade) would also be prohibitive. > > no it wouldnt ... when you merge a package, you record all the SONAME's it > provides: > scanelf -qRS "${D}" > SONAME > > in fact, running `scanelf -qlpRS` doesnt take that long on my machine Flush the cache... Makes a world of difference. Additionally, he is talking about what is *done* with that data after the fact, iow other words walking the entire vdb to find all affected pkgs. Can pretty much gurantee after a build that data isn't likely to be available (part of the reason portageq calls during building are slow). Could collapse that into a simple mapping, but that introduces backwards compatibility issues... ~harring [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-23 14:53 ` Brian Harring @ 2006-09-23 15:07 ` Mike Frysinger 0 siblings, 0 replies; 48+ messages in thread From: Mike Frysinger @ 2006-09-23 15:07 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 458 bytes --] On Saturday 23 September 2006 10:53, Brian Harring wrote: > Flush the cache... Makes a world of difference. i was running from a cold cache, thanks > Additionally, he is > talking about what is *done* with that data after the fact, iow other > words walking the entire vdb to find all affected pkgs. locating dependencies between NEEDED and SONAMES files is not that time consuming especially when you consider how slow portage is now -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 11:38 ` Luca Barbato 2006-09-21 11:59 ` Brian Harring @ 2006-09-21 12:05 ` Alin Nastac 1 sibling, 0 replies; 48+ messages in thread From: Alin Nastac @ 2006-09-21 12:05 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 946 bytes --] Luca Barbato wrote: > Alin Nastac wrote: >> I reckon this could be solved by yet another *DEPEND variable. The only >> atoms accepted by this variable would be "CATEGORY/PN". Every time when >> a package gets updated from PV1 to PV2 (distinct versions, revisions >> will not count), portage will automatically re-emerge those packages >> that depend on it. >> >> Thoughts? >> > > It would require revdep resolution on emerge... how painful would be? > I don't know anything about portage intricacies, but I guess it would be fairly easy to have a map of CATEGORY1/PN1 -> CATEGORY2/PN2 key-values, where package 2 depends on package 1 (package 2 is the one that defines the xxxDEPEND variable). In order to add such (key, value) in the map the following assumptions must be satisfied: - package 2 must be installed (mandatory) - package 1 must be a direct or indirect RDEPEND dependency of the package 2 (optional). [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 252 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [gentoo-dev] RFC about another *DEPEND variable 2006-09-21 10:35 [gentoo-dev] RFC about another *DEPEND variable Alin Nastac 2006-09-21 11:38 ` Luca Barbato @ 2006-09-21 13:50 ` Mike Frysinger 1 sibling, 0 replies; 48+ messages in thread From: Mike Frysinger @ 2006-09-21 13:50 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 720 bytes --] On Thursday 21 September 2006 06:35, Alin Nastac wrote: > For instance, the recent openssl-0.9.8* update broke dev-libs/neon (and > consequently subversion) because neon library isn't happy just by > linking with libssl.so.0.9.7 but also check the libssl version when > loads the ssl library. Another example is the subtle dependency between > the pppd version and pppd plugins (net-dialup/pptpd needs to be rebuild > every time you change PV of the net-dialup/ppp because pptpd builds a > plugin for the ppp daemon). i guess you're referring to the plugins eh ? this was proposed some time ago by eradicator but i dont know where that development track left off (my guess is nowhere significant) -mike [-- Attachment #2: Type: application/pgp-signature, Size: 827 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
end of thread, other threads:[~2006-10-02 12:57 UTC | newest] Thread overview: 48+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-09-21 10:35 [gentoo-dev] RFC about another *DEPEND variable Alin Nastac 2006-09-21 11:38 ` Luca Barbato 2006-09-21 11:59 ` Brian Harring 2006-09-21 13:52 ` Mike Frysinger 2006-09-21 14:04 ` Brian Harring 2006-09-21 14:43 ` Mike Frysinger 2006-09-21 15:08 ` Brian Harring 2006-09-23 10:20 ` Mike Frysinger 2006-09-23 13:14 ` Brian Harring 2006-09-23 13:50 ` Mike Frysinger 2006-09-23 13:59 ` Mike Frysinger 2006-09-23 14:30 ` Brian Harring 2006-09-24 3:31 ` Mike Frysinger 2006-09-25 18:16 ` Brian Harring 2006-09-27 6:24 ` Mike Frysinger 2006-09-27 7:54 ` Brian Harring 2006-09-30 18:01 ` Mike Frysinger 2006-09-30 19:34 ` Brian Harring 2006-10-02 12:53 ` Mike Frysinger 2006-09-21 14:14 ` Donnie Berkholz 2006-09-21 14:40 ` Mike Frysinger 2006-09-21 14:54 ` Donnie Berkholz 2006-09-21 15:01 ` Mike Frysinger 2006-09-24 2:36 ` Ciaran McCreesh 2006-09-24 3:13 ` Mike Frysinger 2006-09-21 14:56 ` Duncan Coutts 2006-09-21 15:10 ` Simon Stelling 2006-09-21 15:11 ` Mike Frysinger 2006-09-21 15:41 ` Duncan Coutts 2006-09-21 18:27 ` Luca Barbato 2006-09-21 21:34 ` Duncan Coutts 2006-09-21 23:25 ` Luca Barbato 2006-09-23 10:13 ` Mike Frysinger 2006-09-23 10:35 ` Duncan Coutts 2006-09-23 10:52 ` Mike Frysinger 2006-09-21 14:38 ` Alin Nastac 2006-09-21 14:46 ` Mike Frysinger 2006-09-21 17:24 ` Alin Nastac 2006-09-21 14:51 ` Brian Harring 2006-09-21 17:15 ` Alin Nastac 2006-09-21 19:51 ` Brian Harring 2006-09-23 10:05 ` Mike Frysinger 2006-09-23 14:24 ` Alin Nastac 2006-09-23 14:34 ` Mike Frysinger 2006-09-23 14:53 ` Brian Harring 2006-09-23 15:07 ` Mike Frysinger 2006-09-21 12:05 ` Alin Nastac 2006-09-21 13:50 ` Mike Frysinger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox