On Sep 5, 2006, at 6:05 PM, Jean-François Mertens wrote:

> Sorry Justin _ just thought this deserves wider discussion ...
> So a number of cc's ...
>
> JF
>
> On 06 Sep 2006, at 00:37, TheSin wrote:
>
>> oh I forgot about libxine,
> And dont forget whatever gst-plugins-good-0.10 (or something like
> that...)
>> I thought I got everything that deped on 5.  Thanks yet again, I'm
>> gonna try and get to this stuff in a few hours, I just got back
>> into the office, been in meetings all day.  Like I have been
>> preching for awhile, we almost need one shlib per shlibs pkg, cause
>> they don't always update all at the same time.
>
> So happy to hear this !  Finally basic logic retuns ...
> The 'shlibs-policy' seems conceptually a complete confusion between
> properties of a pkg
> and properties of individual libs within them ..
> And with pkgs (eg, seamonkey, evolution in my exp dir), with dozens
> of shlibs, it is hopeless
>   _ just a nightmare : the set itself of shlibs changes with every
> change in either %c or %v  or ...
> Given that we have in addition a "Shlibs" field, which DOES give to
> fink all relevant info
> about individual libs within a pkg, we shouldn't have to distinguish
> between individual libs
> within a '-shlibs' splitoff (I mean , split the splittoff into
> whatever subsets _
> such subdivision varies with very change in %c and %v ; hence is un-
> maintainable)
>
>
> the confusion within fink seems to be really here :
>
> _ the pkg-specific  things in should be "item1" (ie, the "SpilOffs"-
> shlibs field ...)
> _ the lib-specific things should be "item2" _ ie, the ShLibs field _
> and fink has all liberty  to re-interpret such things in dpkg dep
> instructions etc)
>
> I.e., _ the current type of setup for info files is exactly right,
> but  there is a lot of work to be done
> by fink to use the information correctly.

We are limited here by what dpkg can do.  Everything that dpkg  
installs has to be in a package, and the SplitOff mechanism was  
designed to allow more than more package to be produced from a  
single .info file.

Now the problem is this: once a shared library has had other things  
link to it, we must be careful not to remove it if those other things  
are still present.  We may upgrade, but only if the upgrade is  
backwards-compatible.

So we have a policy which says: if your package declares a shared  
library by means of the shlibs field, then other packages can rely on  
the following: if they depend on this package (as specified in the  
shlibs field), then the shared library they need will always be  
available.

(Strictly speaking, this policy only applies to shared libraries with  
a public API: if a package creates a shared library which will only  
be used by the package, and doesn't export an API which would allow  
it to be linked by other packages, then the policy need not apply.)

It is obviously easiest, when packaging, to put all the shared  
libraries into a single shlibs splitoff, but of course this can cause  
problems if the shared libraries are updated independently.  However,  
with some care, an upgrade can be constructed which accounts for all  
of the needed packages.

It's easiest to illustrate this with an example.  Suppose that  
package foo-1.0-1 has a splitoff foo-shlibs-1.0-1 which contains two  
shared libraries: libfoo.1.dylib and libbar.1.dylib.  But now suppose  
that foo is updated to version 2.0, which provides libfoo.2.dylib and  
libbar.1.dylib.  That is, libbar was not updated, but libfoo was.

In the new package, we will have two splitoffs: foo2-shlibs and bar1- 
shlibs.  (Well, we have more than that, because we'll have foo2-dev  
and bar1-dev in addition, at least.)  Dividing the old splitoffs in  
half is not really a big problem.  Everything here will be built from  
the new foo-2.0 tarball.

But we also need to construct foo-shlibs-1.0-2 for backward  
compatibility, and that one will still be based on the foo-1.0  
tarball.  The trick here is to *only* store libfoo.1.dylib in foo- 
shlibs-1.0-2, but to *also* make it depend on the new bar1-shlibs  
splitoff of the other package.  What does this accomplish?  Well, the  
previous Shlibs field promised that if we depend on foo-shlibs we  
will get both libfoo.1.dylib and libbar.1.dylib, and this promise has  
been kept: the first library is actually *in* the package, and the  
second library is in a (new) dependency of the package.

Of course, in the foo-shlibs-1.0-2 package, the Shlibs field only  
indicates libfoo.1.dylib, while the new bar1-shlibs package will have  
a Shlibs field for libbar.1.dylib.

I hope this example was clear.

   -- Dave



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to