mirror of
https://github.com/openai/codex.git
synced 2026-10-23 18:08:45 +00:00
## Why V8's Abseil and protobuf's shared Abseil can be built for different C++ runtimes. Give V8's copy a distinct inline namespace so both can link into one binary without interposing incompatible functions. ## What changed - Move pinned V8 dependency imports and BUILD overlays into `third_party/v8`, and inject those repositories into V8 through a module-extension bridge with no fallback downloads. - Build V8's Abseil with a V8-specific inline namespace while preserving protobuf's shared Abseil namespace. - Apply V8's C++ runtime settings in the Abseil, Highway, and simdutf overlays, and remove the shared `rules_cc` patch. - Document source dependency ownership and the version, checksum, and overlay review procedure for V8 upgrades. GitOrigin-RevId: 2b8e3deed285559f8dd3324647cb4b81089f2f56
232 lines
8.2 KiB
Diff
232 lines
8.2 KiB
Diff
# What: remove Chromium's checkout-only toolchain bootstrapping and expose one
|
|
# module-extension bridge for dependency imports owned by Codex.
|
|
# Scope: V8 MODULE and the small ingress extension only. Versions, BUILD files,
|
|
# and dependency build policy live in //third_party/v8.
|
|
|
|
diff --git a/orig/v8-15.2.124.1/MODULE.bazel b/mod/v8-15.2.124.1/MODULE.bazel
|
|
--- a/orig/v8-15.2.124.1/MODULE.bazel
|
|
+++ b/mod/v8-15.2.124.1/MODULE.bazel
|
|
@@ -7,13 +7,13 @@
|
|
bazel_dep(name = "rules_cc", version = "0.2.17")
|
|
bazel_dep(name = "rules_python", version = "1.7.0")
|
|
bazel_dep(name = "platforms", version = "1.0.0")
|
|
-bazel_dep(name = "abseil-cpp", version = "20250814.1")
|
|
-bazel_dep(name = "highway", version = "1.2.0")
|
|
|
|
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
|
|
pip.parse(
|
|
hub_name = "v8_python_deps",
|
|
python_version = "3.11",
|
|
+ # Use the pip resolver to preserve V8's hashes and repository names.
|
|
+ simpleapi_skip = ["jinja2", "markupsafe"],
|
|
requirements_lock = "//:bazel/requirements.txt",
|
|
extra_pip_args = [
|
|
"--require-hashes",
|
|
@@ -22,179 +22,15 @@
|
|
)
|
|
use_repo(pip, "v8_python_deps")
|
|
|
|
-# Define the local LLVM toolchain repository
|
|
-llvm_toolchain_repository = use_repo_rule("//bazel/toolchain:llvm_repository.bzl", "llvm_toolchain_repository")
|
|
-
|
|
-llvm_toolchain_repository(
|
|
- name = "llvm_toolchain",
|
|
- path = "third_party/llvm-build/Release+Asserts",
|
|
- config_file_content = """
|
|
-load("@rules_cc//cc:defs.bzl", "CcToolchainConfigInfo", "cc_common")
|
|
-load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", "feature", "flag_group", "flag_set", "tool_path")
|
|
-
|
|
-def _impl(ctx):
|
|
- tool_paths = [
|
|
- tool_path(name = "gcc", path = "bin/clang"),
|
|
- tool_path(name = "ld", path = "bin/lld"),
|
|
- tool_path(name = "ar", path = "bin/llvm-ar"),
|
|
- tool_path(name = "cpp", path = "bin/clang++"),
|
|
- tool_path(name = "gcov", path = "/bin/false"),
|
|
- tool_path(name = "nm", path = "bin/llvm-nm"),
|
|
- tool_path(name = "objdump", path = "bin/llvm-objdump"),
|
|
- tool_path(name = "strip", path = "bin/llvm-strip"),
|
|
- ]
|
|
-
|
|
- features = [
|
|
- feature(
|
|
- name = "default_compile_flags",
|
|
- enabled = True,
|
|
- flag_sets = [
|
|
- flag_set(
|
|
- actions = [
|
|
- "c-compile",
|
|
- "c++-compile",
|
|
- "c++-header-parsing",
|
|
- "c++-module-compile",
|
|
- "c++-module-codegen",
|
|
- "linkstamp-compile",
|
|
- "assemble",
|
|
- "preprocess-assemble",
|
|
- ],
|
|
- flag_groups = [
|
|
- flag_group(
|
|
- flags = [
|
|
- "--sysroot={WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot",
|
|
- "-nostdinc++",
|
|
- "-isystem",
|
|
- "{WORKSPACE_ROOT}/buildtools/third_party/libc++",
|
|
- "-isystem",
|
|
- "{WORKSPACE_ROOT}/third_party/libc++/src/include",
|
|
- "-isystem",
|
|
- "{WORKSPACE_ROOT}/third_party/libc++abi/src/include",
|
|
- "-isystem",
|
|
- "{WORKSPACE_ROOT}/third_party/libc++/src/src",
|
|
- "-isystem",
|
|
- "{WORKSPACE_ROOT}/third_party/llvm-libc/src",
|
|
- "-D_LIBCPP_HARDENING_MODE_DEFAULT=_LIBCPP_HARDENING_MODE_NONE",
|
|
- "-DLIBC_NAMESPACE=__llvm_libc_cr",
|
|
- ],
|
|
- ),
|
|
- ],
|
|
- ),
|
|
- ],
|
|
- ),
|
|
- feature(
|
|
- name = "default_linker_flags",
|
|
- enabled = True,
|
|
- flag_sets = [
|
|
- flag_set(
|
|
- actions = [
|
|
- "c++-link-executable",
|
|
- "c++-link-dynamic-library",
|
|
- "c++-link-nodeps-dynamic-library",
|
|
- ],
|
|
- flag_groups = [
|
|
- flag_group(
|
|
- flags = [
|
|
- "--sysroot={WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot",
|
|
- "-fuse-ld=lld",
|
|
- "-lm",
|
|
- "-lpthread",
|
|
- ],
|
|
- ),
|
|
- ],
|
|
- ),
|
|
- ],
|
|
- ),
|
|
- ]
|
|
-
|
|
- return cc_common.create_cc_toolchain_config_info(
|
|
- ctx = ctx,
|
|
- toolchain_identifier = "local_clang",
|
|
- features = features,
|
|
- cxx_builtin_include_directories = [
|
|
- "{WORKSPACE_ROOT}/buildtools/third_party/libc++",
|
|
- "{WORKSPACE_ROOT}/third_party/libc++/src/include",
|
|
- "{WORKSPACE_ROOT}/third_party/libc++abi/src/include",
|
|
- "{WORKSPACE_ROOT}/third_party/libc++/src/src",
|
|
- "{WORKSPACE_ROOT}/third_party/llvm-libc/src",
|
|
- "{WORKSPACE_ROOT}/third_party/llvm-build/Release+Asserts/lib/clang/22/include",
|
|
- "{WORKSPACE_ROOT}/third_party/llvm-build/Release+Asserts/lib/clang/23/include",
|
|
- "{WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot/usr/include",
|
|
- "{WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot/usr/local/include",
|
|
- ],
|
|
- host_system_name = "local",
|
|
- target_system_name = "local",
|
|
- target_cpu = "k8",
|
|
- target_libc = "unknown",
|
|
- compiler = "clang",
|
|
- abi_version = "unknown",
|
|
- abi_libc_version = "unknown",
|
|
- tool_paths = tool_paths,
|
|
- )
|
|
-
|
|
-cc_toolchain_config = rule(
|
|
- implementation = _impl,
|
|
- attrs = {},
|
|
- provides = [CcToolchainConfigInfo],
|
|
+# Codex supplies the dependency repositories used by its V8 builds.
|
|
+codex_deps = use_extension("//:bazel/codex_deps.bzl", "codex_deps")
|
|
+use_repo(
|
|
+ codex_deps,
|
|
+ "v8_abseil",
|
|
+ "dragonbox",
|
|
+ "fast_float",
|
|
+ "fp16",
|
|
+ "highway",
|
|
+ "icu",
|
|
+ "simdutf",
|
|
)
|
|
-""",
|
|
- build_file_content = """
|
|
-load("@rules_cc//cc:defs.bzl", "cc_toolchain")
|
|
-load(":cc_toolchain_config.bzl", "cc_toolchain_config")
|
|
-
|
|
-package(default_visibility = ["//visibility:public"])
|
|
-
|
|
-filegroup(
|
|
- name = "all_files",
|
|
- srcs = glob(["**/*"]),
|
|
-)
|
|
-
|
|
-filegroup(name = "empty")
|
|
-
|
|
-cc_toolchain_config(name = "k8_toolchain_config")
|
|
-
|
|
-cc_toolchain(
|
|
- name = "k8_toolchain",
|
|
- all_files = ":all_files",
|
|
- ar_files = ":all_files",
|
|
- compiler_files = ":all_files",
|
|
- dwp_files = ":empty",
|
|
- linker_files = ":all_files",
|
|
- objcopy_files = ":all_files",
|
|
- strip_files = ":all_files",
|
|
- supports_param_files = 0,
|
|
- toolchain_config = ":k8_toolchain_config",
|
|
- toolchain_identifier = "local_clang",
|
|
-)
|
|
-
|
|
-toolchain(
|
|
- name = "cc_toolchain_k8",
|
|
- exec_compatible_with = [
|
|
- "@platforms//cpu:x86_64",
|
|
- "@platforms//os:linux",
|
|
- ],
|
|
- target_compatible_with = [
|
|
- "@platforms//cpu:x86_64",
|
|
- "@platforms//os:linux",
|
|
- ],
|
|
- toolchain = ":k8_toolchain",
|
|
- toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
|
-)
|
|
-""",
|
|
-)
|
|
-
|
|
-register_toolchains("@llvm_toolchain//:cc_toolchain_k8")
|
|
-
|
|
-# Define local repository for libc++ from third_party sources
|
|
-libcxx_repository = use_repo_rule("//bazel/toolchain:libcxx_repository.bzl", "libcxx_repository")
|
|
-
|
|
-libcxx_repository(
|
|
- name = "libcxx",
|
|
-)
|
|
-
|
|
-single_version_override(
|
|
- module_name = "highway",
|
|
- patches = ["//bazel/patches:highway_rules_cc.patch"],
|
|
- patch_strip = 1,
|
|
-)
|
|
|
|
diff --git a/orig/v8-15.2.124.1/bazel/codex_deps.bzl b/mod/v8-15.2.124.1/bazel/codex_deps.bzl
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/mod/v8-15.2.124.1/bazel/codex_deps.bzl
|
|
@@ -0,0 +1,10 @@
|
|
+"""Dependency ingress for V8 when built by Codex.
|
|
+
|
|
+The root module injects the repositories; this extension declares no defaults
|
|
+that could silently select a different dependency from the one Codex builds.
|
|
+"""
|
|
+
|
|
+def _codex_deps_impl(module_ctx):
|
|
+ return module_ctx.extension_metadata(reproducible = True)
|
|
+
|
|
+codex_deps = module_extension(implementation = _codex_deps_impl)
|