@@ -112,22 +112,25 @@ def calculate_dependencies(self, binary: str) -> list[Path]:
112112
113113@contains ("merge_usr" , "Skipping /usr merge" , log_level = 30 )
114114def 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
133136def deploy_dependencies (self ) -> None :
0 commit comments