On 2016-06-30 08:09, Chris Leishman wrote:
> Hi Andreas,
> 
> If you don't mind, I was hoping for a little direction in resolving this.

Let's discuss this within the bug report ... even if it does not fit
perfectly.

> It seems I've got a mistake in the packaging, whereby the -dev package for
> the library contains the soname - i.e. libneo4j-client8-dev. I did this
> because it contains the symlink
> ./usr/lib/x86_64-linux-gnu/libneo4j-client.so -> libneo4j-client.so.8.0.0.
> 
> But I believe that was a mistake, and the package should simply be
> libneo4j-client-dev.

That's the reasonable approach (unless you have good reasons to need two
versions of the -dev package, but then you usually need two source
packages, too).

> What's the best way to remove both libneo4j-client7-dev and
> libneo4j-client8-dev, and replace with a package libneo4j-client-dev? I can

Are there any packages with Build-Depends: libneo4j-client[78]-dev?
Do they have versioned dependencies?
Or do all use the virtual package libneo4j-client-dev?

> upload a new package with the new name, but I'm unclear how to force
> removal of the others from the distribution. Will using 'Provides' +
> 'Conflicts' + 'Replaces', as per policy 7.6.2, achieve this? Do I make it
> '(Provides|Conflicts|Replaces): libneo4j-client7-dev libneo4j-client8-dev`?

We currently have:

Package: libneo4j-client7-dev
Source: libneo4j-client
Version: 0.9.2-1
Provides: libneo4j-client-dev
Depends: libneo4j-client7 (= 0.9.2-1)

Package: libneo4j-client8-dev
Source: libneo4j-client
Version: 1.0.0-1
Provides: libneo4j-client-dev
Depends: libneo4j-client8 (= 1.0.0-1)

If you introduce

Package: libneo4j-client-dev
Depends: libneo4j-client8 (= ${binary:Version})
Breaks: libneo4j-client7-dev, libneo4j-client8-dev
Replaces: libneo4j-client7-dev, libneo4j-client8-dev
Provides: libneo4j-client7-dev, libneo4j-client8-dev

that should work quite well. You only need the Provides if there are any
reverse depends/build-depends on the versioned package name.
Breaks+Replaces can be unversioned in this case. Or use a version
constraint of (<< 1.0.0-2~) (assuming the new package will be uploaded
in rev -2).

The old -dev packages will be no longer installable since they have a
strict dependency on the library package, so they will get removed
automatically on upgrades. There won't be an automatic upgrade path that
installs the unversioned -dev package if the versioned -dev package was
installed, but that is probably no needed (v7 was never in stable, only
in testing, v8 won't go to testing).


Andreas

Reply via email to