Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Mike Frysinger
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


pgp8bgoWaDBYG.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Mike Frysinger
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


pgpXbGNFGDdo9.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Mike Frysinger
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


pgpQseGjV9xuk.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Brian Harring
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


pgpW99BPE62sk.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Mike Frysinger
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


pgpyAGCZ2QnUO.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Mike Frysinger
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


pgpWyxlIfwykH.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Alin Nastac
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.



signature.asc
Description: OpenPGP digital signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Brian Harring
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


pgphglIgSikSW.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Mike Frysinger
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


pgpvTUPVCKbO6.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Brian Harring
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


pgpa8FBw1B83Y.pgp
Description: PGP signature


Re: [gentoo-dev] Re: default USE flags in profiles (oss)

2006-09-23 Thread Christoph Mende
No game I've installed here needs any package with the oss USE flag, those packages that use OSS are fine the ALSA OSS Emulation.2006/9/24, Ryan Hill 
[EMAIL PROTECTED]:Mike Frysinger wrote: oss is dead, why bother going with it in default USE anymore ?alsa forever !
i think the standard argument is games.i've never needed it though.--de.


Re: [gentoo-dev] Re: default USE flags in profiles (oss)

2006-09-23 Thread Diego 'Flameeyes' Pettenò
On Sunday 24 September 2006 00:13, Christoph Mende wrote:
 No game I've installed here needs any package with the oss USE flag, those
 packages that use OSS are fine the ALSA OSS Emulation.
That requires oss useflag on alsa-driver.

-- 
Diego Flameeyes Pettenò - http://farragut.flameeyes.is-a-geek.org/
Gentoo/Alt lead, Gentoo/FreeBSD, Video, AMD64, Sound, PAM, KDE


pgp6VpgkYXSuf.pgp
Description: PGP signature


Re: [gentoo-dev] Re: default USE flags in profiles (oss)

2006-09-23 Thread Christoph Mende
Well ok, I don't use alsa-driver ;)2006/9/24, Diego 'Flameeyes' Pettenò [EMAIL PROTECTED]:
On Sunday 24 September 2006 00:13, Christoph Mende wrote: No game I've installed here needs any package with the oss USE flag, those packages that use OSS are fine the ALSA OSS Emulation.That requires oss useflag on alsa-driver.
--Diego Flameeyes Pettenò - http://farragut.flameeyes.is-a-geek.org/Gentoo/Alt lead, Gentoo/FreeBSD, Video, AMD64, Sound, PAM, KDE



Re: [gentoo-dev] Re: default USE flags in profiles (oss)

2006-09-23 Thread Vlastimil Babka

Diego 'Flameeyes' Pettenò wrote:

On Sunday 24 September 2006 00:13, Christoph Mende wrote:
  

No game I've installed here needs any package with the oss USE flag, those
packages that use OSS are fine the ALSA OSS Emulation.


That requires oss useflag on alsa-driver.
  
How bout changing this flag to aoss and making it new default instead 
of oss? mozilla-launcher already has an aoss flag.
Or wait for per-package USE defaults and use it for oss in alsa-driver 
as an exception.

--
Vlastimil Babka (Caster)
Gentoo/Java
--
gentoo-dev@gentoo.org mailing list



Re: [gentoo-dev] Re: default USE flags in profiles (oss)

2006-09-23 Thread Diego 'Flameeyes' Pettenò
On Sunday 24 September 2006 03:21, Vlastimil Babka wrote:
 How bout changing this flag to aoss and making it new default instead
 of oss? mozilla-launcher already has an aoss flag.
A flag that I don't like at all, as it should have probably been alsa, but 
it was difficult to implement without proper usable package.use.mask (will 
take time before we can actually use it). This because aoss doesn't enable 
ALSA's *oss emulation*, but uses media-libs/alsa-oss to provide an 
indirection layer that filters accesses to DSP devices to move the data to 
ALSA. A similar thing is done by esddsp, artsdsp, padsp.

 Or wait for per-package USE defaults and use it for oss in alsa-driver
 as an exception.
Yes this is feasible, but for the time being I'd rather not have to receive in 
my [EMAIL PROTECTED] folder two bugs a day about people wanting OSS emulation 
in 
alsa-driver.

-- 
Diego Flameeyes Pettenò - http://farragut.flameeyes.is-a-geek.org/
Gentoo/Alt lead, Gentoo/FreeBSD, Video, AMD64, Sound, PAM, KDE


pgpebHWnWNzsa.pgp
Description: PGP signature


Re: [gentoo-dev] RFC about another *DEPEND variable

2006-09-23 Thread Ciaran McCreesh
On Thu, 21 Sep 2006 11:01:40 -0400 Mike Frysinger [EMAIL PROTECTED]
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:  ... 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



signature.asc
Description: PGP signature