0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-21 12:39:08 +01:00

SERVER-91979 Upgrade to Bazel 7.2 (#28749)

GitOrigin-RevId: 9139373c72c251a5474d080cbccba8ef221e1386
This commit is contained in:
Andrew Bradshaw 2024-11-01 13:26:33 -07:00 committed by MongoDB Bot
parent 776fa92558
commit 3220129aea
28 changed files with 218 additions and 76 deletions

View File

@ -129,7 +129,7 @@ build:linux --jobs=200
build --remote_cache=grpcs://sodalite.cluster.engflow.com
build --bes_backend=grpcs://sodalite.cluster.engflow.com
build --bes_results_url=https://sodalite.cluster.engflow.com/invocation/
build --experimental_remote_cache_compression=true
build --remote_cache_compression=true
build --grpc_keepalive_time=30s
build --nolegacy_important_outputs
build --bes_keywords=repo:mongo
@ -156,7 +156,7 @@ build:local --bes_backend=
build:local --bes_results_url=
build:local --tls_client_certificate=
build:local --tls_client_key=
build:local --experimental_remote_cache_compression=false
build:local --remote_cache_compression=false
build:local --grpc_keepalive_time=0s
build:local --legacy_important_outputs
build:local --jobs=auto
@ -174,18 +174,17 @@ build:public-release --bes_backend=
build:public-release --bes_results_url=
build:public-release --tls_client_certificate=
build:public-release --tls_client_key=
build:public-release --experimental_remote_cache_compression=false
build:public-release --remote_cache_compression=false
build:public-release --grpc_keepalive_time=0s
build:public-release --legacy_important_outputs
# Avoid failing builds when BES metadata fails to upload.
common --bes_upload_mode=fully_async
# TODO SERVER-89593
# Renable after bazel 7.0 due to query bug:
# https://github.com/bazelbuild/bazel/issues/10902
# Enable Build without the Bytes
# common --remote_download_outputs=toplevel
common --remote_download_outputs=toplevel
common --enable_bzlmod=false
# Default Mongo Version if a version is not specified.
build --define=MONGO_VERSION=8.1.0-alpha
@ -205,6 +204,9 @@ try-import %workspace%/.bazelrc.evergreen_engflow_creds
# Evergreen settings, ex. in evergreen this will set the key/cert options for access to the cluster
try-import %workspace%/.bazelrc.evergreen
# Import settings for selecting the right xcode version on mac
try-import %workspace%/.bazelrc.xcode
# local default dev settings
try-import %workspace%/.bazelrc.workstation

View File

@ -1,3 +1,3 @@
6.4.0
# TODO(SERVER-86050): s390x and ppc64le are using custom built Bazel v6.4.0 binaries
7.2.1
# TODO(SERVER-86050): s390x and ppc64le are using custom built Bazel v7.2.1 binaries
# Do not update this without updating the custom built binaries until Bazelisk is supported on s390x & ppc64le.

3
.gitignore vendored
View File

@ -279,11 +279,14 @@ buildifier
.bazelrc.local
.bazelrc.gitinfo
.bazelrc.workstation
.bazelrc.xcode
.bazel_info_for_ninja.txt
.ninja_last_command_line_targets.txt
bazel/coverity/analysis/BUILD.bazel
.bazel_include_info.json
.bazel_header_list_cache
MODULE.bazel
MODULE.bazel.lock
# generated configs for external fixture suites
docker_compose/

View File

@ -1,4 +1,23 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
# Apple cc toolchain needs to be loaded before regular cc toolchain or else Apple will just use regular cc toolchain
http_archive(
name = "build_bazel_apple_support",
sha256 = "b53f6491e742549f13866628ddffcc75d1f3b2d6987dc4f14a16b242113c890b",
url = "https://github.com/bazelbuild/apple_support/releases/download/1.17.1/apple_support.1.17.1.tar.gz",
)
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load("//bazel/platforms:local_config_platform.bzl", "setup_local_config_platform")
load("//bazel/toolchains:mongo_toolchain.bzl", "toolchain_download")
@ -17,7 +36,7 @@ http_archive(
],
)
setup_local_config_platform(name = "local_config_platform")
setup_local_config_platform(name = "internal_platforms_do_not_use")
toolchain_download(name = "mongo_toolchain")

