[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: merged /usr



On Sat, 14 Aug 2021 at 16:59:24 +0200, David Kalnischkies wrote:
> Wouldn't it be kinda strange to have the chroots building the packages
> for the first bookworm release using a layout which isn't supported by
> bookworm itself…

Yes, it's a little strange, but that's what happens when we don't want
a mid-release-cycle flag day: we have to sequence things somehow. For best
robustness for users of non-merged-/usr, build chroots should likely
be one of the last things to become merged-/usr, and build chroots for
suites like buster and bullseye that support non-merged-/usr should stay
non-merged-/usr until those suites are completely discontinued.

Note that packages built in a non-merged-/usr chroot work fine on a
merged-/usr system, as long as they don't contain both /foo and /usr/foo
(which is more likely to be a fact about the package than a fact about
the chroot, and would already be considered RC since buster).

The failure mode we have sometimes seen is packages that were built in
a merged-/usr chroot not working on a non-merged-/usr system, although
that's detected by the reproducible-builds infrastructure and is already
considered to be a bug since buster (AIUI it's considered a non-RC bug
in buster and bullseye, as a result of things like #914897 mitigating it).

The reason for this choice of sequencing is that we *do* care about
existing installations (specifically, those that were installed before
buster or with non-default debootstrap options, and have been upgraded
since then without installing usrmerge or carrying out the /usr merge
some other way).

> > 2. bookworm release: systems must transition at or before the upgrade to
> >    bookworm (bullseye systems are not required to transition until/unless
> >    they are upgraded)
> 
> The "at" in this sentence means that all bookworm packages must support
> unmerged

Yes, that's what I said: package maintainers must not assume/require
the new layout until step 3, which is when they start uploading to
unstable post-bookworm. If package maintainers want to be able to
assume/require merged-/usr sooner, then they are going to be disappointed,
but that's part of the price we pay for having upgrades that work.

In the timeline I outlined, the target layout (merged /usr, according
to the technical committee resolution) is the only thing officially
supported *for bookworm as a whole* - but every[1] package in bookworm,
individually, must support both the target layout and the "other" layout
(the same as they did in bullseye), because partial upgrades are a thing.

I think this works both ways round: if, instead, we wanted to "rewind"
to the situation of a few years ago where merged /usr was not possible,
by passing through a release-time flag day after which all supported
systems must be unmerged-/usr, then the soonest that package maintainers
could assume/require an unmerged /usr (and therefore start to ship both
/foo and /usr/foo) would be the day after the bookworm release.

    smcv

[1] Depending on how you look at it, packages like usrmerge that are part
    of implementing the transition might be considered to be an exception
    to this - although they do get installed on a system that does not
    have the target layout, in order to turn it into a system that does,
    so you could also say that they do (and must!) support the other layout.


Reply to: