Re: /usr-merge and filesystem bootstrap

2023-09-12 Thread Chris Hofstaedtler
Hi Helmut,

speaking with my util-linux in Debian hat...

* Helmut Grohne  [230912 20:16]:
[..]
> I request that affected maintainers reply to this mail:
>  * Are you ok with the proposed changes in principle?
>+ Moving all files from / to /usr leaving no files in aliased
>  locations
>+ Installing aliasing symbolic links in base-files and libc6

Yes.

>  * Are you fine in principle with me NMUing your package after having
>reviewed the promised patch?

Yes.

Would be nice if the patch ends up in git, at
  https://salsa.debian.org/debian/util-linux
but it's not necessary. Feel free to use the next non-NMU version
number.

>  * Do you readily see any flaw in the proposed transition already?

Nothing from util-linux PoV. Given src:util-linux produces udebs,
that should be taken into consideration, but I think any changes to
the udebs do not need to happen at the same time.

Chris



signature.asc
Description: PGP signature


/usr-merge and filesystem bootstrap

2023-09-12 Thread Helmut Grohne
Dear maintainers of relevant essential packages,

this /usr-merge transition covering multiple release has reached a point
where consensus has been reached about completing it by moving files
from / to /usr. The chosen approach also affects filesystem bootstrap
and an earlier discussion of this matter has resulted in consensus for
not changing the bootstrap protocol from the pre-/usr-merge state and
rather returning to that state. To this end, debootstrap has been
updated in trixie and unstable such that it performs the initial unpack
before performing the merge (mirroring how usrmerge does it on existing
systems). This change is being backported to bookworm and bullseye by
Simon McVittie. In order to remove the usrmerge package eventually, we
want base-files to install the aliasing symlinks via its data.tar.
Unfortunately, we cannot just do that, because doing so would break
debootstrap or cdebootstrap/mmdebstrap or both.

The way we get there is to first convert all packages from the
Priority:required set but some exceptions to install no files into
aliased locations such as /bin, /sbin or /lib*.  Getting there will
consume months. I hope we can reach this state in early 2024.

Once the Priority:required set only has that exception set left
unconverted, I will prepare patches for the entire exception set and
upload it coherently in one dinstall window.

That exception set is:
 * base-files
 * bash
 * coreutils maybe
 * dash
 * libc6
 * util-linux

base-files will install /bin, /sbin and /lib as symbolic links in its
data.tar. libc6 will install multilib /lib* where needed as symbolic
links in its data.tar:
 * /lib64: amd64, loong64, mips64el, ppc64, ppc64el
 * /libx32: x32
Since the relevant architectures share their libc soname, these packages
will remain multiarch co-installable. Multilib symlinks that are not
essential to a Debian architecture are not installed in a data.tar and
managed using maintainer scripts instead. For instance, /lib64 will not
be a symlink in libc6-amd64:i386, because /lib64 is not essential to
i386 nor is libc6-amd64:i386 essential to i386.

If we were to upload base-files before other packages, then a
bootstrapping tool could first unpack that other package thereby
creating e.g. /bin as a directory and then extracting the symbolic link
from base-files' data.tar would fail.

If we were to upload any other package from that set before base-files,
the aliasing links would be absent and merging via usrmerge.postinst
would not work due to missing the dynamic linker, /bin/sh, /bin/bash,
or /bin/cp. Running util-linux.postinst before usrmerge.postinst could
fail for the absence of /bin/more.

Therefore changes need to be uploaded concurrently. I intend to perform
these uploads in coordination with you. I request permission to NMU your
package for the purpose of completing the transition in this way.
Before actually performing such a NMU, I will prepare and send the
to-be-NMUed patches to all affected maintainers for review. The purpose
of having these NMUed is meeting the concurrency requirement. If you
insist on performing the upload yourself, you could arrange handing me a
signed .dsc.

These packages also need to migrate to testing together or we will
temporarily break bootstrappability of testing. We can either ensure
that by temporarily adding suitable Breaks or using special release team
powers.

I will coordinate a suitable time avoiding e.g. a glibc transition or a
time64 transition.

I will try to remove coreutils from the exception set by changing
usrmerge to no longer require a particular location of cp.

I request that affected maintainers reply to this mail:
 * Are you ok with the proposed changes in principle?
   + Moving all files from / to /usr leaving no files in aliased
 locations
   + Installing aliasing symbolic links in base-files and libc6
 * Are you fine in principle with me NMUing your package after having
   reviewed the promised patch?
 * Do you readily see any flaw in the proposed transition already?

Thanks for your cooperation

Helmut