Since the default change in debootstrap 1.0.102, some issues have arisen.
Due to the fact that some buster/sid hosts have the "merged `/usr`" symlinks in place, it has been observed that some binary packages carried some traces of these differences (notably official packages built on Debian buildd hosts which had been resetup).
-Some such differences can actually render the built packages unuseable on non-"merged `/usr`" systems.
+Some such differences can actually render the built packages unusable on non-"merged `/usr`" systems.
For example, if `cat` is detected at build-time in `/usr/bin/cat` (where coreutils ships `/bin/cat`), a binary hardcoding that path will try to use `/usr/bin/cat` after installation, but that path doesn't exist in non-"merged `/usr`" systems.
In order to mitigate this, debootstrap has been modified to let its "buildd" variant be non-"merged `/usr`", the Debian buildds have been resetup and the affected packages rebuilt.
-The lesson here is that with the existance of (any of) the usrmerge and the debootstrap default change, "merged `/usr`" Debian systems exist already, and that packages built on hosts with such directory schemes can _potentially_ be broken on non-"merged `/usr`" systems.
+The lesson here is that with the existence of (any of) the usrmerge and the debootstrap default change, "merged `/usr`" Debian systems exist already, and that packages built on hosts with such directory schemes can _potentially_ be broken on non-"merged `/usr`" systems.
At this point, the two variants have to be supported, at least as installation targets of Debian packages.
Two initiatives are worth mentioning at this point:
* [a patch](https://lists.debian.org/20181202212535.GC11687@gaara.hadrons.org) has been proposed for dpkg-buildpackage to mark packages built on "merged `/usr`" hosts with a `Build-Tainted-By: merged-usr-via-symlinks`;
* the reproducible builds team has added a "merged `/usr`" variation to their setup, and have then [tagged](https://tests.reproducible-builds.org/debian/issues/unstable/paths_vary_due_to_usrmerge_issue.html) the Debian packages from unstable which had differences due to "merged `/usr`". It seems that ~61 packages were affected by differing builds; 32 from these have been fixed in unstable already.
-## The long-term desireable situation
+## The long-term desirable situation
-Various valid long-term desireable situations coexist, and while discussing immediate countermeasures, it is useful to keep the long-term outcome that those are most likely to produce.
+Various valid long-term desirable situations coexist, and while discussing immediate countermeasures, it is useful to keep the long-term outcome that those are most likely to produce.
-These are the five possible situations at the time of bullseye (buster + 1):
+These are the six possible situations at the time of bullseye (buster + 1):
-* `none`: "merged `/usr`" has been reverted
-* `weak`: both directory schemes are allowed, packages only built on classical hosts
-* `middle`: both directory schemes are allowed, packages can be built anywhere
-* `hard`: both directory schemes are allowed, packages only built on "merged `/usr`" hosts
-* `all`: only "merged `/usr`" directory schemes are allowed, packages only built on "merged `/usr`" hosts
+* `none`: "merged `/usr`" has been reverted
+* `empty`: "merged `/usr`" has been reverted, `/usr` is empty (but the mandatory files)
+* `weak`: both directory schemes are allowed, all packages only built on classical hosts
+* `middle`: both directory schemes are allowed, all packages can be built on either
+* `hard`: both directory schemes are allowed, packages can be built on either, official packages only built on "merged `/usr`" hosts
+* `all`: only "merged `/usr`" directory schemes are allowed, packages only built on "merged `/usr`" hosts
It can be summarized by the following table:
| Codename | classical hosts | merged `/usr` hosts | symlinks allowed | classical hosts | merged `/usr` hosts | classical hosts | merged `/usr` hosts |
|----------|-----------------|---------------------|-------------------|—----------------|---------------------|---------------------|----------------------|
| none | yes | no | no | yes | no | yes | yes |
+| empty | yes | no | no | yes | no | yes | yes |
| weak | yes | yes | yes | yes | no | no | yes |
| middle | yes | yes | yes | yes | yes | no | no |
| hard | yes | yes | yes | no | yes | no | no |
The current state of buster is `weak`.
-=== DRAFT Resolution ===
+=== Resolution ===
-The Technical Committee resolves to:
+The Technical Committee resolves to decline to override the debootstrap maintainers.
-* Option A: Ask the debootstrap maintainers to disable "merged `/usr`" by default
- (Using its §6.1.4 "Overrule a Developer" power; requires a 3:1 majority)
+Furthermore, using its §6.1.5 "Offering advice" power, the Technical Committee considers that the desirable solution at the time of `bullseye` is:
- Given that:
- * hosts with both directory schemes already exist,
- * the "merged `/usr`" directory scheme ought to be reserved for special use-cases,
- * official packages ought to only be built on classical directory schemes,
+* W: `weak`: both directory schemes are allowed, but packages should only be built on hosts with classical directory schemes (or in such chroots)
- … the Technical Committee considers that the desireable solution at the time of bullseye is `weak`; and asks the debootstrap maintainers to disable "merged `/usr`" by default.
+* M: `middle`: both directory schemes are allowed, and packages (including official packages) can be built on hosts with either classical or "merged `/usr`" directory schemes
-* Option B: Decline to override the debootstrap maintainers; offer advice
- (Using its §6.1.5 "Offering advice" power)
+* H: `hard`: both directory schemes are allowed, but packages should only be built on hosts with "merged `/usr`" directory schemes (or in such chroots)
- Given that:
- * hosts with both directory schemes already exist,
- * it seems unpractical to allow official packages to be built on either directory schemes,
- * there's inherent value in the simplicity of "merged `/usr`" directory schemes,
-
- … the Technical Committee considers that the desireable solution at the time of bullseye is `hard`; and declines to override the debootstrap maintainers.
+* FD: Further Discussion
-=== End DRAFT Resolution ===
+=== End Resolution ===