Merge ~ginggs/casper:breaks-lupin-casper into casper:main

Proposed by Graham Inggs
Status: Needs review
Proposed branch: ~ginggs/casper:breaks-lupin-casper
Merge into: casper:main
Diff against target: 28 lines (+8/-1)
2 files modified
debian/changelog (+6/-0)
debian/control (+2/-1)
Reviewer Review Type Date Requested Status
Steve Langasek Approve
Julian Andres Klode (community) Approve
Review via email: mp+419855@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Steve Langasek (vorlon) :
review: Needs Fixing
Revision history for this message
Dimitri John Ledkov (xnox) :
Revision history for this message
Steve Langasek (vorlon) :
review: Needs Fixing
Revision history for this message
Graham Inggs (ginggs) wrote :

xnox and I went over this section of policy [1] before I proposed this MR. I've numbered the use cases below for clarity.

"
Normally, Breaks should be used instead of Conflicts since Conflicts imposes a stronger restriction on the ordering of package installation or upgrade and can make it more difficult for the package manager to find a correct solution to an upgrade or installation problem. Breaks should be used

1. when moving a file from one package to another (see Overwriting files and replacing packages - Replaces),

2. when splitting a package (a special case of the previous one), or

3. when the breaking package exposes a bug in or interacts badly with particular versions of the broken package.

Conflicts should be used

4. when two packages provide the same file and will continue to do so,

5. in conjunction with Provides when only one package providing a given virtual facility can be unpacked at a time (see Virtual packages - Provides),

6. in other cases where one must prevent simultaneous installation of two packages for reasons that are ongoing (not fixed in a later version of one of the packages) or that must prevent both packages from being unpacked at the same time, not just configured.
"

1 is applicable
4 is not applicable since we will not have two package continue to provide the same file
2, 3, 5 and 6 are not applicable

[1] https://www.debian.org/doc/debian-policy/ch-relationships.html#conflicting-binary-packages-conflicts

Revision history for this message
Steve Langasek (vorlon) wrote :

On Wed, Apr 20, 2022 at 03:41:29PM -0000, Graham Inggs wrote:
> Conflicts should be used

> 4. when two packages provide the same file and will continue to do so,

I see that the wording in policy allows for this interpretation, because the
other package is going away and therefore will not "continue to" provide the
file.

However, there will never be a version of the package that does NOT provide
the file, because the package itself is dead.

When this part of policy was drafted, I think it was the common
understanding that this referred to the difference between the case where
you wanted to keep both packages installed after upgrade, and the case where
one of the packages would be removed in favor of the other. I have never
seen discussion/analysis of the use of unversioned Breaks suggesting that
this is a good thing to do.

I wouldn't block this, but I still think it's better to use Conflicts
instead of unversioned Breaks here.

Revision history for this message
Julian Andres Klode (juliank) wrote :

Since there is a Replaces, this is covered by Policy 7.6.2 which combines them with Conflicts.

Breaks should always be versioned and indicate that the package should be upgraded to a newer version. This should be a Conflicts, if only because we have code $somewhere (I think it's in update-manager?) in Ubuntu that reads Replaces+Conflicts and calculates a list of obsolete package that should be removed.

Alternatively, update-manager could be tweaked to handle unversioned Breaks like Conflicts, but then policy 7.6.2 needs to be updated to allow for Breaks.

review: Needs Fixing
~ginggs/casper:breaks-lupin-casper updated
323958c... by Graham Inggs

Use Conflicts instead of Breaks, as per review

Revision history for this message
Julian Andres Klode (juliank) wrote :

This looks good. For the change to update-manager to handle Replaces with Breaks, see

https://code.launchpad.net/~juliank/update-manager/remove-breaks/+merge/420537

review: Approve
Revision history for this message
Steve Langasek (vorlon) :
review: Approve

Unmerged commits

323958c... by Graham Inggs

Use Conflicts instead of Breaks, as per review

027d065... by Graham Inggs

Add unversioned Breaks, Replaces on lupin-casper (LP: #1969464)

unversioned because lupin was removed and there is no fixed verson,
and Breaks instead of Conflicts because it it easier for dpkg to resolve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/debian/changelog b/debian/changelog
2index b278f35..04d1af5 100644
3--- a/debian/changelog
4+++ b/debian/changelog
5@@ -1,3 +1,9 @@
6+casper (1.471) UNRELEASED; urgency=medium
7+
8+ * Add Conflicts, Replaces on lupin-casper (LP: #1969464)
9+
10+ -- Graham Inggs <ginggs@ubuntu.com> Tue, 26 Apr 2022 08:05:54 +0000
11+
12 casper (1.470) jammy; urgency=medium
13
14 * Add missing include of casper-helpers, needed by the iso-scan script.
15diff --git a/debian/control b/debian/control
16index 7464642..5c535ed 100644
17--- a/debian/control
18+++ b/debian/control
19@@ -11,8 +11,9 @@ Architecture: any
20 Section: misc
21 Priority: extra
22 Depends: ${shlibs:Depends}, ${misc:Depends}, initramfs-tools (>= 0.92bubuntu55), busybox-initramfs (>= 1:1.1.3-4ubuntu3), dmsetup, user-setup, sudo, eject, uuid-runtime, localechooser-data (>= 2.65ubuntu1) | ubiquity, util-linux (>= 2.15-1), file, lzma, udev (>= 174), cifs-utils, finalrd, fdisk
23-Conflicts: usplash (<< 0.4-43), live-initramfs
24+Conflicts: usplash (<< 0.4-43), live-initramfs, lupin-casper
25 Breaks: genext2fs (<< 1.4.1)
26+Replaces: lupin-casper
27 Tag: admin::boot, admin::filesystem, implemented-in::shell, protocol::smb, role::plugin, scope::utility, special::completely-tagged, works-with-format::iso9660
28 Description: Run a "live" preinstalled system from read-only media
29

Subscribers

People subscribed via source and target branches