Hi Bastian,

On Sat, Apr 10, 2021 at 01:39:15PM +0200, Bastian Blank wrote:
> Exactly, it requires working udev and udev rules for it's primary
> function.  To change that, it either needs

I fear that you still get "primary function" wrong. In many cases, the
primary function of a shared library is being able to load it and then
not calling any of its functions. It may be unfortunate, but that's how
we integrate optional features from shared libraries.

> - to be split into two libraries, one with the stuff that needs udev
>   rules, one for the stuff without or
> - runtime detection if udev can work.

Or maybe it can quite simply fail to work if the udev rules are not
invoked. Demoting the dependency is not a regression in this aspect as
libdevmapper1.02.1 already does not depend on udev, so there already is
no requirement on invoking the udev rules. I'm just asking for also
skipping dmsetup.

> Maybe.  Please provide a patch to fix this problem, without touching
> every piece of software that, directly or indirectly, links against
> libdevmapper.

I'm attaching the obvious patch. I think that we don't actually need to
touch other pieces of software, because it is quite difficult to get a
system without dmsetup. This bug is not about making many systems lack
dmsetup, but about making it possible at all.
 * dmsetup is still recommended by libdevmapper1.02.1, so you need to
   turn off Recommends.
 * dmsetup is pulled by lvm2 and cryptsetup.
 * Given that systemd is important and transitively depends on dmsetup
   at present, we can elevante dmsetup's priority without regressing
   anything. That way it remains part of a default debootstrap.
 * The actual bug that introduced the dmsetup dependency was about a
   mismatched version of dmsetup and libdevmapper1.02.1. Such a
   situation is prevented by suitable Breaks.

> Because the dependency on libdevmapper1.02.1 can only go after systemd
> (or maybe libcryptsetup) got it.

Neither actually need it unconditionally. We really want to be able to
install systemd without dmsetup. That's the highlevel goal of this bug
here.

Helmut
diff --minimal -Nru lvm2-2.03.11/debian/changelog lvm2-2.03.11/debian/changelog
--- lvm2-2.03.11/debian/changelog       2021-02-22 22:39:14.000000000 +0100
+++ lvm2-2.03.11/debian/changelog       2021-04-10 17:14:20.000000000 +0200
@@ -1,3 +1,12 @@
+lvm2 (2.03.11-2.2) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Demote libdevmapper1.02.1 -> dmsetup dependency to versioned Breaks +
+    Recommends. Increase its priority to important to remain in a default
+    debootstrap. (closes: #986652)
+
+ -- Helmut Grohne <hel...@subdivi.de>  Sat, 10 Apr 2021 17:14:20 +0200
+
 lvm2 (2.03.11-2.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff --minimal -Nru lvm2-2.03.11/debian/control lvm2-2.03.11/debian/control
--- lvm2-2.03.11/debian/control 2021-02-22 22:39:14.000000000 +0100
+++ lvm2-2.03.11/debian/control 2021-04-10 17:14:20.000000000 +0200
@@ -144,7 +144,10 @@
 Depends:
  ${shlibs:Depends},
  ${misc:Depends},
- dmsetup (>= ${devmapper:Version}~),
+Breaks:
+ dmsetup (<< ${devmapper:Version}~),
+Recommends:
+ dmsetup,
 Multi-Arch: same
 Description: Linux Kernel Device Mapper userspace library
  The Linux Kernel Device Mapper is the LVM (Linux Logical Volume Management)
@@ -183,6 +186,7 @@
  ${shlibs:Depends},
  ${misc:Depends},
 Multi-Arch: foreign
+Priority: important
 Description: Linux Kernel Device Mapper userspace library
  The Linux Kernel Device Mapper is the LVM (Linux Logical Volume Management)
  Team's implementation of a minimalistic kernel-space driver that handles

Reply via email to