View File

@ -194,7 +194,7 @@ config_setting(
name = "linux_ppc64le",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:ppc64le",
"@platforms//cpu:ppc",
],
)
@ -259,7 +259,7 @@ selects.config_setting_group(
match_any = [
"@platforms//cpu:aarch64",
"@platforms//cpu:x86_64",
"@platforms//cpu:ppc64le",
"@platforms//cpu:ppc",
],
)
@ -848,7 +848,7 @@ selects.config_setting_group(
name = "_tcmalloc_gperf_auto_supported",
match_any = [
"@platforms//os:windows",
"@platforms//cpu:ppc64le",
"@platforms//cpu:ppc",
"@platforms//cpu:s390x",
],
)

View File

@ -8,12 +8,12 @@ Bazel usually comes with a built-in JDK. However, the tooling used to build the
On the MongoDB PPC64LE Evergreen static hosts and dev hosts, the OpenJDK 11 installation exists at:
/usr/lib/jvm/java-11-openjdk-11.0.4.11-2.el8.ppc64le
/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.ppc64le
To compile with on these platforms, the developer must set JAVA_HOME before invoking Bazel.
# Bazel v6.4.0 Compilation Steps
# Bazel v7.2.1 Compilation Steps
curl -O -L https://github.com/bazelbuild/bazel/releases/download/6.4.0/bazel-6.4.0-dist.zip
unzip bazel-6.4.0-dist.zip
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.4.11-2.el8.ppc64le ./compile.sh
curl -O -L https://github.com/bazelbuild/bazel/releases/download/7.2.1/bazel-7.2.1-dist.zip
unzip bazel-7.2.1-dist.zip
JAVA_HOME=/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.ppc64le ./compile.sh

View File

@ -8,12 +8,12 @@ Bazel usually comes with a built-in JDK. However, the tooling used to build the
On the MongoDB S390X Evergreen static hosts and dev hosts, the OpenJDK 11 installation exists at:
/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-0.el8_3.s390x
/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.s390x
To compile with on these platforms, the developer must set JAVA_HOME before invoking Bazel.
# Bazel v6.4.0 Compilation Steps
# Bazel v7.2.1 Compilation Steps
curl -O -L https://github.com/bazelbuild/bazel/releases/download/6.4.0/bazel-6.4.0-dist.zip
unzip bazel-6.4.0-dist.zip
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-0.el8_3.s390x ./compile.sh
curl -O -L https://github.com/bazelbuild/bazel/releases/download/7.2.1/bazel-7.2.1-dist.zip
unzip bazel-7.2.1-dist.zip
JAVA_HOME=/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.s390x ./compile.sh

View File

@ -1329,7 +1329,7 @@ def force_includes_copt(package_name, name):
if package_name.startswith("src/mongo"):
basic_h = "mongo/platform/basic.h"
return select({
"@platforms//os:windows": ["/FI", basic_h],
"@platforms//os:windows": ["/FI" + basic_h],
"//conditions:default": ["-include", basic_h],
})
@ -1341,7 +1341,7 @@ def force_includes_copt(package_name, name):
"//bazel/config:linux_x86_64": ["-include", "third_party/mozjs/platform/x86_64/linux/build/js-config.h"],
"//bazel/config:macos_aarch64": ["-include", "third_party/mozjs/platform/aarch64/macOS/build/js-config.h"],
"//bazel/config:macos_x86_64": ["-include", "third_party/mozjs/platform/x86_64/macOS/build/js-config.h"],
"//bazel/config:windows_x86_64": ["/FI", "third_party/mozjs/platform/x86_64/windows/build/js-config.h"],
"//bazel/config:windows_x86_64": ["/FI" + "third_party/mozjs/platform/x86_64/windows/build/js-config.h"],
})
return []

View File

