Hi наб,

Thanks for the update, I have some more review notes:

Development documentation nit: I would add a note to d/control on when
Package: httpfs2 can be removed (trixie+1 I suppose) and that a Provides:
httpfs2 should(?) be added to libcurlfs when that happens.

Sponsorship process with gbp: when gbp is involved the convention is for
sponsorees to leave UNRELEASED in d/changelog though that's more important
with teams to make sure it's clear to all DDs whether an upload happend yet
or not.

In any case Sponsors should push the final debian/$version tag (and
sometimes minor packaging tweaks to expedite things) so it's usually least
error prone to have repo access. Easiest way to do that is to move the
packaging repo into the debian/ salsa namespace where any DD has the
appropriate access. Please add me as Owner to the repo (@dxld on Salsa) so
I can do the move if you agree.

Collaborative packaging in git: you pushed your updated version as an
unrelated history. That's very out of the ordinary. Simply adding another
upstream release in the usual way would have been preferred. I've
forcefully merged your new history into my repo with

  $ git merge origin/debian --allow-unrelated-histories --no-ff -Xtheirs

Please don't do that in the future unless absolutely necessary even during
initial review it makes it harder for your sponsor to review your changes
between rounds -- which is like the whole point of using a VSC for
packaging and the sponsorship process in the first place :-)

On Tue, Oct 15, 2024 at 08:12:44PM +0200, наб wrote:
> > 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

Right, this shouldn't be in your upstream version. I don't think it's
likeley it will matter either way in our case, just trying to keep to best
practices where possible.

> 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.

Yeah thats what I was thinking.

I did some more upgrade experiments to understand whats going on here and
why the advice is the way it is from first principles:

First off unversioned Breaks+Replaces doesn't work because installing our
httpfs2 1-1 transitional package would be blocked completely:

  libcurlfs : Breaks: httpfs2 but 1-1 is to be installed

Alright so we want to include 0.1.4-1.1 and exclude 1-1 at the very least,
so the tightest bound to achive that is (<= 0.1.4-1.1).

So why is the advice to use << instead of <=? I believe this is to cover
the +local1 and similar cases Peter mentions where higher version numbers
may be yet to come.

For example if we declare (<= 0.1.4-1.1) but the user has a
0.1.4-1.1+local1 installed that that would prevent the upgrade to our
transition package.

Alright so we don't want to be that tight let's increment the Debian
revision and consider (<< 0.1.4-2), what's wrong with that?

In our case nothing that I can see, but in the framework of Peter's advice
a -2 upload is a real possibility and if someone were to backport it you'd
end up with 0.1.4-2~bpo12 satisfying Replaces: (<< 0.1.4-2). I'm not sure
that's really a problem but it's not really desired and thinking about the
consequences seems harder than just excluding the backport version from the
relation by appending ~.

So I'm still torn on which of 0.1.4-2~ and 1-1~ is technically better, but
I'm pretty sure either will be fine in this case :)

> > > 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".

I am a bit worried we may be subverting policy here since a new httpfs2
upstream release and subsequent re-introduction would now have to employ an
epoch to override our transition package, but given that httpfs2 has been
removed I reckon it's version namespace is up for grabs.

> > 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).

Eh, I don't see that bug reaching consensus ;) Your call.

On Tue, Nov 05, 2024 at 11:00:11PM +0100, наб wrote:
> On Tue, Oct 15, 2024 at 08:12:45PM +0200, наб wrote:
> > Made libcurlfs 1, updated the gits to have 1-1 (and << 1-1~).
> > Doesn't build on CI due to the perl transition
>
> It does now! and ci.debian.net apparently actually runs tests with
> Restrictions: isolation-machine so they will probably get exercised :)

Nice.

--Daniel

Attachment: signature.asc
Description: PGP signature

Reply via email to