Hi! On Tue, Oct 15, 2024 at 06:16:58PM +0200, Daniel Gröber wrote: > On Mon, Sep 09, 2024 at 03:44:31AM +0200, наб wrote: > > > You need Conflicts+Replaces, not +Breaks, > > > cf. > > > https://www.debian.org/doc/debian-policy/ch-relationships.html#replacing-whole-packages-forcing-their-removal > > > > > > Quoting policy: > > > > When one binary package declares a conflict with another using a > > > > Conflicts field, dpkg will refuse to allow them to be unpacked on the > > > > system at the same time. This is a stronger restriction than Breaks, > > > > which prevents the broken package from being configured while the > > > > breaking package is in the “Unpacked” state but allows both packages to > > > > be unpacked at the same time. > > > > > > Since you include an overlapping httpfs2 symlink in your package Breaks is > > > inappropriate as even just unpacking would cause a file conflict with > > > httpfs2. > > > In particular, when moving files between packages, > > > use Breaks plus Replaces, not Conflicts plus Replaces. > > and > > https://www.debian.org/doc/debian-policy/ch-relationships.html#s-replaces > > agrees on this point; I think this best describes what we're trying to > > do here, since... > Hmm, yeah. Now that I think about it again the httpfs2 transitional package > would depend on libcurlfs and it having a Conflicts: httpfs2 would probably > make httpfs2 uninstallble :) > > The only nit I have is we may want to add a ~ at the end of the > replaces+breaks constraints. > See https://lists.debian.org/debian-devel/2024/10/msg00094.html for a > similar discussionbut it's probably not critical in this case. Hm. As I read it, the ~ is only really meaningful with a Debian version (except for, like, +really versions? maybe?), and I have "httpfs2 (<< 0.1.5)". This indicates to me that this should be "httpfs2 (<< 1-1~)", since this package supersedes all httpfs2es older than 1, even if someone has a newer "real" httpfs2 installed locally.
> > > One idea I had was to just to build a httpfs2 pseudopackage that depends > > > on > > > libcurlfs as part of src:libcurlfs. > > ...so > > httpfs2 Arch=all transitional package Depends: libcurlfs > > libcurlfs Breaks+Replaces: httpfs2 (<< 0.1.5) > > since we're moving /bin/httpfs2 &c. from httpfs2=0.1.4 to libcurlfs=0-1. > > > > This also means we need to start this package at epoch 1 > > (since 0-1 < 0.1.4-1.1+b1, and we want a httpfs2 that sorts newer). > Since you control the upstream version number I would prefer it if you > simply bumped it to be larger than httpfs2's instead of using an epoch > here. Sure, I can justify this as "this is httpfs2 1, too". > If you do want to go with the epoch per d-policy (5.6.12 `epoch`) you > should consult d-devel before doing so. While this is a new package we are > squatting on the httpfs2 name with the transitional package so I think it > would still be required. Yeah, I foolishly hoped this would be sufficiently run-of-the-mill to not warrant this, but this is clearly not the case. > Come to think of it: why aren't you packaging this as a native package if > you're upstream anyway? Means you only need one git repo and only one > branch. No need for gbp's upstream/debian branch distinction either. Just > makes things simpler. On principle, I never mix downstream packaging with the upstream, and maybe I'm too gbppilled, but the standard gbp setup I find much easier. Plus, this makes it impervious to #986320! (if it's ruled as "don't native unless it's Debian infra"; unlikely, given we have 822 native packages, but). > > This configuration fresh-installs and upgrades fine for me on bookworm. > > I've updated the gits thus. > Looks fine to me too. Autoremove even picks up httpfs2 for removal. Neat. I > didn't know that handles transitional packages! > $ apt-get autoremove > Reading package lists... Done > Building dependency tree... Done > Reading state information... Done > The following packages will be REMOVED: > fuse httpfs2 libfuse2 I remember reading some manual that said to format transitionals like this, for "special handling", didn't know that was this. Cool! Made libcurlfs 1, updated the gits to have 1-1 (and << 1-1~). Doesn't build on CI due to the perl transition, but it works locally. Best, наб
signature.asc
Description: PGP signature