Hello Josh Triplett.

Thanks for your bug report ... *double-sigh*.

On Thu, Mar 10, 2016 at 04:18:27PM -0800, Josh Triplett wrote:
[...]
> Even with util-linux 2.27.1-5, I still hit a dependency loop that caused
> apt to refuse to proceed:
> 
> util-linux 2.27.1-5 Depends on init-system-helpers (>= 1.29~)
> init-system-helpers 1.29 Breaks sysvinit-utils (< 2.88dsf-59.3~)
> sysvinit-utils 2.88dsf-59.3 Breaks util-linux (< 2.26.2-3)
[...]

I'm basically ready to throw in the towel, revert the changes
and wait for Stretch to ship with init-system-helpers 1.29 and
then revisit this, even though I'd really like to avoid waiting....

Some info:

util-linux only needs the fixed update-rc.d from i-s-h 1.29 to
be available during config (postinst) phase.

sysvinit-utils should really depend on util-linux rather than Breaks.

Despite both of the above it's not obvious to me how the dependency
loop can be avoided without waiting for stretch.

In theory 'init-system-helpers (>= 1.29~) | initscripts' would be
what I'm trying to say, but I don't think apt/dpkg groks that properly
and initscripts introduces the old u-l<->initscripts<->sysvinit-utils
cycle as well.

My only idea which seems kind of edgy and needs careful consideration
would be to entirely drop the versioned init-system-helpers dependency.
It's only needed if initscripts is not available (*purged*), and as I
see it:
 - in stable, initscripts is not even uninstallable so guaranteed to
   be available (as no relation in the world can make it become purged
   which is needed to cause problems since the contents are conffiles).
 - in testing/unstable, initscripts is not uninstallable until after
   util-linux has been upgraded (and even after that some packages
   in a current normal install keeps depending on initscripts but
   that might change. Nothing in debootstrap --variant=minbase, except
   previous util-linux, deps on initscripts).
- in a partial upgrade from stable where only util-linux has been upgraded
  making it possible to purge initscripts (atleast from
  debootstrap --variant=minbase) causes sysvinit-utils to be upgraded as
  well which in turn has dep: init-system-helpers (>= 1.25~)
  Not quite new enough, but >= 1.25~ and << 1.29~ are not available currently
  in either testing or unstable repos so only outdated partial upgrades
  would be affected. The theoretical gap here is likely so minimal that
  it basically can be ignored.

I'm attaching a patch for the above idea. Feedback very welcome.
Help needed to verify all cases are covered properly.

(Fwiw, if we go ahead without reverting then I'd also like to turn
util-linux dep on sysvinit-utils back into a breaks which needs a
synchronized upload of sysvinit to turn it's breaks on util-linux
into a depends as well. At the same time we could just bump the i-s-h
dependency version to close the above theoretical gap while at it.)

Regards,
Andreas Henriksson



diff --git a/debian/changelog b/debian/changelog
index 045c01c..850a045 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,19 @@
+util-linux (2.27.1-5+test3) UNRELEASED; urgency=medium
+
+  * Drop (versioned) init-system-helpers dependency to avoid dep loop.
+    - initscripts is guaranteed to be installed in stable, the file
+      is additionally a conffile so initscripts will need to be
+      purged to cause a problem for us with i-s-h << 1.29 and purging
+      initscripts is not possible until after the upgrade anyway.
+    (Closes: #817857)
+  * Temporarily move sysvinit-utils back from Breaks to Depends.
+    - again seems to confuse apt and we apparently need a synchronized
+      upload with sysvinit to move things to how it should (and now
+      can be since initscripts dependency was dropped from u-l) be
+      described.
+
+ -- Andreas Henriksson <andr...@fatal.se>  Fri, 11 Mar 2016 10:28:13 +0100
+
 util-linux (2.27.1-5) unstable; urgency=medium
 
   * Completely drop (versioned) tzdata dependency (Closes: #817371)
diff --git a/debian/control b/debian/control
index 351a6cc..20df17f 100644
--- a/debian/control
+++ b/debian/control
@@ -35,8 +35,9 @@ Build-Profiles: <!stage1>
 Section: utils
 Essential: yes
 Pre-Depends: ${misc:Pre-Depends}, ${shlibs:Depends}
-Depends: init-system-helpers (>= 1.29~),
-         ${misc:Depends}
+Depends: ${misc:Depends},
+# conceptually a Breaks:, but confuses apt (#786469)
+          sysvinit-utils (>= 2.88dsf-59.1~),
 Suggests: dosfstools, kbd | console-tools, util-linux-locales
 Replaces: bash-completion (<< 1:2.1-4.1~),
           sysvinit-utils (<< 2.88dsf-59.1~),
@@ -46,7 +47,6 @@ Replaces: bash-completion (<< 1:2.1-4.1~),
 Breaks: bash-completion (<< 1:2.1-4.1~),
           grml-debootstrap (<< 0.68),
           cloud-utils (<< 0.27-1~),
-          sysvinit-utils (<< 2.88dsf-59.1~),
           mount (= 2.26.2-3),
           mount (= 2.26.2-3ubuntu1)
 Multi-Arch: foreign

Reply via email to