Skip to content

Unclear how to model builds where different binary packages have different versions

While it's relatively rare, there are some source packages that use dpkg-gencontrol -v to give different versions to the different binary packages they build. The first example that comes to mind is gcc-defaults: currently in unstable, gcc is at version 4:13.2.0-2 while libgphobos-dev is at version 13.2.0-2.

It's not clear how this is supposed to be modelled in debusine. The current specification of debian:binary-packages says:

This artifact represents the set of binary packages (``.deb`` files and
similar) produced during the build of a source package for a given
architecture.
...
  * srcpkg-name: the name of the source package
  * srcpkg-version: the version of the source package
  * version: the version used for the build (can be different from the
    source version in case of binary-only rebuilds)

This says both that there's one ("the") set of binary packages for each build, and that there is a unique binary version. Both things can't be true.

Possible fixes might include:

  • split the artifact into individual debian:binary-package artifacts (but the discussion in !427 (merged) seemed to prefer to avoid that idea)
  • turn version into a dictionary in some way
  • partition the artifact into one debian:binary-packages per unique binary version (but this feels like the worst of both worlds)
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information