Skip to content
Snippets Groups Projects

Draft: The /usr merge!!!!

Open Pablo Correa Gomez requested to merge pabloyoyoista/usr-merge-for-real into master
2 unresolved threads

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 apk-tools3, which then needs to be reverted. Execute the following instructions:

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:
  • 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
Edited by Pablo Correa Gomez

Merge request reports

Merge request pipeline #218556 failed

Merge request pipeline failed for 933df953

Approval is optional
Merge blocked: 4 checks failed

Merge details

  • The source branch is 53 commits behind the target branch.
  • 10 commits will be added to master.
  • Source branch will be deleted.

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
Please register or sign in to reply
Loading