(1) dconf-service depends default-dbus-session-bus | dbus-session-bus
(2) default-dbus-session-bus is provided by an Architecture: all package, but
depends on systemd
APT refuses to install that.
I think it makes sense to amend section 7.1 with the following information:
Packages on the left hand side of a pipe symbol should either be installable
or should not exist in the given situation (for example, because it is linux-only
and the package only exists on non-Linux platform).
On Tue, 17 Oct 2017 at 18:12:29 +0200, Julian Andres Klode wrote:
(1) dconf-service depends default-dbus-session-bus | dbus-session-bus
(2) default-dbus-session-bus is provided by an Architecture: all package, but
depends on systemd
APT refuses to install that.
This specific instance of a more general problem is #878878.
I think it makes sense to amend section 7.1 with the following information:
Packages on the left hand side of a pipe symbol should either be installable
or should not exist in the given situation (for example, because it is linux-only
and the package only exists on non-Linux platform).
In #878878 I'm intending to fix that by:
- changing dbus-user-session from Architecture: all to
Architecture: linux-any (which means we'll have 20 copies of it instead
of one, counting non-release architectures, but that's the price we pay
for retaining best-effort support for non-Linux kernels)
- changing dbus-x11 to add Provides: d-d-s-b [!linux-any]
Is that the resolution that you would recommend?
APT's solver is greedy and sometimes has a hard time to recover from paths that
don't work out in the end. We see this with opencv failing to build on !linux-any
because:
(1) dconf-service depends default-dbus-session-bus | dbus-session-bus
(2) default-dbus-session-bus is provided by an Architecture: all package, but
depends on systemd
APT refuses to install that.
I think it makes sense to amend section 7.1 with the following information:
Packages on the left hand side of a pipe symbol should either be installable
or should not exist in the given situation (for example, because it is linux-only
and the package only exists on non-Linux platform).
This would help reduce hard to solve situations for greedy algorithms.
On Tue, Oct 17, 2017 at 11:02:21AM -0700, Jonathan Nieder wrote:
This is made especially difficult because since policy 4.0.1.0 we are not able
to rely on 'priority: optional' packages being installable any more.
Oh did we drop that? Why? So I can build Arch: all packages depending on linux-any
stuff now? The strict installability requirement is much nicer than this one (the
problem is essentially not recursive anymore), and would solve the problem as well.
Hi,
Julian Andres Klode wrote:
APT's solver is greedy and sometimes has a hard time to recover from paths that
don't work out in the end. We see this with opencv failing to build on !linux-any
because:
(1) dconf-service depends default-dbus-session-bus | dbus-session-bus
(2) default-dbus-session-bus is provided by an Architecture: all package, but
depends on systemd
APT refuses to install that.
I think it makes sense to amend section 7.1 with the following information:
I agree with this goal.
Packages on the left hand side of a pipe symbol should either be installable
or should not exist in the given situation (for example, because it is linux-only
and the package only exists on non-Linux platform).
This would help reduce hard to solve situations for greedy algorithms.
I'm wondering how a packager would go about fulfilling this recommendation. Should they audit their dependencies (and dependencies' dependencies, etc) for
installability? Is there a reliable process they can follow for this?
This is made especially difficult because since policy 4.0.1.0 we are not able
to rely on 'priority: optional' packages being installable any more.
Without such advice, I don't think this makes sense to add as a normative change
to policy (or in other words a policy "should"). An informative note would still be useful, though.
On Wed, 18 Oct 2017 at 11:54:49 +0200, Julian Andres Klode wrote:
On Tue, Oct 17, 2017 at 11:02:21AM -0700, Jonathan Nieder wrote:
This is made especially difficult because since policy 4.0.1.0 we are not able
to rely on 'priority: optional' packages being installable any more.
Oh did we drop that? Why? So I can build Arch: all packages depending on linux-any
stuff now? The strict installability requirement is much nicer than this one (the
problem is essentially not recursive anymore), and would solve the problem as well.
The change in Policy 4.0.1 was to drop the requirement that
Priority: optional packages are non-conflicting. This is orthogonal to
the situation with dbus-user-session, but introduces a new way in which
a package might be uninstallable for a non-obvious reason (previously,
you could assume that Priority >= optional would never be uninstallable
due to conflicts).
Arch: all packages depending on linux-any packages are another case
of packages being uninstallable for reasons that are at least arguably legitimate. dbus-user-session is an example of this case (its next upload will be linux-any, duplicating the package 20 times but ensuring that
it only appears on architectures where it would be installable). This
didn't change in Policy 4.0.1.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 293 |
Nodes: | 16 (2 / 14) |
Uptime: | 241:18:50 |
Calls: | 6,624 |
Files: | 12,173 |
Messages: | 5,320,138 |