Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie

2016-03-12 Thread Andreas Beckmann
Hi,

On 2016-03-11 16:49, Andreas Henriksson wrote:
> It would be very welcome if you wanted to test the two steps I see.

Logs attached. Both steps worked.

It's a bit more involved than I initially thought. We cannot create a
reference upgrade path jessie -> sid right now. So I created a fake
reference from just plain sid (which also triggered a bug in seldomly
used piuparts options --save-end-meta, --end-meta). Therefore ignore the
final failure since the upgraded system doesn't perfectly match the fake
reference system I provided. Also ignore the fact that there is a
downgrade to the sid versions at the end - it's just trying to restore
the reference state (since it involved (pseudo-)essential packages,
usually the tested packages would be just removed).

If there are some more upgrade paths you are interested in (e.g. extra
packages from jessie installed initially), please let me know.


Andreas

PS: If you add a Packages.gz to the packages you provided, I could
directly use your URLs a testdebs repos without mirroring them.
(dpkg-scanpackages . | gzip -9 > Packages.gz)



step1.a.log.gz
Description: application/gzip


step2.a.log.gz
Description: application/gzip


Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie

2016-03-11 Thread Andreas Henriksson
Hello Andreas! :)

On Fri, Mar 11, 2016 at 02:49:46PM +0100, Andreas Beckmann wrote:
> Hi Andreas,
> > 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
> 
> [... cut long explanation ...]
> 
> That sounds complicated, and I don't have time to look into the details
> right now. But I could help if you want to get upgrade paths tested with
> piuparts.

Thanks for your offer! 
It would be very welcome if you wanted to test the two steps I see.

step1: fix this bug report (in a contained fashion to u-l), packages at:

https://people.debian.org/~ah/817857/step1/

(This is the same packaging changes as previously attached diff.)


step2: once things have settled down after step1, revert half the changes of
step1 and do a synchronized upload together with sysvinit. Packages at:

https://people.debian.org/~ah/817857/step2/



I've manually (debootstrap + add sid, local-repo + dist-upgrade) tested:

* stable -> step1 -> step2
* stable -> step2

> 
> Or you can do drop the debs to test in e.g. /tmp/mydebstotest (together
> with a Packages file) yourself and run something like
> 
> piuparts ... -d jessie -d sid --bindmount /tmp/mydebstotest
> --testdebs-repo  /tmp/mydebstotest --distupgrade-to-testdebs --apt hello
> 
> (that will do a dist-upgrade from jessie to sid, but with some newer
> local packages overriding the ones from sid)

Thanks for the hint. I should start using piuparts more myself. Will
look into this once I find more time which is currently scarce.

Regards,
Andreas Henriksson



Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie

2016-03-11 Thread Andreas Beckmann
Hi Andreas,
> 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

[... cut long explanation ...]

That sounds complicated, and I don't have time to look into the details
right now. But I could help if you want to get upgrade paths tested with
piuparts.

Or you can do drop the debs to test in e.g. /tmp/mydebstotest (together
with a Packages file) yourself and run something like

piuparts ... -d jessie -d sid --bindmount /tmp/mydebstotest
--testdebs-repo  /tmp/mydebstotest --distupgrade-to-testdebs --apt hello

(that will do a dist-upgrade from jessie to sid, but with some newer
local packages overriding the ones from sid)

Andreas



Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie

2016-03-11 Thread Andreas Henriksson
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   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: 
 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


Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie

2016-03-10 Thread Ben Bailess
I am seeing the same behavior. Just installed fresh from netinst today, and
tried to dist-upgrade to stretch (with the expectation I'd be moving to
sid after another reboot + dist-upgrade) and I hit the dep loop as
described above.

Tried going straight from Jessie --> sid too but ran into same error and
cannot proceed (thinking perhaps the fix had hit Sid but not stretch).

Thanks for th effort to fix.

Ben


Bug#817857: util-linux: Depends/Breaks loop with Essential packages prevents upgrade from Jessie

2016-03-10 Thread Josh Triplett
Package: util-linux
Version: 2.27.1-5
Severity: serious

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)

sysvinit-utils and util-linux are both Essential.

Result:

~$ sudo apt install util-linux
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  init-system-helpers libfdisk1 sysvinit-utils
Suggested packages:
  bootlogd sash dosfstools kbd | console-tools util-linux-locales
The following NEW packages will be installed:
  libfdisk1
The following packages will be upgraded:
  init-system-helpers sysvinit-utils util-linux
3 upgraded, 1 newly installed, 0 to remove and 11 not upgraded.
Need to get 0 B/1198 kB of archives.
After this operation, 930 kB of additional disk space will be used.
Do you want to continue? [Y/n]
E: This installation run will require temporarily removing the essential 
package sysvinit-utils:amd64 due to a Conflicts/Pre-Depends loop. This is often 
bad, but if you really want to do it, activate the APT::Force-LoopBreak option.
E: Internal Error, Could not early remove sysvinit-utils:amd64 (2)