mirror of https://github.com/mongodb/mongo
SERVER-107805 Add option to not download c++ toolchain for faster python builds (#39355)
GitOrigin-RevId: a2d449d33df132abb0d6086bcd7f600f5708bb58
This commit is contained in:
parent
d4be755922
commit
d42a85233c
|
|
@ -2,9 +2,17 @@ load("//bazel:utils.bzl", "generate_noop_toolchain", "get_toolchain_subs", "retr
|
||||||
load("//bazel/toolchains/cc/mongo_linux:mongo_toolchain_version.bzl", "TOOLCHAIN_MAP")
|
load("//bazel/toolchains/cc/mongo_linux:mongo_toolchain_version.bzl", "TOOLCHAIN_MAP")
|
||||||
load("//bazel/toolchains/cc/mongo_linux:mongo_mold.bzl", "MOLD_MAP")
|
load("//bazel/toolchains/cc/mongo_linux:mongo_mold.bzl", "MOLD_MAP")
|
||||||
|
|
||||||
|
SKIP_TOOLCHAIN_ENVIRONMENT_VARIABLE = "no_c++_toolchain"
|
||||||
|
|
||||||
def _toolchain_download(ctx):
|
def _toolchain_download(ctx):
|
||||||
distro, arch, substitutions = get_toolchain_subs(ctx)
|
distro, arch, substitutions = get_toolchain_subs(ctx)
|
||||||
|
|
||||||
|
skip_toolchain = ctx.os.environ.get(SKIP_TOOLCHAIN_ENVIRONMENT_VARIABLE, None)
|
||||||
|
if skip_toolchain:
|
||||||
|
generate_noop_toolchain(ctx, substitutions)
|
||||||
|
print("Skipping c++ toolchain download and defining noop toolchain due to " + SKIP_TOOLCHAIN_ENVIRONMENT_VARIABLE + " being defined.")
|
||||||
|
return None
|
||||||
|
|
||||||
toolchain_key = "{distro}_{arch}".format(distro = distro, arch = arch)
|
toolchain_key = "{distro}_{arch}".format(distro = distro, arch = arch)
|
||||||
|
|
||||||
if toolchain_key in TOOLCHAIN_MAP[ctx.attr.version]:
|
if toolchain_key in TOOLCHAIN_MAP[ctx.attr.version]:
|
||||||
|
|
@ -50,6 +58,7 @@ def _toolchain_download(ctx):
|
||||||
|
|
||||||
toolchain_download = repository_rule(
|
toolchain_download = repository_rule(
|
||||||
implementation = _toolchain_download,
|
implementation = _toolchain_download,
|
||||||
|
environ = [SKIP_TOOLCHAIN_ENVIRONMENT_VARIABLE],
|
||||||
attrs = {
|
attrs = {
|
||||||
"os": attr.string(
|
"os": attr.string(
|
||||||
values = ["macos", "linux", "windows"],
|
values = ["macos", "linux", "windows"],
|
||||||
|
|
|
||||||
|
|
@ -88,8 +88,12 @@ def search_for_modules(deps, deps_installed, lockfile_changed=False):
|
||||||
wrapper_debug(f"deps_not_found: {deps_not_found}")
|
wrapper_debug(f"deps_not_found: {deps_not_found}")
|
||||||
return deps_not_found
|
return deps_not_found
|
||||||
|
|
||||||
|
def skip_cplusplus_toolchain(args):
|
||||||
|
if any("no_c++_toolchain" in arg for arg in args):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def install_modules(bazel):
|
def install_modules(bazel, args):
|
||||||
need_to_install = False
|
need_to_install = False
|
||||||
pwd_hash = hashlib.md5(str(REPO_ROOT).encode()).hexdigest()
|
pwd_hash = hashlib.md5(str(REPO_ROOT).encode()).hexdigest()
|
||||||
lockfile_hash_file = pathlib.Path(tempfile.gettempdir()) / f"{pwd_hash}_lockfile_hash"
|
lockfile_hash_file = pathlib.Path(tempfile.gettempdir()) / f"{pwd_hash}_lockfile_hash"
|
||||||
|
|
@ -123,6 +127,10 @@ def install_modules(bazel):
|
||||||
bazel,
|
bazel,
|
||||||
"build",
|
"build",
|
||||||
] + ["@poetry//:library_" + dep.replace("-", "_") for dep in deps_needed]
|
] + ["@poetry//:library_" + dep.replace("-", "_") for dep in deps_needed]
|
||||||
|
|
||||||
|
if skip_cplusplus_toolchain(args):
|
||||||
|
cmd += ["--repo_env=no_c++_toolchain=1"]
|
||||||
|
|
||||||
proc = subprocess.run(
|
proc = subprocess.run(
|
||||||
cmd
|
cmd
|
||||||
+ [
|
+ [
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ BAZEL_CI_NAMESPACE = "ci-prod"
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
install_modules(sys.argv[1])
|
install_modules(sys.argv[1], sys.argv[1:])
|
||||||
|
|
||||||
from bazel.wrapper_hook.flag_sync import sync_flags
|
from bazel.wrapper_hook.flag_sync import sync_flags
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ wrapper_debug(f"wrapper hook script is using {sys.executable}")
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
install_modules(sys.argv[1])
|
install_modules(sys.argv[1], sys.argv[1:])
|
||||||
|
|
||||||
from bazel.wrapper_hook.autogenerated_targets import autogenerate_targets
|
from bazel.wrapper_hook.autogenerated_targets import autogenerate_targets
|
||||||
from bazel.wrapper_hook.engflow_check import engflow_auth
|
from bazel.wrapper_hook.engflow_check import engflow_auth
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue