Bug#890590: libcomerr2:i386: no available i386 variant of transitional package

2018-02-24 Thread Adam Conrad
On Thu, Feb 22, 2018 at 04:06:06PM -0500, Theodore Ts'o wrote:
> 
> Thanks for the patch and the explatnation.  Hmmm... so that memans
> that if a package is every Arch:all, it's impossible to ever
> transition to Arch:any without running afoul of the potential for the
> package to be installed for multiple architectures.  Grump.

The inverse, surely.  If it's :any (and m-a:same), changing it to :all
won't work *if it has deps*.

If there weren't deps involved here, it would be fine, since replacing
two installations of old-package with one installation of new-package
would be exactly what you wanted.

But, due to there being deps, you end up with a situation where:

1) We upgrade any->all on the primary arch (say, amd64).
2) libold:amd64 brings in libnew:amd64, but nothing pulls in libnew:i386.
3) libold:i386 and libold:amd64 are now different versions.
4) The situation in (3) isn't allowed, so we remove i386.
5) Anything that depended on libold:i386 now needs to be removed.

Anyhow, with the exception of transitionals, it seems generally weird
that one would want to go from any+same to all, as those tend to cater
to very different types of packages, so meh.

... Adam



Bug#890590: libcomerr2:i386: no available i386 variant of transitional package

