1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-04-18 17:24:03 +03:00

use system patchelf in eden fs build

Summary:
X-link: https://github.com/facebookincubator/velox/pull/7072

use system patchelf in eden fs build

Saves us from doing a fetch and build of autoconf, libtool, automake and patchelf during the arfifacts part of CI

X-link: https://github.com/facebook/sapling/pull/750

Reviewed By: sggutier

Differential Revision: D50313417

Pulled By: genevievehelsel

fbshipit-source-id: 7c585357c848c15a65c5797d6c8750d1119b6efd
This commit is contained in:
Alex Hornby 2023-10-16 12:10:14 -07:00 committed by Facebook GitHub Bot
parent d8cd799210
commit 6c72eb2f02
2 changed files with 24 additions and 8 deletions

View File

@ -497,6 +497,12 @@ class ShowInstDirCmd(ProjectCmdBase):
manifests = [manifest]
for m in manifests:
fetcher = loader.create_fetcher(m)
if isinstance(fetcher, SystemPackageFetcher):
# We are guaranteed that if the fetcher is set to
# SystemPackageFetcher then this item is completely
# satisfied by the appropriate system packages
continue
inst_dir = loader.get_project_install_dir_respecting_install_prefix(m)
print(inst_dir)
@ -1056,6 +1062,11 @@ jobs:
out.write(
f" run: {sudo_arg}python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive {manifest.name}\n"
)
if build_opts.is_linux() or build_opts.is_freebsd():
out.write(" - name: Install packaging system deps\n")
out.write(
f" run: {sudo_arg}python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive patchelf\n"
)
projects = loader.manifests_in_dependency_order()

View File

@ -336,16 +336,21 @@ class ElfDeps(DepBase):
super(ElfDeps, self).__init__(buildopts, install_dirs, strip)
# We need patchelf to rewrite deps, so ensure that it is built...
subprocess.check_call([sys.executable, sys.argv[0], "build", "patchelf"])
args = [sys.executable, sys.argv[0]]
if buildopts.allow_system_packages:
args.append("--allow-system-packages")
subprocess.check_call(args + ["build", "patchelf"])
# ... and that we know where it lives
self.patchelf = os.path.join(
os.fsdecode(
subprocess.check_output(
[sys.executable, sys.argv[0], "show-inst-dir", "patchelf"]
).strip()
),
"bin/patchelf",
patchelf_install = os.fsdecode(
subprocess.check_output(args + ["show-inst-dir", "patchelf"]).strip()
)
if not patchelf_install:
# its a system package, so we assume it is in the path
patchelf_install = "patchelf"
else:
patchelf_install = os.path.join(patchelf_install, "bin", "patchelf")
self.patchelf = patchelf_install
def list_dynamic_deps(self, objfile):
out = (