mirror of
https://github.com/facebook/proxygen.git
synced 2025-08-07 07:02:53 +03:00
eden/scm: provide getdeps.py way of building eden/scm on GitHub
Summary: In order to do what the title says, this diff does: 1. Add the `eden/oss/.../third-party/rust/.../Cargo.toml` files. As mentioned in the previous diff, those are required by GitHub so that the third party dependencies that are local in fbsource are properly defined with a "git" dependency in order for Cargo to "link" crates properly. 2. Changes to `eden/scm/Makefile` to add build/install commands for getdeps to invoke. Those command knowing that they are called from withing getdeps context they link the dependencies brought by getdeps into their proper places that match their folder layout in fbsource. Those Makefile commands also pass a GETDEPS_BUILD env to the setup.py invocations so that it knows it is being called withing a getdeps build. 3. Changes to `eden/scm/setup.py` that add "thriftasset" that makes use of the getdeps.py provided "thrift" binary to build .py files out of thrift files. 4. Changes to `distutils_rust` to use the vendored crates dir provided by getdeps. 5. Changes to `getdeps/builder.py` and `getdeps/manifest.py` that enable more fine-grained configuratior of how Makefile builds are invoked. 6. Changes to `getdeps/buildopts.py` and `getdeps/manifest.py` to disable overriding PATH and pkgconfig env, so that "eden/scm" builds in getdeps using system libraries rather than getdeps-provided ones (NOTE: I've tried to use getdeps provided libraries, but the trickiest bit was that Rust links with Python, which is currently not providable by getdeps, so if you try to build everything the system provided Python libraries will collide with getdeps provided ones) 7. Added `opensource/fbcode_builder/manifests/eden_scm` for the getdeps build. Reviewed By: quark-zju Differential Revision: D22336485 fbshipit-source-id: 244d10c9e06ee83de61e97e62a1f2a2184d2312f
This commit is contained in:
committed by
Facebook GitHub Bot
parent
538e973ed1
commit
b1f77bce82
@@ -178,7 +178,7 @@ class BuildOptions(object):
|
||||
}
|
||||
)
|
||||
|
||||
def compute_env_for_install_dirs(self, install_dirs, env=None):
|
||||
def compute_env_for_install_dirs(self, install_dirs, env=None, manifest=None):
|
||||
if env is not None:
|
||||
env = env.copy()
|
||||
else:
|
||||
@@ -214,30 +214,35 @@ class BuildOptions(object):
|
||||
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)
|
||||
|
||||
pkgconfig = os.path.join(d, "lib64/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)
|
||||
|
||||
if not (
|
||||
manifest and manifest.get("build", "disable_env_override_pkgconfig")
|
||||
):
|
||||
pkgconfig = os.path.join(d, "lib/pkgconfig")
|
||||
if os.path.exists(pkgconfig):
|
||||
add_path_entry(env, "PKG_CONFIG_PATH", pkgconfig)
|
||||
|
||||
pkgconfig = os.path.join(d, "lib64/pkgconfig")
|
||||
if os.path.exists(pkgconfig):
|
||||
add_path_entry(env, "PKG_CONFIG_PATH", pkgconfig)
|
||||
|
||||
if not (manifest and manifest.get("build", "disable_env_override_path")):
|
||||
add_path_entry(env, "CMAKE_PREFIX_PATH", d)
|
||||
|
||||
# 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
|
||||
if os.path.exists(bindir):
|
||||
add_path_entry(env, "PATH", bindir, append=False)
|
||||
|
||||
# If rustc is present in the `bin` directory, set RUSTC to prevent
|
||||
# cargo uses the rustc installed in the system.
|
||||
|
Reference in New Issue
Block a user