Hi Aurelien and Santiago, my DEP17 work on moving essential files has been uploaded to Ubuntu noble by Julian Andres Klode and we gain some insights there. As a result, I've been refining the patches and published my testing infrastructure. You can find it all (though maybe not in an easily consumable way) at https://salsa.debian.org/helmutg/bootstrap-usrmerge-demo.
One thing we noticed on the Ubuntu side is that as long as there are packages installing into aliased locations, the protective diversions (DEP17 M4) that I propose for base-files cause surprises for users. We divert e.g. /bin to /bin.usr-is-merged and this becomes a real directory. I've reconsidered this and concluded that there is no benefit in diverting /bin, /lib and /sbin. All that we have to do to avoid their accidental deletion is to ensure that they are installed by some package at all times. In bookworm and older, these are directories installed by base-files. In trixie, these will be symlinks provided by base-files. dpkg will resolve symlink vs directory conflicts in our favour. For /lib64 (on amd64 and some others), the story is more nuanced. This is not installed by base-files in bookworm. Therefore upgrading libc6:amd64 (whose bookworm version contains /lib64) before upgrading base-files is prone to loosing this symlink. Therefore, we need the protective diversion from libc6.preinst until base-files.postinst. On the final installation, /lib64 will not be diverted on amd64. For other multilib links, I discussed the matter with some members of #debian-devel and there were some conclusions. In general, we want to avoid the presence of unnecessary multilib symlinks (which is what the trigger approach in base-files is supposed to ensure). However, that means that there can be no package containing them and hence we really need to divert them for longer (in a finished trixie installation). This is what the previous patches already did, but I'm reconfirming that we really need this. The trigger-interest I previously added for base-files was broken and not actually activating. This is also fixed. As a further measure to reduce annoyed user reports, I'm changing the diversion targets for aliasing links from /$orig.usr-is-merged to /.$orig.usr-is-merged hoping that the leading dot will prevent the empty directories from being listed to users. Note that we cannot delete them, because that would cause dpkg --verify to report them as missing. They'll automatically disappear once no installed package installs any files into an aliased location. Niels Thykier made me aware of dh_installdeb -D. Using it avoids the need for a pile of .in files in base-files. I hope you like this refactoring. Let me know if not. I hope the coding style now fully meets base-files. Regarding the repository mentioned above, most of the changes are on the main branch, but the avoidance of diversions for /bin, /lib and /sbin as well as the change in diversion target are currently on a separate branch fewer-m4-diversions to ease comparing the approaches. This is mostly a report of what I've been doing and not something actionable to you except that I appreciate reviews of this work (e.g. commenting on the choices and rationale given above or actually looking into the changes). I still don't have a proposed upload date as the time64 transition unfolds and also breaks debootstrap currently. I hope we get this done by the end of March. Helmut