diff --git a/build/fbcode_builder/getdeps/builder.py b/build/fbcode_builder/getdeps/builder.py index da1b44a99..c69efc87f 100644 --- a/build/fbcode_builder/getdeps/builder.py +++ b/build/fbcode_builder/getdeps/builder.py @@ -952,6 +952,7 @@ class CargoBuilder(BuilderBase): 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" cmd = [ @@ -962,6 +963,17 @@ class CargoBuilder(BuilderBase): ] + 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") diff --git a/build/fbcode_builder/manifests/rust-shed b/build/fbcode_builder/manifests/rust-shed index 0afb829f6..7cb2f027e 100644 --- a/build/fbcode_builder/manifests/rust-shed +++ b/build/fbcode_builder/manifests/rust-shed @@ -25,5 +25,13 @@ tools/rust/ossconfigs = . [dependencies] fbthrift +# macOS doesn't expose the openssl api so we need to build our own. +[dependencies.os=darwin] +openssl + +# Windows doesn't have openssl, so we get to provide it +[dependencies.os=windows] +openssl + [dependencies.fb=on] rust