Subject: Re: src/gnu/usr.bin/egcs/common
To: NetBSD Userlevel Technical Discussion List <tech-userlevel@NetBSD.ORG>
From: Chris G. Demetriou <cgd@netbsd.org>
List: tech-userlevel
Date: 12/17/1999 16:42:39
woods@most.weird.com (Greg A. Woods) writes:
> I confess I don't really understand.  And I share MCR's frustration
> (though at the moment I don't myself have any direct need to ``fix'' all
> the problems that could be fixed by bumping the major numbers).
> 
> First off, doe anything prevent any given system from having copies of
> the old libraries during a transition phase?

yes, but that doesn't help.


> Secondly, won't this mostly only affect people doing binary upgrades
> (which of course includes those building and tracking -current, albeit
> in a slightly different way), and won't the retention of old library
> binaries solve this?  I can't see this part being any more difficult
> than doing an a.out->elf transition.

What's a binary upgrade?  using the binary you happened to compile
three releases ago?  Using the pre-compiled binary application?


The version problem goes something like:

	you had libc.X
	you had libfoo.Y (depends on libc.X)

	you bump libc.X to libc.(X+1)
	you don't bump libfoo.Y to libfoo.(Y+1), but you recompile it
		thereby getting a dependency on libc.(X+1)

You drop a previously-compiled binary on to a system containing
(compat library) libc.X, and current libraries libc.(X+1) and
libfoo.Y.  Say that that that biinary was built against libc.X and
libfoo.Y.  Because of the lack of version number bumping on libfoo, on
the system with the new libs, the binary depends on:

	libc.X (ok, got it, we've got the compat pkg installed)
	libfoo.Y (we've got it; it's a current libarary)
	libc.(X+1) (because of the libfoo.Y dependency)

note that that needs two, incompatible, versions of libc, which
doesn't and can't function properly.

As an aside: Note that for many base system libraries we currently
(incorrectly) do _NOT_ specify the dependency on libc or other
libraries whose interfaces are used.  This is a historical artifact of
the build process, and is incorrect.  Some of the base system
libraries, on the other hand, do at least part of the right thing, and
most if not all of the X11 libraries do.)



cgd
-- 
Chris Demetriou - cgd@netbsd.org - http://www.netbsd.org/People/Pages/cgd.html
Disclaimer: Not speaking for NetBSD, just expressing my own opinion.