Package: golang-github-cespare-xxhash-v2
Version: 2.3.0-1
Severity: serious
Tags: sid
X-Debbugs-Cc: [email protected]

Dear Maintainer,

The newly introduced binary package golang-github-cespare-xxhash-v2-dev ships
files under /usr/share/gocode/src/github.com/cespare/xxhash/v2/.

However, the existing package golang-github-cespare-xxhash-dev (source
golang-github-cespare-xxhash, version 2.3.0-3) already ships the v2 import
path under the exact same directory hierarchy.

Because golang-github-cespare-xxhash-v2-dev does not declare Breaks or Replaces
against golang-github-cespare-xxhash-dev, attempting to co-install both packages
(for instance, when building or testing packages that depend on the new -v2-dev
package while other dependencies like grpc-dev still depend on xxhash-dev)
fails with a dpkg file overwrite error:

  dpkg: error processing archive 
.../golang-github-cespare-xxhash-v2-dev_2.3.0-1_all.deb (--unpack):
   trying to overwrite 
'/usr/share/gocode/src/github.com/cespare/xxhash/v2/bench_test.go', which is 
also in package golang-github-cespare-xxhash-dev (2.3.0-3)

To fix this and provide a smooth migration path across the archive:

1. In package golang-github-cespare-xxhash-v2-dev, declare:

     Breaks: golang-github-cespare-xxhash-dev (<< 2.3.0-4~)
     Replaces: golang-github-cespare-xxhash-dev (<< 2.3.0-4~)

2. In source package golang-github-cespare-xxhash-v2, add a transitional dummy
   package in debian/control:

     Package: golang-github-cespare-xxhash-dev
     Architecture: all
     Section: oldlibs
     Depends:
      golang-github-cespare-xxhash-v2-dev (= ${binary:Version}),
      ${misc:Depends},
     Description: Go implementation of the 64-bit xxHash algorithm 
(transitional dummy package)
      This is a transitional dummy package to ease upgrades to
      golang-github-cespare-xxhash-v2-dev. It can safely be removed.

Building the transitional binary directly from golang-github-cespare-xxhash-v2
takes over the binary package in DAK (per Developer's Reference § 5.9.3), 
allowing
the old source package to be retired automatically while preserving support for
the ~30 packages in unstable that currently Build-Depend on the legacy package 
name.

Reply via email to