Draft: The /usr merge!!!!
Do NOT test this unless you know what you're doing. There's a non-negligible risk of data-loss.
Depends !6375
This MR takes the combined work from @craftyguy and me in craftyguy/merge-usr!1 to enforce the /usr merge downstream in an upstreamable way.
Testing instructions
We really need some testing before we can merge this, so anybody doing any work would be extremely welcomed
The safe test
This should be mostly safe for everybody to execute. The only difference is that it will install
Execute the following instructions:apk-tools3
, which then needs to be reverted.
doas apk add mrtest
mrtest add 6389 # This MR
# Follow over mrtest prompts. When asked what to upgrade **only** select "merge-usr-1-r0.apk"
doas merge-usr --dryrun 2>&1 | tee log.txt
mrtest zap
# Get us some extra info so we can know
apk list --installed > packages.txt
# The command below will create merge-usr.tar file for upload
busybox tar c -f merge-usr.tar log.txt packages.txt /etc/apk/world
Then please upload the merge-usr.tar
file so we can check the results and which things were tested!
The crazy path
This will create a /usr merged system, which cannot be reverted. For now, please don't test this.
Same as above, but if doas merge-user --dryrun
passed correctly (unlikely for now), then run it again without --dryrun
and provide the same information as for the previous test
Results
Tests executed:
-
Install on empty chroot (bootstrap) -
Basic systemd edge upgrade -
Basic openrc edge upgrade -
Complete desktop upgrades: -
GNOME -
stable -
edge openrc -
edge systemd (failed on a Pixel 3a. Possibly due to bash)
-
-
Plasma -
stable -
edge openrc -
edge systemd
-
-
SXMO -
stable -
edge openrc -
edge systemd
-
-
Problems found
-
rclone https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/82456 -
sysstat: iostat installed in different location as that from busybox: installed in different location as that from busybox: https://gitlab.alpinelinux.org/alpine/aports/-/issues/17068 -
util-linux: -
ionice and setpriv : https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/82463
-
-
coreutils: -
link installed in different location (/usr/bin) as that from busybox and uutils-coreutils (/bin)
-
-
e2fsprogs: chattr and lsattr, handled by the script and we should probably fix that -
kdb: kdb_mode installed in different location as that from busybox -
setarch: linux32 and linux64 installed in different locations as that from busybox. Being symlinks both in busybox and setarch the script keeps the /usr/bin
ones by default. But should error instead -
systemd install: -
udevadm conflicts as the link is not direct. This likely needs a script fix, or a packaging fix in systemd. (/bin/udevadm points to /usr/lib/systemd/systemd-udevd which points to /usr/bin/udevadm) -
busybox: halt, init, poweroff, reboot installed in /sbin
, but systemd counterparts installed in/usr/sbin
. Being symlinks both in busybox and systemd the script keeps the/usr/bin
ones by default. But should error instead
-
Merge request reports
Activity
added request-for-test systemd type::feature labels
Packages you maintain have been changed: @ollieparanoid @craftyguy
Hmmm no clue, @kcxt @ollieparanoid does this look familiar?
https://gitlab.postmarketos.org/postmarketOS/pmaports/-/jobs/1347259
added 1 commit
- 933df953 - TEST: temp/merge-usr: don't depend on apk-tools3
Compared to my install, this also shows that coreutils
link
is also in the wrong place compared to busybox and uutils-coreutils: https://pkgs.alpinelinux.org/contents?file=link&path=&name=&branch=edge&repo=&arch=aarch64I think fixing
link
is just a matter of adding it to the loop from this patch? https://gitlab.alpinelinux.org/alpine/aports/-/commit/bc776a09f43Patch sent upstream to move the coreutils link symlink to /bin: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/82800
Patch sent upstream to move the coreutils link symlink to /bin: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/82800
Merged upstream
mentioned in issue systemd#1