Loading pkgs/build-support/setup-hooks/auto-patchelf.py +15 −5 Original line number Diff line number Diff line Loading @@ -167,7 +167,7 @@ class Dependency: found: bool = False # Whether it was found somewhere def auto_patchelf_file(path: Path, runtime_deps: list[Path]) -> list[Dependency]: def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: List[Path] = []) -> list[Dependency]: try: with open_elf(path) as elf: Loading Loading @@ -235,6 +235,8 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path]) -> list[Dependency] dependencies.append(Dependency(path, dep, False)) print(f" {dep} -> not found!") rpath.extend(append_rpaths) # Dedup the rpath rpath_str = ":".join(dict.fromkeys(map(Path.as_posix, rpath))) Loading @@ -252,7 +254,8 @@ def auto_patchelf( lib_dirs: List[Path], runtime_deps: List[Path], recursive: bool = True, ignore_missing: List[str] = []) -> None: ignore_missing: List[str] = [], append_rpaths: List[Path] = []) -> None: if not paths_to_patch: sys.exit("No paths to patch, stopping.") Loading @@ -265,7 +268,7 @@ def auto_patchelf( dependencies = [] for path in chain.from_iterable(glob(p, '*', recursive) for p in paths_to_patch): if not path.is_symlink() and path.is_file(): dependencies += auto_patchelf_file(path, runtime_deps) dependencies += auto_patchelf_file(path, runtime_deps, append_rpaths) missing = [dep for dep in dependencies if not dep.found] Loading Loading @@ -312,6 +315,12 @@ def main() -> None: parser.add_argument( "--runtime-dependencies", nargs="*", type=Path, help="Paths to prepend to the runtime path of executable binaries.") parser.add_argument( "--append-rpaths", nargs="*", type=Path, help="Paths to append to all runtime paths unconditionally", ) print("automatically fixing dependencies for ELF files") args = parser.parse_args() Loading @@ -322,7 +331,8 @@ def main() -> None: args.libs, args.runtime_dependencies, args.recursive, args.ignore_missing) args.ignore_missing, append_rpaths=args.append_rpaths) interpreter_path: Path = None # type: ignore Loading pkgs/build-support/setup-hooks/auto-patchelf.sh +3 −1 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ autoPatchelf() { ignoreMissingDepsArray=( "*" ) fi local appendRunpathsArray=($appendRunpaths) local runtimeDependenciesArray=($runtimeDependencies) @pythonInterpreter@ @autoPatchelfScript@ \ ${norecurse:+--no-recurse} \ Loading @@ -68,7 +69,8 @@ autoPatchelf() { --paths "$@" \ --libs "${autoPatchelfLibs[@]}" \ "${extraAutoPatchelfLibs[@]}" \ --runtime-dependencies "${runtimeDependenciesArray[@]/%//lib}" --runtime-dependencies "${runtimeDependenciesArray[@]/%//lib}" \ --append-rpaths "${appendRunpathsArray[@]}" } # XXX: This should ultimately use fixupOutputHooks but we currently don't have Loading Loading
pkgs/build-support/setup-hooks/auto-patchelf.py +15 −5 Original line number Diff line number Diff line Loading @@ -167,7 +167,7 @@ class Dependency: found: bool = False # Whether it was found somewhere def auto_patchelf_file(path: Path, runtime_deps: list[Path]) -> list[Dependency]: def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: List[Path] = []) -> list[Dependency]: try: with open_elf(path) as elf: Loading Loading @@ -235,6 +235,8 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path]) -> list[Dependency] dependencies.append(Dependency(path, dep, False)) print(f" {dep} -> not found!") rpath.extend(append_rpaths) # Dedup the rpath rpath_str = ":".join(dict.fromkeys(map(Path.as_posix, rpath))) Loading @@ -252,7 +254,8 @@ def auto_patchelf( lib_dirs: List[Path], runtime_deps: List[Path], recursive: bool = True, ignore_missing: List[str] = []) -> None: ignore_missing: List[str] = [], append_rpaths: List[Path] = []) -> None: if not paths_to_patch: sys.exit("No paths to patch, stopping.") Loading @@ -265,7 +268,7 @@ def auto_patchelf( dependencies = [] for path in chain.from_iterable(glob(p, '*', recursive) for p in paths_to_patch): if not path.is_symlink() and path.is_file(): dependencies += auto_patchelf_file(path, runtime_deps) dependencies += auto_patchelf_file(path, runtime_deps, append_rpaths) missing = [dep for dep in dependencies if not dep.found] Loading Loading @@ -312,6 +315,12 @@ def main() -> None: parser.add_argument( "--runtime-dependencies", nargs="*", type=Path, help="Paths to prepend to the runtime path of executable binaries.") parser.add_argument( "--append-rpaths", nargs="*", type=Path, help="Paths to append to all runtime paths unconditionally", ) print("automatically fixing dependencies for ELF files") args = parser.parse_args() Loading @@ -322,7 +331,8 @@ def main() -> None: args.libs, args.runtime_dependencies, args.recursive, args.ignore_missing) args.ignore_missing, append_rpaths=args.append_rpaths) interpreter_path: Path = None # type: ignore Loading
pkgs/build-support/setup-hooks/auto-patchelf.sh +3 −1 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ autoPatchelf() { ignoreMissingDepsArray=( "*" ) fi local appendRunpathsArray=($appendRunpaths) local runtimeDependenciesArray=($runtimeDependencies) @pythonInterpreter@ @autoPatchelfScript@ \ ${norecurse:+--no-recurse} \ Loading @@ -68,7 +69,8 @@ autoPatchelf() { --paths "$@" \ --libs "${autoPatchelfLibs[@]}" \ "${extraAutoPatchelfLibs[@]}" \ --runtime-dependencies "${runtimeDependenciesArray[@]/%//lib}" --runtime-dependencies "${runtimeDependenciesArray[@]/%//lib}" \ --append-rpaths "${appendRunpathsArray[@]}" } # XXX: This should ultimately use fixupOutputHooks but we currently don't have Loading