#1067675 library package (arch any) depending on a "common" package with too strict version constraint

#1067675#5
Date:
2024-03-25 12:32:51 UTC
From:
To:
This is a bad packaging practice which happens way to often within all
the GTK/Gnome packaging (cloning for mutter as well).  The scenario goes
as follows:

  - upload a new package

  - build fails on "all", not building the "common" package.

  - build succeeds on other architectures, in most cases
    because the packagers don't run the tests, or ignore test
    results.

  - the packages then are not installable anymore until the
    uploads are in sync, blocking any other builds depending
    on these packages.  This can take a long, if the uploader
    goes to vacation, or a new package build takes ages (yes,
    LLVM had that issue as well, and LLVM builds take days).

proposed patch attached. Note that (>= ${source:Version}) has the same
problem, and doesn't help either. Feel free to use some other version
constraint than the upstream version.

diff -Nru folks-0.15.9/debian/control folks-0.15.9/debian/control
--- folks-0.15.9/debian/control	2024-03-23 12:41:20.000000000 +0100
+++ folks-0.15.9/debian/control	2024-03-24 22:06:08.000000000 +0100
@@ -31,7 +31,7 @@

  Package: libfolks26
  Architecture: any
-Depends: folks-common (= ${source:Version}),
+Depends: folks-common (>= ${upstream:Version}),
           ${misc:Depends},
           ${shlibs:Depends}
  Recommends: libfolks-eds26
diff -Nru folks-0.15.9/debian/rules folks-0.15.9/debian/rules
--- folks-0.15.9/debian/rules	2024-03-23 12:41:20.000000000 +0100
+++ folks-0.15.9/debian/rules	2024-03-24 22:06:08.000000000 +0100
@@ -35,3 +35,8 @@
  	dh_auto_test --no-parallel -- --timeout-multiplier 3

  override_dh_gnome_clean:
+
+
+override_dh_gencontrol:
+	dh_gencontrol -- \
+	  -Vupstream:Version=$(shell dpkg-parsechangelog -S Version | sed
's/-[^-]*$$//')

#1067675#16
Date:
2024-04-02 19:54:57 UTC
From:
To:
Cloning a bug in the way you did is not very helpful. mutter's
situation is different than folks.

The mutter binary package has Depends: mutter-common (>= ${source:Version})

That allows mutter to be binNMU'd.

An alternative is to do something like evolution which has this override:

dh_makeshlibs -V'libevolution (>= $(DEB_VERSION_UPSTREAM)),
libevolution (<< $(DEB_GNOME_NEXTVERSION))'

which translates to this when built on Unstable (3.50.3-1+b1) :

dh_makeshlibs -V'libevolution (>= 3.50.3), libevolution (<< 3.51)'

We do actually need the upstream version of the -common package to
match the other binary packages. I am not convinced there is even
value in switching to the evolution style since it seems rare for
there to be an upload after the first upload for an upstream version
(-2 or higher basically) where the fact that sometimes arch: all
builds slower than other architectures is enough of a problem in these
packages to make the packaging more complicated.

I would prefer to revert your Ubuntu diff for mutter so that if this
bug is fixed, it is fixed in Debian first.

Thank you,
Jeremy Bícha

#1067675#21
Date:
2024-04-05 08:55:19 UTC
From:
To:
that works for Debian, but not Ubuntu. A failing build on amd64 and
succeeding builds on the other architectures makes the packages
uninstallable on all other architectures.

then please fix it, allowing no-change uploads for Ubuntu as well.

Matthias

#1067675#26
Date:
2024-04-05 12:28:03 UTC
From:
To:
I misunderstood what you were proposing in part because the "patch"
you proposed here was not for mutter and the version you pushed into
Ubuntu had a hardcoded version instead. And I didn't read carefully
enough.

To move your idea forward, I proposed
https://salsa.debian.org/gnome-team/libshumate/-/merge_requests/4
which also is not mutter but I think is a simpler test case which we
can then apply to other packages including mutter if it is accepted.

Thank you,
Jeremy Bícha