Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge /usr (T10615) #293

Closed
76 of 86 tasks
Tracked by #4119
celticmagic opened this issue Aug 17, 2023 · 2 comments
Closed
76 of 86 tasks
Tracked by #4119

Merge /usr (T10615) #293

celticmagic opened this issue Aug 17, 2023 · 2 comments
Labels
Priority: High High priority Type: Chore Not a feature or a bug
Milestone

Comments

@celticmagic
Copy link
Collaborator

celticmagic commented Aug 17, 2023

Silke (@silkeh), 2023-08-06 13:14:54 UTC

Now systemd will drop support for unmerged-usr setups, it seems we have to switch to a merged /usr as well. Also see the Case for the /usr Merge.

Related issues and MRs:


Plan:

There are two orders in which we can do this:

  1. Move first:

    1. Get all main package contents out of /bin, /sbin, /lib32 and /lib64. Provide compatibility symlinks where needed (eg: /bin/bash).
    2. Remove compatibility symlinks, and directly
    3. Symlink /{bin,sbin,lib32,lib64} to their /usr/ counterparts with a usysconf trigger.
      The trigger will be trivial as those directories //should// be empty.
  2. Move later (rejected):

    1. Remove compatibility symlinks, and directly
    2. Symlink /{bin,sbin,lib32,lib64} to their /usr/ counterparts through a usysconf trigger.
      The trigger will be somewhat complicated as it would need to actually merge the directories.
    3. Get all main package contents out of /bin, /sbin, /lib32 and /lib64 (leisurely).

Support in software:

Packages with files in /{bin,sbin,lib,lib32,lib64} (where the file is not a symlink to /usr/):

  • Programs (/bin and /sbin):
    • acl
    • apcupsd
    • attr
    • audit (with compatiblity symlinks)
    • bash
    • busybox
    • bzip2 (with compatiblity symlinks)
    • cifs-utils (with compatiblity symlinks)
    • coreutils
    • cpio (with compatiblity symlinks)
    • davfs2 (with compatiblity symlinks)
    • e2fsprogs (with compatiblity symlinks)
    • fuse2 (with compatiblity symlinks)
    • iproute2 (with compatiblity symlinks)
    • kmod
    • lvm2
    • mdadm (with compatiblity symlinks)
    • multipath-tools
    • nfs-utils
    • ntfs-3g (with compatiblity symlinks)
    • ocamlbuild (with compatiblity symlinks)
    • procps-ng (also see T9039)
    • shadow
    • systemd (with compatiblity symlinks) (note: broken symlink in /lib/udev/udevd)
    • tar
    • tcsh
    • tlp
    • util-linux
    • wpa_supplicant
    • xfsprogs
    • zsh
  • Libraries:
    • musl
    • notmuch
  • Firmware (/lib/firmware):
    • alsa-firmware (with compatiblity symlinks)
    • intel-microcode (with compatiblity symlinks)
    • linux-firmware (with compatiblity symlinks)
    • sof-firmware (with compatiblity symlinks)
    • wireless-regdb (with compatiblity symlinks)
  • Kernel modules (/lib/modules):
    • bbswitch
    • broadcom-sta
    • linux-current
    • linux-lts
    • nvidia-470-glx-driver (also: /sbin/create-uvm-dev-node)
    • nvidia-beta-driver (also: /sbin/create-uvm-dev-node)
    • nvidia-developer-driver (also: /sbin/create-uvm-dev-node)
    • nvidia-glx-driver (also: /sbin/create-uvm-dev-node)
    • openrazer
    • v4l2loopback
    • vhba-module
    • virtualbox (also: /sbin/mount.vboxsf)
    • xone
  • PAM (/lib*/security):
    • fprintd
    • gdm
    • gnome-keyring
    • kwallet-pam
    • libcap2
    • libpwquality
    • pam-krb5
    • pam-u2f
    • pam (also: /sbin)
    • samba
    • systemd
    • virtualbox
    • yubico-pam
  • Other/mixed:
    • apparmor (with compatiblity symlinks)
    • glibc (with compatiblity symlinks)
    • iptables (with compatiblity symlinks)

Packages with symlinks to /usr in /{bin,sbin,lib,lib32,lib64} or vice versa:

  • coreutils
  • dash
  • gcc (/lib/cpp -> /usr/bin/cpp)
  • glibc
  • grep
  • sed
  • systemd
  • util-linux
  • xfsdump

Third party packages with files in /{bin,sbin,lib,lib32,lib64}:

  • google-earth (/lib/ld-lsb-x86-64.so.3)

