diff --git a/build/fbcode_builder/getdeps/builder.py b/build/fbcode_builder/getdeps/builder.py index 97a4d63d0..bc6c93965 100644 --- a/build/fbcode_builder/getdeps/builder.py +++ b/build/fbcode_builder/getdeps/builder.py @@ -12,17 +12,20 @@ import shutil import stat import subprocess import sys +import typing from .dyndeps import create_dyn_dep_munger from .envfuncs import add_path_entry, Env, path_search from .fetcher import copy_if_different from .runcmd import run_cmd +if typing.TYPE_CHECKING: + from .buildopts import BuildOptions class BuilderBase(object): def __init__( self, - build_opts, + build_opts: "BuildOptions", ctx, manifest, src_dir, diff --git a/build/fbcode_builder/getdeps/buildopts.py b/build/fbcode_builder/getdeps/buildopts.py index 108ddc9e2..de76a9525 100644 --- a/build/fbcode_builder/getdeps/buildopts.py +++ b/build/fbcode_builder/getdeps/buildopts.py @@ -83,7 +83,7 @@ class BuildOptions(object): # If we are running from an fbsource repository, set self.fbsource_dir # to allow the ShipIt-based fetchers to use it. if self.repo_project == "fbsource": - self.fbsource_dir = self.repo_root + self.fbsource_dir: Optional[str] = self.repo_root else: self.fbsource_dir = None diff --git a/build/fbcode_builder/getdeps/cargo.py b/build/fbcode_builder/getdeps/cargo.py index 574c471db..a594145af 100644 --- a/build/fbcode_builder/getdeps/cargo.py +++ b/build/fbcode_builder/getdeps/cargo.py @@ -7,14 +7,18 @@ import os import re import shutil +import typing from .builder import BuilderBase +if typing.TYPE_CHECKING: + from .buildopts import BuildOptions + class CargoBuilder(BuilderBase): def __init__( self, - build_opts, + build_opts: "BuildOptions", ctx, manifest, src_dir, @@ -110,15 +114,16 @@ directory = "{vendored_dir}" """ ) - # Point to vendored crates.io if possible - try: - from .facebook.rust import vendored_crates + if self.build_opts.fbsource_dir: + # Point to vendored crates.io if possible + try: + from .facebook.rust import vendored_crates - vendored_crates(self.build_opts, cargo_config_file) - except ImportError: - # This FB internal module isn't shippped to github, - # so just rely on cargo downloading crates on it's own - pass + vendored_crates(self.build_opts.fbsource_dir, cargo_config_file) + except ImportError: + # This FB internal module isn't shippped to github, + # so just rely on cargo downloading crates on it's own + pass return dep_to_git