Subject: Re: Shared object not found - but all dependencies are ok ?!
To: None <tech-pkg@netbsd.org>
From: Frederick Bruckman <fredb@immanent.net>
List: tech-pkg
Date: 01/14/2005 17:26:46
In article <26135.1105697447@munnari.oz.au>,
Robert Elz <kre@munnari.OZ.AU> writes:
> Date: Thu, 13 Jan 2005 11:42:11 -0800 (PST)
> From: "Jeremy C. Reed" <reed@reedmedia.net>
> Message-ID: <Pine.LNX.4.43.0501131141050.27246-100000@pilchuck.reedmedia.net>
> A solution to this, is for an upgraded package to explicitly state which
> (earlier) versions it is binary compatible with (ie: ABI compatible in a
> forwards direction upgrade).
...or rather, synthesize an ABI version, so we don't have record all the
history in every package.
> fredb@immanent.net said:
> | Another way to get around that, is to depend on a specific file, that is, on
> | "lib/libgdk_imlib.so.10".
>
> Actually, no. That doesn't solve the problem at all. It reduces the
> effect of the problem (stuff like man page updates clearly just vanish as
> issues), but requiring a specific library file isn't enough.
>
> That one just refers to one of the lib/libgdk_imlib.so.10.N actual libraries,
> and there's no guarantee that they're all equally useful for any particular
> binary application. The test would have to be for that particular minor
> version of the library - and then you're back at "upgrade everything" - so
> this has really made no difference at all (though it is better, when the
> dependency is a library, than the current scheme).
OK, so we have to depend on an ABI version, with the minor, at least,
being parsed as a number. So (to make this concrete), packages built
against gdk-pixbuf might get "@libdep libgdk_imlib-so-10-10" at
"pkg_create" time. To install this package, "pkg_add" would take the
open-ended dependencies as hints, until it found a package that had,
in its "+CONTENTS", "libgdk_imlib.so.10.N", with N greater than "10".
This could go further, divorcing the ABI provided from the
filename, somewhat, so the library package might have "@libprovides
lib_gdk-so-10-10", with that automatically computed at package creation
time by default, but with some provision to override for those packages
which bump minor names gratuitiously.
Frederick