@ -98,7 +98,7 @@ platform(
platform(
name = "linux_ppc64le",
constraint_values = [
"@platforms//cpu:ppc64le",
"@platforms//cpu:ppc",
"@platforms//os:linux",
],
)
@ -114,7 +114,7 @@ platform(
platform(
name = "rhel8_ppc64le",
constraint_values = [
"@platforms//cpu:ppc64le",
"@platforms//cpu:ppc",
"@platforms//os:linux",
":use_mongo_toolchain",
],

View File

@ -12,7 +12,7 @@ _ARCH_MAP = {
"amd64": "@platforms//cpu:x86_64",
"aarch64": "@platforms//cpu:arm64",
"x86_64": "@platforms//cpu:x86_64",
"ppc64le": "@platforms//cpu:ppc64le",
"ppc64le": "@platforms//cpu:ppc",
"s390x": "@platforms//cpu:s390x",
}
@ -85,18 +85,24 @@ def _setup_local_config_platform(ctx):
}
ctx.template(
"BUILD.bazel",
"host/BUILD.bazel",
ctx.attr.build_tpl,
substitutions = substitutions,
)
ctx.template(
"constraints.bzl",
"host/constraints.bzl",
ctx.attr.constraints_tpl,
substitutions = substitutions,
)
return result
ctx.template(
"host/extension.bzl",
ctx.attr.extension_tpl,
substitutions = substitutions,
)
return None
setup_local_config_platform = repository_rule(
implementation = _setup_local_config_platform,
@ -109,6 +115,10 @@ setup_local_config_platform = repository_rule(
default = "//bazel/platforms:local_config_platform_constraints.bzl",
doc = "Template modeling the builtin local config platform constraints file.",
),
"extension_tpl": attr.label(
default = "//bazel/platforms:local_config_platform_extension.bzl",
doc = "Template modeling the builtin local config platform constraints file.",
),
},
environ = ["USE_NATIVE_TOOLCHAIN"],
)

View File

@ -0,0 +1,66 @@
def _translate_cpu(arch):
if arch in ["i386", "i486", "i586", "i686", "i786", "x86"]:
return "x86_32"
if arch in ["amd64", "x86_64", "x64"]:
return "x86_64"
if arch in ["ppc", "ppc64", "ppc64le"]:
return "ppc"
if arch in ["arm", "armv7l"]:
return "arm"
if arch in ["aarch64"]:
return "aarch64"
if arch in ["s390x", "s390"]:
return "s390x"
if arch in ["mips64el", "mips64"]:
return "mips64"
if arch in ["riscv64"]:
return "riscv64"
return None
def _translate_os(os):
if os.startswith("mac os"):
return "osx"
if os.startswith("freebsd"):
return "freebsd"
if os.startswith("openbsd"):
return "openbsd"
if os.startswith("linux"):
return "linux"
if os.startswith("windows"):
return "windows"
return None
def _host_platform_repo_impl(rctx):
cpu = _translate_cpu(rctx.os.arch)
os = _translate_os(rctx.os.name)
cpu = "" if cpu == None else " '@platforms//cpu:%s',\n" % cpu
os = "" if os == None else " '@platforms//os:%s',\n" % os
rctx.file("BUILD.bazel", """
# DO NOT EDIT: automatically generated BUILD file
exports_files(["constraints.bzl"])
""")
rctx.file("constraints.bzl", """
# DO NOT EDIT: automatically generated constraints list
HOST_CONSTRAINTS = [
%s%s]
""" % (cpu, os))
host_platform_repo = repository_rule(
implementation = _host_platform_repo_impl,
doc = """Generates constraints for the host platform. The constraints.bzl
file contains a single <code>HOST_CONSTRAINTS</code> variable, which is a
list of strings, each of which is a label to a <code>constraint_value</code>
for the host platform.""",
)
def _host_platform_impl(_mctx):
host_platform_repo(name = "host_platform")
host_platform = module_extension(
implementation = _host_platform_impl,
doc = """Generates a <code>host_platform_repo</code> repo named
<code>host_platform</code>, containing constraints for the host platform.""",
)

View File

@ -3,6 +3,7 @@ load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
WITH_DEBUG_SUFFIX = "_with_debug"
CC_SHARED_LIBRARY_SUFFIX = "_shared"
SHARED_ARCHIVE_SUFFIX = "_shared_archive"
MAC_DEBUG_FOLDER_EXTENSION = ".dSYM"
def get_inputs_and_outputs(ctx, shared_ext, static_ext, debug_ext):
"""
@ -35,6 +36,9 @@ def get_inputs_and_outputs(ctx, shared_ext, static_ext, debug_ext):
if shared_lib:
basename = shared_lib.basename[:-len(WITH_DEBUG_SUFFIX + shared_ext + CC_SHARED_LIBRARY_SUFFIX)]
if ctx.attr.enabled:
if debug_ext == MAC_DEBUG_FOLDER_EXTENSION:
debug_info = ctx.actions.declare_directory(basename + shared_ext + debug_ext)
else:
debug_info = ctx.actions.declare_file(basename + shared_ext + debug_ext)
else:
debug_info = None
@ -49,6 +53,9 @@ def get_inputs_and_outputs(ctx, shared_ext, static_ext, debug_ext):
basename = program_bin.basename[:-len(WITH_DEBUG_SUFFIX)]
if ctx.attr.enabled:
if debug_ext == MAC_DEBUG_FOLDER_EXTENSION:
debug_info = ctx.actions.declare_directory(basename + debug_ext)
else:
debug_info = ctx.actions.declare_file(basename + debug_ext)
else:
debug_info = None
@ -292,7 +299,7 @@ def linux_extraction(ctx, cc_toolchain, inputs):
def macos_extraction(ctx, cc_toolchain, inputs):
outputs = []
unstripped_static_bin = None
input_bin, output_bin, debug_info, static_lib = get_inputs_and_outputs(ctx, ".dylib", ".a", ".dSYM")
input_bin, output_bin, debug_info, static_lib = get_inputs_and_outputs(ctx, ".dylib", ".a", MAC_DEBUG_FOLDER_EXTENSION)
input_file = ctx.attr.binary_with_debug.files.to_list()
if input_bin:

View File

@ -36,7 +36,7 @@ mongo_cc_toolchain_config(
name = "cc_gcc_toolchain_config",
bin_dirs = COMMON_BINDIRS,
compiler = "gcc",
cpu = "{platforms_arch}",
cpu = "{bazel_toolchain_cpu}",
cxx_builtin_include_directories = COMMON_BUILTIN_INCLUDE_DIRECTORIES,
extra_ldflags = LINK_FLAGS,
includes = GCC_INCLUDE_DIRS + COMMON_INCLUDE_DIRECTORIES + COMMON_BUILTIN_INCLUDE_DIRECTORIES,
@ -65,7 +65,7 @@ mongo_cc_toolchain_config(
name = "cc_clang_toolchain_config",
bin_dirs = COMMON_BINDIRS,
compiler = "clang",
cpu = "{platforms_arch}",
cpu = "{bazel_toolchain_cpu}",
cxx_builtin_include_directories = COMMON_BUILTIN_INCLUDE_DIRECTORIES,
extra_ldflags = LINK_FLAGS,
includes = CLANG_INCLUDE_DIRS + COMMON_INCLUDE_DIRECTORIES + COMMON_BUILTIN_INCLUDE_DIRECTORIES,
@ -112,12 +112,12 @@ toolchain(
name = "mongo_toolchain",
exec_compatible_with = [
"@platforms//os:linux",
"@platforms//cpu:{platforms_arch}",
"@platforms//cpu:{bazel_toolchain_cpu}",
"@//bazel/platforms:use_mongo_toolchain",
],
target_compatible_with = [
"@platforms//os:linux",
"@platforms//cpu:{platforms_arch}",
"@platforms//cpu:{bazel_toolchain_cpu}",
"@//bazel/platforms:use_mongo_toolchain",
],
toolchain = ":cc_mongo_toolchain",

View File

@ -11,7 +11,7 @@ _OS_MAP = {
_ARCH_MAP = {
"aarch64": "@platforms//cpu:arm64",
"x86_64": "@platforms//cpu:x86_64",
"ppc64le": "@platforms//cpu:ppc64le",
"ppc64le": "@platforms//cpu:ppc",
"s390x": "@platforms//cpu:s390x",
}
@ -57,7 +57,7 @@ def _toolchain_download(ctx):
elif arch == "x86_64":
substitutions = {
"{platforms_arch}": "x86_64",
"{bazel_toolchain_cpu}": "k8",
"{bazel_toolchain_cpu}": "x86_64",
"{arch}": arch,
}
elif arch == "ppc64le":

View File

@ -12,7 +12,7 @@ _ARCH_MAP = {
"amd64": "@platforms//cpu:x86_64",
"aarch64": "@platforms//cpu:arm64",
"x86_64": "@platforms//cpu:x86_64",
"ppc64le": "@platforms//cpu:ppc64le",
"ppc64le": "@platforms//cpu:ppc",
"s390x": "@platforms//cpu:s390x",
}

View File

@ -405,9 +405,9 @@ def main():
# Set JAVA_HOME on ppc & s390x architectures
global bazel_env_settings
if platform.machine().lower() == "ppc64le":
bazel_env_settings["JAVA_HOME"] = "/usr/lib/jvm/java-11-openjdk-11.0.4.11-2.el8.ppc64le"
bazel_env_settings["JAVA_HOME"] = "/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.ppc64le"
elif platform.machine().lower() == "s390x":
bazel_env_settings["JAVA_HOME"] = "/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-0.el8_3.s390x"
bazel_env_settings["JAVA_HOME"] = "/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.s390x"
target_type_map = {}
for scons_target in args.scons_targets:

View File

@ -10,8 +10,8 @@ import urllib.request
from retry import retry
_S3_HASH_MAPPING = {
"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-6.4.0-ppc64le": "dd21c75817533ff601bf797e64f0eb2f7f6b813af26c829f0bda30e328caef46",
"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-6.4.0-s390x": "6d72eabc1789b041bbe4cfc033bbac4491ec9938ef6da9899c0188ecf270a7f4",
"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-7.2.1-ppc64le": "4ecc7f1396b8d921c6468b34cc8ed356c4f2dbe8a154c25d681a61ccb5dfc9cb",
"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-7.2.1-s390x": "2f5f7fd747620d96e885766a4027347c75c0f455c68219211a00e72fc6413be9",
"https://mdb-build-public.s3.amazonaws.com/bazelisk-binaries/v1.19.0/bazelisk-darwin-amd64": "f2ba5f721a995b54bab68c6b76a340719888aa740310e634771086b6d1528ecd",
"https://mdb-build-public.s3.amazonaws.com/bazelisk-binaries/v1.19.0/bazelisk-darwin-arm64": "69fa21cd2ccffc2f0970c21aa3615484ba89e3553ecce1233a9d8ad9570d170e",
"https://mdb-build-public.s3.amazonaws.com/bazelisk-binaries/v1.19.0/bazelisk-linux-amd64": "d28b588ac0916abd6bf02defb5433f6eddf7cba35ffa808eabb65a44aab226f7",
@ -72,7 +72,7 @@ def install_bazel(binary_directory: str) -> str:
print(
"Warning: Bazelisk is not supported on this platform. Installing Bazel directly instead."
)
s3_path = f"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-6.4.0-{normalized_arch}"
s3_path = f"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-7.2.1-{normalized_arch}"
_download_path_with_retry(s3_path, binary_path)
_verify_s3_hash(s3_path, binary_path)

View File

@ -42,9 +42,9 @@ fi
# Set the JAVA_HOME directories for ppc64le and s390x since their bazel binaries are not compiled with a built-in JDK.
# TODO(SERVER-86050): remove the branch once bazelisk is built on s390x & ppc64le
if [[ $ARCH == "ppc64le" ]]; then
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.4.11-2.el8.ppc64le"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.ppc64le"
elif [[ $ARCH == "s390x" ]]; then
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-0.el8_3.s390x"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.s390x"
fi
# TODO(SERVER-86050): remove the branch once bazelisk is built on s390x & ppc64le

View File

@ -45,9 +45,9 @@ fi
# Set the JAVA_HOME directories for ppc64le and s390x since their bazel binaries are not compiled with a built-in JDK.
if [[ $ARCH == "ppc64le" ]]; then
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.4.11-2.el8.ppc64le"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.ppc64le"
elif [[ $ARCH == "s390x" ]]; then
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-0.el8_3.s390x"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.s390x"
fi
# Print command being run to file that can be uploaded

View File

@ -36,9 +36,9 @@ fi
# Set the JAVA_HOME directories for ppc64le and s390x since their bazel binaries are not compiled with a built-in JDK.
if [[ $ARCH == "ppc64le" ]]; then
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.4.11-2.el8.ppc64le"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.ppc64le"
elif [[ $ARCH == "s390x" ]]; then
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-0.el8_3.s390x"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.s390x"
fi
eval ${compile_env} $python ./buildscripts/bazel_scons_diff.py \

View File

@ -36,7 +36,7 @@ mkdir -p $TMPDIR
# TODO(SERVER-86050): remove the branch once bazelisk is built on s390x & ppc64le
if [[ $ARCH == "ppc64le" ]] || [[ $ARCH == "s390x" ]]; then
REMOTE_PATH=https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-6.4.0-${ARCH}
REMOTE_PATH=https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-7.2.1-${ARCH}
LOCAL_PATH=$TMPDIR/bazel
else
REMOTE_PATH=https://mdb-build-public.s3.amazonaws.com/bazelisk-binaries/v1.19.0/bazelisk-${OS}-${ARCH}${EXT}

View File

@ -74,8 +74,8 @@ _DISTRO_PATTERN_MAP = {
}
_S3_HASH_MAPPING = {
"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-6.4.0-ppc64le": "dd21c75817533ff601bf797e64f0eb2f7f6b813af26c829f0bda30e328caef46",
"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-6.4.0-s390x": "6d72eabc1789b041bbe4cfc033bbac4491ec9938ef6da9899c0188ecf270a7f4",
"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-7.2.1-ppc64le": "4ecc7f1396b8d921c6468b34cc8ed356c4f2dbe8a154c25d681a61ccb5dfc9cb",
"https://mdb-build-public.s3.amazonaws.com/bazel-binaries/bazel-7.2.1-s390x": "2f5f7fd747620d96e885766a4027347c75c0f455c68219211a00e72fc6413be9",
"https://mdb-build-public.s3.amazonaws.com/bazelisk-binaries/v1.19.0/bazelisk-darwin-amd64": "f2ba5f721a995b54bab68c6b76a340719888aa740310e634771086b6d1528ecd",
"https://mdb-build-public.s3.amazonaws.com/bazelisk-binaries/v1.19.0/bazelisk-darwin-arm64": "69fa21cd2ccffc2f0970c21aa3615484ba89e3553ecce1233a9d8ad9570d170e",
"https://mdb-build-public.s3.amazonaws.com/bazelisk-binaries/v1.19.0/bazelisk-linux-amd64": "d28b588ac0916abd6bf02defb5433f6eddf7cba35ffa808eabb65a44aab226f7",
@ -172,7 +172,9 @@ def bazel_builder_action(
# So we will do the renaming of dwarf file to what scons expects here, before we copy to scons tree
substring_end = str(t).find(".dSYM/") + 5
t = str(t)[:substring_end]
s = Globals.bazel_output(t)
# This is declared as an output folder, so bazel appends (TreeArtifact) to it
s = Globals.bazel_output(t + " (TreeArtifact)")
s = str(s).removesuffix(" (TreeArtifact)")
dwarf_info_base = os.path.splitext(os.path.splitext(os.path.basename(t))[0])[0]
dwarf_sym_with_debug = os.path.join(
s, f"Contents/Resources/DWARF/{dwarf_info_base}_shared_with_debug.dylib"
@ -186,12 +188,20 @@ def bazel_builder_action(
s, f"Contents/Resources/DWARF/{dwarf_info_base}_with_debug"
)
dwarf_sym = os.path.join(s, f"Contents/Resources/DWARF/{dwarf_info_base}")
# rename the file for scons
shutil.copy(dwarf_sym_with_debug, dwarf_sym)
# copy the whole dSYM in one operation. Clean any existing files that might be in the way.
print(f"Moving .dSYM from {s} over to {t}.")
shutil.rmtree(str(t), ignore_errors=True)
shutil.copytree(s, str(t))
# we want to change the permissions back to normal permissions on the folders copied rather than read only
os.chmod(t, 0o755)
for root, dirs, files in os.walk(t):
for name in files:
os.chmod(os.path.join(root, name), 0o755)
for name in dirs:
os.chmod(os.path.join(root, name), 0o755)
# shouldn't write our own files to the bazel directory, renaming file for scons
shutil.copy(dwarf_sym_with_debug.replace(s, t), dwarf_sym.replace(s, t))
else:
s = Globals.bazel_output(t)
shutil.copy(s, str(t))
@ -898,11 +908,11 @@ def setup_bazel_env_vars() -> None:
# Set the JAVA_HOME directories for ppc64le and s390x since their bazel binaries are not compiled with a built-in JDK.
if platform.machine().lower() == "ppc64le":
Globals.bazel_env_variables["JAVA_HOME"] = (
"/usr/lib/jvm/java-11-openjdk-11.0.4.11-2.el8.ppc64le"
"/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.ppc64le"
)
elif platform.machine().lower() == "s390x":
Globals.bazel_env_variables["JAVA_HOME"] = (
"/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-0.el8_3.s390x"
"/usr/lib/jvm/java-21-openjdk-21.0.4.0.7-1.el8.s390x"
)

View File

@ -71,7 +71,7 @@ mongo_cc_library(
] + select({
"@platforms//cpu:x86_64": ["byte_vector_sse2.h"],
"@platforms//cpu:aarch64": ["byte_vector_neon.h"],
"@platforms//cpu:ppc64le": ["byte_vector_altivec.h"],
"@platforms//cpu:ppc": ["byte_vector_altivec.h"],
"//conditions:default": [],
}),
deps = [

View File

@ -74,6 +74,11 @@ IGNORE_WARNINGS_COPT = select({
"//conditions:default": ["-w"],
})
DYNAMIC_LOOKUP_LINKOPT = select({
"@platforms//os:macos": ["-Wl,-undefined,dynamic_lookup"],
"//conditions:default": [""],
})
INTEL_RDFP_FLOAT128_INTERNAL_HEADERS = [
"LIBRARY/float128/architecture.h",
"LIBRARY/float128/assert.h",
@ -132,6 +137,7 @@ mongo_cc_library(
"LIBRARY/float128/dpml_log.c",
] + INTEL_RDFP_FLOAT128_INTERNAL_HEADERS,
copts = IGNORE_WARNINGS_COPT,
linkopts = DYNAMIC_LOOKUP_LINKOPT,
local_defines = INTEL_RDFP_MATHLIB_DEFINES + [
"LOG1P=1",
"efi2=1",

View File

@ -47,8 +47,7 @@ PLATFORM_INCLUDES = select({
PLATFORM_COPTS = select({
config: [
"/FI" if os == "windows" else "-include",
"$(location platform/{}/{}/build/js-confdefs.h)".format(arch, os),
("/FI" if os == "windows" else "-include") + "$(location platform/{}/{}/build/js-confdefs.h)".format(arch, os),
] + (["-mavx2"] if arch == "x86_64" and os != "windows" else [])
for config, (arch, os) in PLATFORMS.items()
} | {
@ -297,6 +296,10 @@ mongo_cc_library(
"include",
"mongo_sources",
] + PLATFORM_INCLUDES,
linkopts = select({
"@platforms//os:macos": ["-Wl,-undefined,dynamic_lookup"],
"//conditions:default": [""],
}),
local_defines = [
"IMPL_MFBT=1",
"U_NO_DEFAULT_INCLUDE_UTF_HEADERS=1",

View File

@ -98,7 +98,7 @@ mongo_cc_library(
"dist/src/x86_64/is_fpreg.c",
"dist/src/x86_64/regname.c",
],
"@platforms//cpu:ppc64le": [
"@platforms//cpu:ppc": [
"dist/src/ppc/Lget_proc_info.c",
"dist/src/ppc/Lget_save_loc.c",
"dist/src/ppc/Linit_local.c",
@ -142,7 +142,7 @@ mongo_cc_library(
"dist/src/x86_64/getcontext.S",
"dist/src/x86_64/setcontext.S",
],
"@platforms//cpu:ppc64le": [],
"@platforms//cpu:ppc": [],
"@platforms//cpu:s390x": [
"dist/src/s390x/getcontext.S",
"dist/src/s390x/setcontext.S",
@ -171,7 +171,7 @@ mongo_cc_library(
"-Isrc/third_party/unwind/platform/linux_x86_64/build/include",
"-Isrc/third_party/unwind/dist/include/tdep-x86_64",
],
"@platforms//cpu:ppc64le": [
"@platforms//cpu:ppc": [
"-Isrc/third_party/unwind/platform/linux_ppc64le/build/include",
"-Isrc/third_party/unwind/dist/include/tdep-ppc64",
],
@ -204,14 +204,10 @@ mongo_cc_library(
"no_warn_non_virtual_detour",
],
includes = select({
"@platforms//cpu:{}".format(cpu): ["platform/linux_{}/install/include".format(cpu)]
for cpu in [
"aarch64",
"x86_64",
"ppc64le",
"s390x",
]
} | {
"@platforms//cpu:aarch64": ["platform/linux_aarch64/install/include"],
"@platforms//cpu:x86_64": ["platform/linux_x86_64/install/include"],
"@platforms//cpu:ppc": ["platform/linux_ppc64le/install/include"],
"@platforms//cpu:s390x": ["platform/linux_s390x/install/include"],
"//conditions:default": [],
}),
local_defines = [

View File

@ -102,7 +102,7 @@ mongo_cc_library(
] + select({
"@platforms//cpu:aarch64": WT_FILELIST_ARM64_HOST,
"@platforms//cpu:x86_64": WT_FILELIST_X86_HOST,
"@platforms//cpu:ppc64le": WT_FILELIST_POWERPC_HOST,
"@platforms//cpu:ppc": WT_FILELIST_POWERPC_HOST,
"@platforms//cpu:s390x": [
WT_FILELIST_ZSERIES_HOST[0],
":wiredtiger_s390x_checksum_index_1",

View File

@ -3,6 +3,12 @@
# Whenever Bazel is invoked, it first calls this script setting "BAZEL_REAL" to the path of the real Bazel binary.
# Use this file as a wrapper for any logic that should run before bazel itself is executed.
# WARNING : If you run //:compiledb target, you can not print to stdout in this file as it will fail with
# "Bazel aquery failed." because it is reading this files stdout as aquery output
bazel_real="$BAZEL_REAL"
bazelrc_xcode_lines=()
if [[ -z "${BAZELISK_SKIP_WRAPPER}" ]]; then
echo "You're not using Bazelisk, which is recommended for a consistent build environment." >&2
echo "Your version of Bazel may be mismatched with the version intended to be used to build MongoDB." >&2
@ -18,4 +24,18 @@ if [ -d .git ]; then
echo "build --define GIT_COMMIT_HASH=$(git rev-parse HEAD)" > .bazelrc.gitinfo
fi
$BAZEL_REAL "$@"
if [[ $OSTYPE == darwin* ]]; then
echo "Running on Apple (darwin), creating .bazelrc for xcode settings." >&2
xcode_path=$(xcode-select -p) >&2
xcode_version=$(xcodebuild -version | tail -1 | cut -d " " -f3) >&2
xcode_build_number=$(/usr/bin/xcodebuild -version 2>/dev/null | tail -1 | cut -d " " -f3) >&2
bazelrc_lines+=("startup --host_jvm_args=-Xdock:name=$xcode_path") >&2
bazelrc_lines+=("build --xcode_version=$xcode_version") >&2
bazelrc_lines+=("build --repo_env=USE_CLANG_CL=$xcode_version") >&2
bazelrc_lines+=("build --repo_env=DEVELOPER_DIR=$xcode_path") >&2
fi
printf '%s\n' "${bazelrc_xcode_lines[@]}" > .bazelrc.xcode
exec "$bazel_real" "$@"