2018-02-22 Thread Theodore Ts'o
On Thu, Feb 22, 2018 at 09:32:53AM -0700, Adam Conrad wrote:
> 
> In Ubuntu, the attached patch was applied to achieve the following:
> 
>   * Make transitional library packages be Arch: any and Multi-Arch: same
> so that upgrades actually function correctly when two or more exist.
> 
> It's clear from the multiarch spec that only one arch:all package
> can be installed (ie: you can't have an amd64 and i386 version of
> the same arch:all package, that's nonsensical), and thus this upgrade
> path just doesn't work for people who had multiple versions of the
> libraries installed.  Flipping the transitionals back to arch:any
> and m-a:same fixes the upgrade.

Thanks for the patch and the explatnation.  Hmmm... so that memans
that if a package is every Arch:all, it's impossible to ever
transition to Arch:any without running afoul of the potential for the
package to be installed for multiple architectures.  Grump.

It doesn't matter here, since this is only at transitional package,
but this seems unfortunate.

- Ted



Bug#890590: libcomerr2:i386: no available i386 variant of transitional package

2018-02-22 Thread Adam Conrad
Package: e2fsprogs
Version: 1.43.9-1
Followup-For: Bug #890590
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu bionic ubuntu-patch



In Ubuntu, the attached patch was applied to achieve the following:

  * Make transitional library packages be Arch: any and Multi-Arch: same
so that upgrades actually function correctly when two or more exist.

It's clear from the multiarch spec that only one arch:all package
can be installed (ie: you can't have an amd64 and i386 version of
the same arch:all package, that's nonsensical), and thus this upgrade
path just doesn't work for people who had multiple versions of the
libraries installed.  Flipping the transitionals back to arch:any
and m-a:same fixes the upgrade.

... Adam

-- System Information:
Debian Release: buster/sid
  APT prefers bionic
  APT policy: (500, 'bionic')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.13.0-32-lowlatency (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_CA:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru e2fsprogs-1.43.9/debian/control e2fsprogs-1.43.9/debian/control
--- e2fsprogs-1.43.9/debian/control 2018-02-08 11:09:49.0 -0700
+++ e2fsprogs-1.43.9/debian/control 2018-02-19 06:05:49.0 -0700
@@ -49,7 +49,8 @@
 
 Package: libcomerr2
 Depends: libcom-err2, ${misc:Depends}
-Architecture: all
+Architecture: any
+Multi-Arch: same
 Priority: optional
 Section: oldlibs
 Description: transitional package
@@ -131,7 +132,8 @@
 
 Package: e2fslibs
 Depends: libext2fs2, ${misc:Depends}
-Architecture: all
+Architecture: any
+Multi-Arch: same
 Priority: optional
 Section: oldlibs
 Description: transitional package


Bug#890590: libcomerr2:i386: no available i386 variant of transitional package

2018-02-16 Thread The Wanderer
On 2018-02-16 at 12:31, The Wanderer wrote:

> On 2018-02-16 at 11:42, Theodore Ts'o wrote:

>> If I had created separate transition packages for each architecture
>> separately (e.g., libcommerr2:i386, libcomerr2:amd_64, etc. I
>> belive I would have gotten Lintian errors and complaints that I was
>> wasting ftp space on all of our mirrors).
> 
> I'm not sure what the right way to handle this is, but having a 
> single-architecture or non-architecture-specific transitional package
> attempt to substitute for all the cross-architecture dependencies
> clearly isn't working.
> 
> I'd be glad to help with figuring out what to do on this, but if 
> having a "separate" transitional package for each architecture isn't 
> an option, I'm really not sure what might be...

Having thought about it again (in the shower), I suspect that the
solution is simply to make the transitional package M-A:same, just as
the library package itself is (at least going by my, admittedly
extremely limited, understanding of the multiarch spec).

It looks to me as if any package which needs its dependencies to be the
same architecture as itself - as a library-transition package does -
effectively needs to be M-A:same, even if no files within that package
vary between architectures.

-- 
   The Wanderer

The reasonable man adapts himself to the world; the unreasonable one
persists in trying to adapt the world to himself. Therefore all
progress depends on the unreasonable man. -- George Bernard Shaw



signature.asc
Description: OpenPGP digital signature


Bug#890590: libcomerr2:i386: no available i386 variant of transitional package

2018-02-16 Thread The Wanderer
On 2018-02-16 at 11:42, Theodore Ts'o wrote:

> On Fri, Feb 16, 2018 at 07:05:41AM -0500, The Wanderer wrote:
> 
>> Package: libcomerr2 Version: 1.43.8-2 Severity: normal
>> 
>> Dear Maintainer,
>> 
>> libcom-err2, which is currently at version 1.43.9-1, currently
>> Breaks: any libcomerr2 package of a lower version. This is normal
>> and reasonable.
>> 
>> There is a libcomerr2 package of matching version, which is labeled
>> as a transitional package. This is normal, and working fine.
>> 
>> However, there does not appear to be any libcomerr2:i386 
>> transitional-package version. The most recent version of
>> libcomerr2:i386 available in current testing is 1:43.8-2. (The
>> packages.debian.org pages for libcomerr2 that I know to check show
>> nothing to indicate that this version is expected to be absent, and
>> I have been unable to find any indication of its having been
>> rejected for testing migration for whatever reason, but it is
>> nevertheless not available.)
> 
> There is a libcomerr2:all package which is in in testing:
> 
> https://packages.debian.org/buster/libcomerr2

Yes, I saw that page.

>> As a result, when I attempt to dist-upgrade, apt-get proposes to
>> remove libcomerr2:i386, and everything that (directly or
>> indirectly) depends on it; that includes at least one package which
>> I actively want to retain. (pcsx2, for what it's worth.)
> 
> What I believe *should* have happened is that apt-get should have
> replaced libcomerr2:i386 with the new version of libcomerr2 of type
> any.

If I understand you correctly, I think that's what *is* happening - but
the new libcomerr2 package apparently doesn't satisfy the i386
dependency. In fact, I think it's correct in not doing so, because it
can't possibly know which non-native architectures of its dependency to
pull in.

The arch:all libcomerr2 depends on libcom-err2. Since that dependency
does not explicitly specify any architecture, it resolves to the package
version from the installed native architecture; in this case, that's
libcom-err2:amd64. However, what is needed by the :i386 package
declaring the dependency is libcom-err2:i386, which the arch:all
libcomerr2 does not depend on.

In the long run, the right solution is clearly for the depending
packages (in this case, parts of krb5) to update their dependencies to
libcom-err2. That doesn't affect the question of getting things to work
cleanly during the transitional period, though.

> If I had created separate transition packages for each architecture
> separately (e.g., libcommerr2:i386, libcomerr2:amd_64, etc. I belive
> I would have gotten Lintian errors and complaints that I was wasting
> ftp space on all of our mirrors).

I'm not sure what the right way to handle this is, but having a
single-architecture or non-architecture-specific transitional package
attempt to substitute for all the cross-architecture dependencies
clearly isn't working.

I'd be glad to help with figuring out what to do on this, but if having
a "separate" transitional package for each architecture isn't an option,
I'm really not sure what might be...

-- 
   The Wanderer

The reasonable man adapts himself to the world; the unreasonable one
persists in trying to adapt the world to himself. Therefore all
progress depends on the unreasonable man. -- George Bernard Shaw



signature.asc
Description: OpenPGP digital signature


Bug#890590: libcomerr2:i386: no available i386 variant of transitional package

2018-02-16 Thread Theodore Ts'o
On Fri, Feb 16, 2018 at 07:05:41AM -0500, The Wanderer wrote:
> Package: libcomerr2
> Version: 1.43.8-2
> Severity: normal
> 
> Dear Maintainer,
> 
> libcom-err2, which is currently at version 1.43.9-1, currently Breaks:
> any libcomerr2 package of a lower version. This is normal and
> reasonable.
> 
> There is a libcomerr2 package of matching version, which is labeled as a
> transitional package. This is normal, and working fine.
> 
> However, there does not appear to be any libcomerr2:i386
> transitional-package version. The most recent version of libcomerr2:i386
> available in current testing is 1:43.8-2. (The packages.debian.org pages
> for libcomerr2 that I know to check show nothing to indicate that this
> version is expected to be absent, and I have been unable to find any
> indication of its having been rejected for testing migration for
> whatever reason, but it is nevertheless not available.)

There is a libcomerr2:all package which is in in testing:

https://packages.debian.org/buster/libcomerr2

> As a result, when I attempt to dist-upgrade, apt-get proposes to remove
> libcomerr2:i386, and everything that (directly or indirectly) depends on
> it; that includes at least one package which I actively want to retain.
> (pcsx2, for what it's worth.)

What I believe *should* have happened is that apt-get should have
replaced libcomerr2:i386 with the new version of libcomerr2 of type
any.

If I had created separate transition packages for each architecture
separately (e.g., libcommerr2:i386, libcomerr2:amd_64, etc. I belive I
would have gotten Lintian errors and complaints that I was wasting ftp
space on all of our mirrors).

Cheers,

- Ted



Bug#890590: libcomerr2:i386: no available i386 variant of transitional package

2018-02-16 Thread The Wanderer
Package: libcomerr2
Version: 1.43.8-2
Severity: normal

Dear Maintainer,

libcom-err2, which is currently at version 1.43.9-1, currently Breaks:
any libcomerr2 package of a lower version. This is normal and
reasonable.

There is a libcomerr2 package of matching version, which is labeled as a
transitional package. This is normal, and working fine.

However, there does not appear to be any libcomerr2:i386
transitional-package version. The most recent version of libcomerr2:i386
available in current testing is 1:43.8-2. (The packages.debian.org pages
for libcomerr2 that I know to check show nothing to indicate that this
version is expected to be absent, and I have been unable to find any
indication of its having been rejected for testing migration for
whatever reason, but it is nevertheless not available.)

As a result, when I attempt to dist-upgrade, apt-get proposes to remove
libcomerr2:i386, and everything that (directly or indirectly) depends on
it; that includes at least one package which I actively want to retain.
(pcsx2, for what it's worth.)

Please make sure that the i386 transitional package, suitable to satisfy
this dependency chain, is available alongside the amd64 one.

It may also be worth checking into whether transitional-package versions
for any other architectures are also MIA.


-- System Information:
Debian Release: buster/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.14.0-3-amd64 (SMP w/12 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8),
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)
LSM: AppArmor: enabled

Versions of packages libcomerr2:i386 depends on:
ii  libc6  2.26-6

libcomerr2:i386 recommends no packages.

libcomerr2:i386 suggests no packages.

-- debconf-show failed