[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: library dependency problem



On Mon, Jul 26, 1999 at 02:19:33AM +0200, Jim Mintha wrote:
> I have a problem with the slang library.  The current version is
> slang1_1.2.2 I began to package the new version 1.3.8.  I installed it
> on my own system to test and everything went fine.  However when I
> upgraded to the latest potato anything depending on slang1 broke
> because they all had depends like:
> 
> slang1 (<< 1.3), slang1 (>> 1.2.2-0)
> 
> When I took over the slang1 package I failed to notice the
> shlibs that defined the above.  The problem is that version 1.3.x is
> compatible with 1.2.  

Hm. This is bad. :(

> This leaves me with a number of options:
> 
> 1.  Just create a new package slang1.3_1.3.8  

Just one note - if you're changing the name, you ought to call it
libslang<soname> as per Policy.

> The problem with this is that users will have slang1 and slang1.3
> installed on their system. And when 1.4 comes along (which should also be
> compatible) I will have to make a slang1.4_1.4 package, and so on.  By 1.8
> users will have 6 slang packages, that could be all compatible.

This option reminds me on the way GTK+ libraries are named... and it
sucks. Don't do it if there's any other solution.

> 2.  Continue to call it slang1 and upload the new version.  It will
> conflict with the old one, replace it and then break the dependencies
> of everything that depends on slang. (note: only breaks the
> dependencies, the packages would otherwise run fine)  Thereby forcing
> everyone else to upgrade their (slang dependent) packages.

If it is a good thing to recompile against the new library version,
and considering the fact that number of source packages that depend
on slang currently is about 30, this is something that Debian can
do for potato...

> 3.  Create some sort of dummy package that the new package depends on
> and it provides 1.2.9 or something like that.  (seems like a bad idea
> in general)  

This is possible, create slang1 1.2.999dummy-1 package that depends on
libslang1. And then in libslang1's control file set this:

Conflicts: slang1 (<< 1.2.999dummy)
Replaces: slang1 (<< 1.2.999dummy)
Provides: slang1

(the last one is futile, but just for the sake of it)

It might just work :) And nothing would *need* to be recompiled.

The only bad thing about dummy packages in general is that they
are cruft after some time...

-- 
enJoy -*/\*- don't even try to pronounce my first name


Reply to: