Skip to content

Commit

Permalink
edenscm/hg: add GitHub Actions with CI for HG plus add fixes for getd…
Browse files Browse the repository at this point in the history
…eps (facebook#25)

Summary:
Fixes include:
1. Passing "GETDEPS_BUILD_DIR" and "GETDEPS_INSTALL_DIR" env variable and using them in eden/scm/Makefile rather than assuming the source code is always in the same place regardless getdeps arguments (it isn't).
2. Added "fbthrift-source" and "fb303-source" to avoid unnecessary compilation (at least of fb303) and to put fbthrift and fb303 source code in an easy to locate place inside getdeps' "installed" folder.

Pull Request resolved: facebook/sapling#25

Test Plan: sandcastle, check oss-eden_scm-darwin-getdeps

Reviewed By: farnz

Differential Revision: D22431872

Pulled By: lukaspiatkowski

fbshipit-source-id: 8ccbb090713ec085a5dd56df509eb58ab6fb9e34
  • Loading branch information
lukaspiatkowski authored and dotconnor committed Mar 18, 2021
1 parent fe85b42 commit 7cfdd01
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 21 deletions.
12 changes: 0 additions & 12 deletions build/fbcode_builder/getdeps/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -990,7 +990,6 @@ def __init__(
def run_cargo(self, install_dirs, operation, args=None):
args = args or []
env = self._compute_env(install_dirs)
self.add_openssl_to_env(env, install_dirs)
# Enable using nightly features with stable compiler
env["RUSTC_BOOTSTRAP"] = "1"
env["LIBZ_SYS_STATIC"] = "1"
Expand All @@ -1002,17 +1001,6 @@ def run_cargo(self, install_dirs, operation, args=None):
] + args
self._run_cmd(cmd, cwd=self.workspace_dir(), env=env)

def add_openssl_to_env(self, env, install_dirs):
openssl_candidates = [d for d in install_dirs if "openssl" in d]
if len(openssl_candidates) > 1:
raise Exception(
"Found more than one candidate for openssl directory: {}.".format(
openssl_candidates
)
)
elif len(openssl_candidates) == 1:
env["OPENSSL_DIR"] = openssl_candidates[0]

def build_source_dir(self):
return os.path.join(self.build_dir, "source")

Expand Down
15 changes: 15 additions & 0 deletions build/fbcode_builder/getdeps/buildopts.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,9 @@ def compute_env_for_install_dirs(self, install_dirs, env=None, manifest=None):
else:
env = Env()

env["GETDEPS_BUILD_DIR"] = os.path.join(self.scratch_dir, "build")
env["GETDEPS_INSTALL_DIR"] = self.install_dir

if self.fbsource_dir:
env["YARN_YARN_OFFLINE_MIRROR"] = os.path.join(
self.fbsource_dir, "xplat/third-party/yarn/offline-mirror"
Expand Down Expand Up @@ -247,16 +250,28 @@ def compute_env_for_install_dirs(self, install_dirs, env=None, manifest=None):
# If rustc is present in the `bin` directory, set RUSTC to prevent
# cargo uses the rustc installed in the system.
if self.is_windows():
cargo_path = os.path.join(bindir, "cargo.bat")
rustc_path = os.path.join(bindir, "rustc.bat")
rustdoc_path = os.path.join(bindir, "rustdoc.bat")
else:
cargo_path = os.path.join(bindir, "cargo")
rustc_path = os.path.join(bindir, "rustc")
rustdoc_path = os.path.join(bindir, "rustdoc")

if os.path.isfile(rustc_path):
env["CARGO_BIN"] = cargo_path
env["RUSTC"] = rustc_path
env["RUSTDOC"] = rustdoc_path

if self.is_windows():
libcrypto = os.path.join(d, "lib/libcrypto.lib")
else:
libcrypto = os.path.join(d, "lib/libcrypto.so")
openssl_include = os.path.join(d, "include/openssl")
if os.path.isfile(libcrypto) and os.path.isdir(openssl_include):
# This must be the openssl library, let Rust know about it
env["OPENSSL_DIR"] = d

return env


Expand Down
12 changes: 6 additions & 6 deletions build/fbcode_builder/getdeps/runcmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ class RunCommandError(Exception):
pass


def _print_env_diff(env):
def _print_env_diff(env, log_fn):
current_keys = set(os.environ.keys())
wanted_env = set(env.keys())

unset_keys = current_keys.difference(wanted_env)
for k in sorted(unset_keys):
print("+ unset %s" % k)
log_fn("+ unset %s\n" % k)

added_keys = wanted_env.difference(current_keys)
for k in wanted_env.intersection(current_keys):
Expand All @@ -39,11 +39,11 @@ def _print_env_diff(env):

for k in sorted(added_keys):
if ("PATH" in k) and (os.pathsep in env[k]):
print("+ %s=\\" % k)
log_fn("+ %s=\\\n" % k)
for elem in env[k].split(os.pathsep):
print("+ %s%s\\" % (shellquote(elem), os.pathsep))
log_fn("+ %s%s\\\n" % (shellquote(elem), os.pathsep))
else:
print("+ %s=%s \\" % (k, shellquote(env[k])))
log_fn("+ %s=%s \\\n" % (k, shellquote(env[k])))


def run_cmd(cmd, env=None, cwd=None, allow_fail=False, log_file=None):
Expand Down Expand Up @@ -76,7 +76,7 @@ def _run_cmd(cmd, env, cwd, allow_fail, log_fn):

if env:
assert isinstance(env, Env)
_print_env_diff(env)
_print_env_diff(env, log_fn)

# Convert from our Env type to a regular dict.
# This is needed because python3 looks up b'PATH' and 'PATH'
Expand Down
4 changes: 3 additions & 1 deletion build/fbcode_builder/manifests/eden_scm
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,10 @@ fbcode/fboss/common = common
\.pyc$

[dependencies]
fb303
fb303-source
fbthrift
fbthrift-source
openssl
rust-shed

[dependencies.fb=on]
Expand Down
15 changes: 15 additions & 0 deletions build/fbcode_builder/manifests/fb303-source
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[manifest]
name = fb303-source
fbsource_path = fbcode/fb303
shipit_project = fb303
shipit_fbcode_builder = false

[git]
repo_url = https://github.com/facebook/fb303.git

[build]
builder = nop

[shipit.pathmap]
fbcode/fb303/github = .
fbcode/fb303 = fb303
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[manifest]
name = fbthrift-rust
name = fbthrift-source
fbsource_path = fbcode/thrift
shipit_project = fbthrift
shipit_fbcode_builder = true
Expand Down
2 changes: 1 addition & 1 deletion build/fbcode_builder/manifests/mononoke
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ tools/rust/ossconfigs = .
^fbcode/configerator/structs/scm/mononoke/(?!public_autocargo).+/Cargo\.toml$

[dependencies]
fbthrift-rust
fbthrift-source
rust-shed

[dependencies.fb=on]
Expand Down

0 comments on commit 7cfdd01

Please sign in to comment.