mirror of
https://github.com/facebook/proxygen.git
synced 2025-08-08 18:02:05 +03:00
getdeps: move the guts of _compute_env to a helper in buildopts
Summary: I want to use this logic outside of a builder implementation Reviewed By: pkaush Differential Revision: D16101914 fbshipit-source-id: db3c9ac6c84a92ab84a18dddb931953b0a51f127
This commit is contained in:
committed by
Facebook Github Bot
parent
cd21fdafd2
commit
ecc5dd6d71
@@ -86,39 +86,7 @@ class BuilderBase(object):
|
|||||||
def _compute_env(self, install_dirs):
|
def _compute_env(self, install_dirs):
|
||||||
# CMAKE_PREFIX_PATH is only respected when passed through the
|
# CMAKE_PREFIX_PATH is only respected when passed through the
|
||||||
# environment, so we construct an appropriate path to pass down
|
# environment, so we construct an appropriate path to pass down
|
||||||
env = self.env.copy()
|
return self.build_opts.compute_env_for_install_dirs(install_dirs, env=self.env)
|
||||||
|
|
||||||
lib_path = None
|
|
||||||
if self.build_opts.is_darwin():
|
|
||||||
lib_path = "DYLD_LIBRARY_PATH"
|
|
||||||
elif self.build_opts.is_linux():
|
|
||||||
lib_path = "LD_LIBRARY_PATH"
|
|
||||||
else:
|
|
||||||
lib_path = None
|
|
||||||
|
|
||||||
for d in install_dirs:
|
|
||||||
add_path_entry(env, "CMAKE_PREFIX_PATH", d)
|
|
||||||
|
|
||||||
pkgconfig = os.path.join(d, "lib/pkgconfig")
|
|
||||||
if os.path.exists(pkgconfig):
|
|
||||||
add_path_entry(env, "PKG_CONFIG_PATH", pkgconfig)
|
|
||||||
|
|
||||||
# Allow resolving shared objects built earlier (eg: zstd
|
|
||||||
# doesn't include the full path to the dylib in its linkage
|
|
||||||
# so we need to give it an assist)
|
|
||||||
if lib_path:
|
|
||||||
for lib in ["lib", "lib64"]:
|
|
||||||
libdir = os.path.join(d, lib)
|
|
||||||
if os.path.exists(libdir):
|
|
||||||
add_path_entry(env, lib_path, libdir)
|
|
||||||
|
|
||||||
# Allow resolving binaries (eg: cmake, ninja) and dlls
|
|
||||||
# built by earlier steps
|
|
||||||
bindir = os.path.join(d, "bin")
|
|
||||||
if os.path.exists(bindir):
|
|
||||||
add_path_entry(env, "PATH", bindir, append=False)
|
|
||||||
|
|
||||||
return env
|
|
||||||
|
|
||||||
|
|
||||||
class MakeBuilder(BuilderBase):
|
class MakeBuilder(BuilderBase):
|
||||||
|
@@ -16,7 +16,7 @@ import os
|
|||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
from .envfuncs import path_search
|
from .envfuncs import Env, add_path_entry, path_search
|
||||||
from .platform import HostType, is_windows
|
from .platform import HostType, is_windows
|
||||||
|
|
||||||
|
|
||||||
@@ -190,6 +190,44 @@ class BuildOptions(object):
|
|||||||
|
|
||||||
return {"build_dir": build_dir, "inst_dir": inst_dir, "hash": hash}
|
return {"build_dir": build_dir, "inst_dir": inst_dir, "hash": hash}
|
||||||
|
|
||||||
|
def compute_env_for_install_dirs(self, install_dirs, env=None):
|
||||||
|
if env:
|
||||||
|
env = env.copy()
|
||||||
|
else:
|
||||||
|
env = Env()
|
||||||
|
|
||||||
|
lib_path = None
|
||||||
|
if self.is_darwin():
|
||||||
|
lib_path = "DYLD_LIBRARY_PATH"
|
||||||
|
elif self.is_linux():
|
||||||
|
lib_path = "LD_LIBRARY_PATH"
|
||||||
|
else:
|
||||||
|
lib_path = None
|
||||||
|
|
||||||
|
for d in install_dirs:
|
||||||
|
add_path_entry(env, "CMAKE_PREFIX_PATH", d)
|
||||||
|
|
||||||
|
pkgconfig = os.path.join(d, "lib/pkgconfig")
|
||||||
|
if os.path.exists(pkgconfig):
|
||||||
|
add_path_entry(env, "PKG_CONFIG_PATH", pkgconfig)
|
||||||
|
|
||||||
|
# Allow resolving shared objects built earlier (eg: zstd
|
||||||
|
# doesn't include the full path to the dylib in its linkage
|
||||||
|
# so we need to give it an assist)
|
||||||
|
if lib_path:
|
||||||
|
for lib in ["lib", "lib64"]:
|
||||||
|
libdir = os.path.join(d, lib)
|
||||||
|
if os.path.exists(libdir):
|
||||||
|
add_path_entry(env, lib_path, libdir)
|
||||||
|
|
||||||
|
# Allow resolving binaries (eg: cmake, ninja) and dlls
|
||||||
|
# built by earlier steps
|
||||||
|
bindir = os.path.join(d, "bin")
|
||||||
|
if os.path.exists(bindir):
|
||||||
|
add_path_entry(env, "PATH", bindir, append=False)
|
||||||
|
|
||||||
|
return env
|
||||||
|
|
||||||
|
|
||||||
def list_win32_subst_letters():
|
def list_win32_subst_letters():
|
||||||
output = subprocess.check_output(["subst"]).decode("utf-8")
|
output = subprocess.check_output(["subst"]).decode("utf-8")
|
||||||
|
Reference in New Issue
Block a user