1
0
mirror of https://github.com/facebook/proxygen.git synced 2025-08-07 07:02:53 +03:00

getdeps: fixup-dyn-deps: use patchelf from our manifest on linux

Summary:
On linux we use `patchelf` to manipulate dynamic deps but it
isn't guaranteed to be installed everywhere.  We have a manifest file
that describes how to build it, but so far nothing has told getdeps
that it should build it.

This diff updates the ELF dep munging code to literally run
`getdeps.py build patchelf` and then use that patchelf binary to
manipulate the object files.

Refs: https://github.com/facebook/watchman/pull/750

Reviewed By: pkaush

Differential Revision: D17705351

Pulled By: wez

fbshipit-source-id: 358ef239edb389fbd51fa023ff553963aa80b6c7
This commit is contained in:
Wez Furlong
2019-10-02 17:49:16 -07:00
committed by Facebook Github Bot
parent 1973122d9d
commit 4040bc13f6

View File

@@ -201,7 +201,16 @@ class WinDeps(DepBase):
class ElfDeps(DepBase):
def __init__(self, buildopts, install_dirs):
super(ElfDeps, self).__init__(buildopts, install_dirs)
self.patchelf = path_search(self.env, "patchelf")
# We need patchelf to rewrite deps, so ensure that it is built...
subprocess.check_call([sys.executable, sys.argv[0], "build", "patchelf"])
# ... and that we know where it lives
self.patchelf = os.path.join(
subprocess.check_output(
[sys.executable, sys.argv[0], "show-inst-dir", "patchelf"]
).strip(),
"bin/patchelf",
)
def list_dynamic_deps(self, objfile):
out = (