Usysconf-epoch remaining todos:

  • Shellcheck script
  • Finish orphan code
  • Special-case depmod
@silkeh silkeh added this to the Solus 4.5 ISO milestone Aug 21, 2023
@silkeh silkeh added the Package: Addition Request Please consider adding this to the repository label Aug 21, 2023
@github-project-automation github-project-automation bot moved this to Triage in Solus Aug 21, 2023
@silkeh silkeh removed the Package: Addition Request Please consider adding this to the repository label Aug 21, 2023
@silkeh silkeh removed this from Solus Aug 21, 2023
@silkeh silkeh added this to Solus Aug 23, 2023
@github-project-automation github-project-automation bot moved this to Triage in Solus Aug 23, 2023
@silkeh silkeh moved this from Triage to Ready in Solus Aug 23, 2023
@silkeh silkeh moved this from Ready to In Progress in Solus Aug 23, 2023
@silkeh silkeh added the Type: Chore Not a feature or a bug label Aug 26, 2023
@silkeh silkeh modified the milestones: Solus 4.5, Solus 4.6 Sep 16, 2023
@silkeh silkeh added Priority: Wishlist It would be nice to have and removed Priority: Normal Normal priority labels Sep 16, 2023
@ermo ermo removed the Software label Jan 29, 2024
joebonrichie added a commit that referenced this issue Apr 29, 2024
**Summary**
- Symlink {/bin,/sbin} to {/usr/bin,/usr/sbin}
- Any existing binaries in /bin or /sbin will be seemlessly moved over.

**Packager's Notes**
- Note that /lib(64) will be merged to /usr in a follow up PR to
  complete the /usr merge transition.

Part of #293.
@ermo ermo modified the milestones: Solus 4.6, Solus 4.8 May 3, 2024
joebonrichie added a commit that referenced this issue May 5, 2024
**Summary**

- Symlink {/bin,/sbin} to {/usr/bin,/usr/sbin}
- Any existing binaries in /bin or /sbin will be seemlessly moved over.
- Drop /bin and /sbin from default $PATH

Part of #293.

Note: that /lib will be merged to /usr in a follow up PR as
`kernel-glue` and CBM will have to be investigated.

Note: this is a forward change only as our current baselayout never
managed /bin or /sbin paths as they were created ad-hoc by packages.

**Test Plan**

- Create a new rootfs from scratch from this baselayout
- Create a new solbuild image from this baselayout and use it
- Build and launch ISOs from this baselayout
- Create custom binaries in `/bin` and `/sbin` and verify they get moved
over to `/usr/bin` and `/usr/sbin` respectively
- `realpath /bin` -> `/usr/bin`
- `realpath /sbin` -> `/usr/sbin`
- `which touch` -> `/usr/bin/touch`

**Checklist**

- [x] Package was built and tested against unstable
nazar-stasiv pushed a commit to nazar-stasiv/packages that referenced this issue May 5, 2024
**Summary**
- Symlink {/bin,/sbin} to {/usr/bin,/usr/sbin}
- Any existing binaries in /bin or /sbin will be seemlessly moved over.

**Packager's Notes**
- Note that /lib(64) will be merged to /usr in a follow up PR to
  complete the /usr merge transition.

Part of getsolus#293.
joebonrichie added a commit that referenced this issue May 7, 2024
**Summary**
- Removes all `/bin` and `/sbin` symlinks in packages

Part of #293
@ermo ermo modified the milestones: Solus 4.8, Solus 4.7 May 18, 2024
@TraceyC77 TraceyC77 added Priority: Normal Normal priority and removed Priority: Wishlist It would be nice to have labels Jul 28, 2024
@silkeh silkeh modified the milestones: Solus 4.7, Solus 4.6 Sep 8, 2024
@silkeh silkeh added Priority: High High priority and removed Priority: Normal Normal priority labels Sep 8, 2024
@ermo ermo modified the milestones: Solus 4.6, Solus 4.7 Oct 20, 2024
@ermo
Copy link
Contributor

ermo commented Oct 20, 2024

@silkeh How many of the checkboxes are done here?!

@silkeh
Copy link
Member

silkeh commented Oct 20, 2024

Some of the linked tasks contain steps for the epoch transition, and some checkboxes apply to that as well. Closing this in favour of #4119 as I consider the /usr merge to be completed with the release of the latest ISOs!

@silkeh silkeh closed this as completed Oct 20, 2024
@github-project-automation github-project-automation bot moved this from In Progress to Done in Solus Oct 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: High High priority Type: Chore Not a feature or a bug
Projects
Archived in project
Development

No branches or pull requests

4 participants