Skip to content

Commit 078b810

Browse files
committed
improve merge-usr symlinking, symlink resolution
Signed-off-by: Zen <[email protected]>
1 parent d5f3210 commit 078b810

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

src/ugrd/base/core.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -112,22 +112,25 @@ def calculate_dependencies(self, binary: str) -> list[Path]:
112112

113113
@contains("merge_usr", "Skipping /usr merge", log_level=30)
114114
def handle_usr_symlinks(self) -> None:
115-
"""Adds symlinks for /usr/bin and /usr/sbin to /bin and /sbin.
115+
"""
116+
Adds symlinks for /bin and /sbin to /usr/bin
117+
Adds a symlink for /usr/sbin to /usr/bin (-> bin)
118+
Adds smlinks for /lib to /usr/lib and /lib64 to /usr/lib64
116119
Warns if the symlink path is a directory on the host system.
117120
"""
118-
build_dir = self._get_build_path("/")
119-
bin_dir = Path("bin")
120-
sbin_dir = Path("sbin")
121-
usr_sbin_dir = Path("usr/sbin")
122-
123-
for d in [bin_dir, sbin_dir, usr_sbin_dir]:
124-
if d.is_dir() and not d.is_symlink():
125-
self.logger.warning("Merged-usr symlink target is a directory: %s" % d)
121+
bin_symlink = ("bin", "usr/bin")
122+
sbin_symlink = ("sbin", "usr/bin")
123+
usr_sbin_symlink = ("usr/sbin", "bin") # Make it relative
124+
lib_symlink = ("lib", "usr/lib")
125+
lib64_symlink = ("lib64", "usr/lib64")
126+
symlinks = [bin_symlink, sbin_symlink, usr_sbin_symlink, lib_symlink, lib64_symlink]
127+
128+
for target, source in symlinks:
129+
host_path = Path("/").joinpath(target)
130+
if host_path.is_dir() and not host_path.is_symlink():
131+
self.logger.warning("Host path is a directory: %s" % host_path)
126132
self.logger.warning("Set `merge_usr = false` to disable /usr merge.")
127-
build_d = build_dir / d
128-
if not build_d.is_dir() and not build_d.is_symlink():
129-
self.logger.log(5, "Creating merged-usr symlink to /usr/bin: %s" % build_d)
130-
self._symlink("/usr/bin", d)
133+
self._symlink(source, target)
131134

132135

133136
def deploy_dependencies(self) -> None:

0 commit comments

Comments
 (0)