On Monday, February 25, 2002, at 07:58 , David R. Morrison wrote:

> Kyle Moffett <[EMAIL PROTECTED]> wrote:
>
>> On Monday, February 25, 2002, at 11:20 , David R. Morrison wrote:
>>> Packages containing both binary files and libraries
>>>
> [snip]
>>
>> I would recommend that the foo package not be foo3.  I think that since
>> we can only have one foo headers package installed at a time, it would
>> be a lot easier for conflicts and replaces to have just foo.
>>
>
> This doesn't work.  Let's say that foo3 has just been released, and you
> have 10 installed packages which depend on the foo2 library.  We have
> to wait for the maintainers of those packages to update from foo2 to
> foo3, because the incompatible API might cause breakage which the
> maintainer has to deal with.  In the meanwhile, the maintainer might
> still update the old package to a new version, still depending on foo2.
>
> So you have to have the ability to load foo2 or foo3 depending on which
> package you are compiling at the moment.  When you load foo2, a symlink
> is created:  libfoo.dylib -> libfoo.2.dylib so that all compiles link
> to version 2.  Later if you load foo3, you get libfoo.dylib ->
> libfoo3.dylib and the links are made with version 3.  Even later you
> might need to reload foo2 again to compile a different package.

The package maintainers should do something like:
BuildDepends: foo
Depends: foo2-shlibs

Then they don't care about foo, because the version needed already 
depends on foo2-shlibs (I think that will work)

Or even if it doesn't work, then:

BuildDepends: foo (>= 2.0.0 <<3.0.0)
Depends: foo2-shlibs

I think thats the right syntax anyway.

The big problem here is the Replaces and Conflicts.  For four versions 
of some package, are we going to have this?
foo2
        Conflicts: foo3, foo4, foo5
        Replaces: foo3, foo4, foo5
foo3
        Conflicts: foo2, foo4, foo5
        Replaces: foo2, foo4, foo5
foo4
        Conflicts: foo2, foo3, foo5
        Replaces: foo2, foo3, foo5
foo5
        Conflicts: foo2, foo3, foo4
        Replaces: foo2, foo3, foo4

This is ridiculous for four versions of a library.  If we combine the 
header package names we can take advantage of already written code in 
fink, namely the  versioning and version replacement system, where stuff 
conflicts with earlier and later versions of itself.

> [snip]
>
>>> Upgrading presents a problem in this situation, however, since users
>>> won't
>>> be prompted to install <code>foo-bin</code>.  To work around this, 
>>> until
>>> all other package maintainers have revised their packages as above,
>>> your <code>foo</code> package can say
>>> <codeblock>
>>>               Depends: foo-shlibs (= exact.version), foo-bin
>>
>> Here I disagree, since foo3-shlibs and foo4-shlibs represent an
>> incompatable api change, any programs should be the same version as the
>> libraries, therefore foo-bin should: Depends: foo-shlibs (== %v).  
>> Also,
>> just like plain old foo header packages, foo-bin should not have the
>> version in the packagename (Many of them will probably have the same
>> files in them).
>>
>
> Absolutely, the long-term goal is that foo-bin depends on foo-shlibs.
> The recommendation here is for the transition period, and it solves the
> problem which Martin Costabel noticed: when you upgrade, foo-bin might
> not be loaded on your system, even if it is needed by other packages.
> Until the other package-maintainers fix this, you can let foo depend
> on foo-bin (temporarily).

Oops, I just realized I forgot to include my alternative. Sorry! =)

I would recommend that,

foo
        Version: 3.1.2
        Depends: foo3-shlibs
        BuildDepends: foo-bin

foo-bin
        Version: 3.1.2
        Depends: foo3-shlibs

With the builddepends, the binaries could be removed later if the user 
didn't want them, otherwise, they would be reinstalled every time foo 
was.

>
> As far as the naming goes, I disagree again.  Of course foo2-bin and
> foo3-bin will conflict and people will have to decide which one they
> want at runtime.  Ultimately (once the long-term goal is achieved)
> this won't affect your ability to switch back and forth between foo2
> and foo3 (the header packages) whenever you need to.

I would like to point out that this tim, the Conflicts and Replaces 
lines begin to get ridiculous if you have four different versions of 
some library available

>   -- Dave

IMHO,
Kyle Moffett


_______________________________________________
Fink-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to