diff --git a/.github/scripts/rusty_v8_bazel.py b/.github/scripts/rusty_v8_bazel.py index 2548252efa..ee874b7deb 100644 --- a/.github/scripts/rusty_v8_bazel.py +++ b/.github/scripts/rusty_v8_bazel.py @@ -5,6 +5,7 @@ from __future__ import annotations import argparse import gzip import hashlib +import os import re import shutil import subprocess @@ -28,6 +29,13 @@ SANDBOX_ARTIFACT_PROFILE = "ptrcomp_sandbox_release" ARTIFACT_BAZEL_CONFIGS = ["rusty-v8-upstream-libcxx"] +def bazel_remote_args() -> list[str]: + buildbuddy_api_key = os.environ.get("BUILDBUDDY_API_KEY") + if not buildbuddy_api_key: + return [] + return [f"--remote_header=x-buildbuddy-api-key={buildbuddy_api_key}"] + + def bazel_execroot() -> Path: result = subprocess.run( ["bazel", "info", "execution_root"], @@ -72,6 +80,7 @@ def bazel_output_files( compilation_mode, f"--platforms=@llvm//platforms:{platform}", *[f"--config={config}" for config in bazel_configs], + *bazel_remote_args(), "--output=files", expression, ], @@ -98,6 +107,7 @@ def bazel_build( compilation_mode, f"--platforms=@llvm//platforms:{platform}", *[f"--config={config}" for config in bazel_configs], + *bazel_remote_args(), *labels, ], cwd=ROOT, diff --git a/.github/scripts/test_rusty_v8_bazel.py b/.github/scripts/test_rusty_v8_bazel.py index 73d6b8ed9b..11e988dca3 100644 --- a/.github/scripts/test_rusty_v8_bazel.py +++ b/.github/scripts/test_rusty_v8_bazel.py @@ -4,6 +4,7 @@ from __future__ import annotations import textwrap import unittest +from os import environ from pathlib import Path from tempfile import TemporaryDirectory from unittest.mock import patch @@ -13,7 +14,7 @@ import rusty_v8_module_bazel class RustyV8BazelTest(unittest.TestCase): - def test_non_windows_consumer_selectors_track_resolved_crate_version(self) -> None: + def test_consumer_selectors_track_resolved_crate_version(self) -> None: build_bazel = ( rusty_v8_bazel.ROOT / "third_party" / "v8" / "BUILD.bazel" ).read_text() @@ -21,9 +22,11 @@ class RustyV8BazelTest(unittest.TestCase): for selector in [ "aarch64_apple_darwin_bazel", + "aarch64_pc_windows_msvc", "aarch64_unknown_linux_gnu_bazel", "aarch64_unknown_linux_musl_release_base", "x86_64_apple_darwin_bazel", + "x86_64_pc_windows_msvc", "x86_64_unknown_linux_gnu_bazel", "x86_64_unknown_linux_musl_release", ]: @@ -34,9 +37,11 @@ class RustyV8BazelTest(unittest.TestCase): for selector in [ "aarch64_apple_darwin", + "aarch64_pc_windows_msvc", "aarch64_unknown_linux_gnu", "aarch64_unknown_linux_musl", "x86_64_apple_darwin", + "x86_64_pc_windows_msvc", "x86_64_unknown_linux_gnu", "x86_64_unknown_linux_musl", ]: @@ -79,6 +84,16 @@ class RustyV8BazelTest(unittest.TestCase): ), ) + def test_bazel_remote_args_include_buildbuddy_header_when_present(self) -> None: + with patch.dict(environ, {"BUILDBUDDY_API_KEY": "token"}, clear=False): + self.assertEqual( + ["--remote_header=x-buildbuddy-api-key=token"], + rusty_v8_bazel.bazel_remote_args(), + ) + + with patch.dict(environ, {}, clear=True): + self.assertEqual([], rusty_v8_bazel.bazel_remote_args()) + def test_release_pair_labels_and_staged_names_distinguish_sandbox_artifacts(self) -> None: self.assertEqual( "//third_party/v8:rusty_v8_release_pair_x86_64_unknown_linux_musl", diff --git a/.github/workflows/rusty-v8-release.yml b/.github/workflows/rusty-v8-release.yml index 0b1776ba73..3b56a1e93f 100644 --- a/.github/workflows/rusty-v8-release.yml +++ b/.github/workflows/rusty-v8-release.yml @@ -194,6 +194,8 @@ jobs: - name: Stage release pair env: + BAZEL_CONFIG: ${{ matrix.bazel_config }} + BUILDBUDDY_API_KEY: ${{ secrets.BUILDBUDDY_API_KEY }} PLATFORM: ${{ matrix.platform }} SANDBOX: ${{ matrix.sandbox }} TARGET: ${{ matrix.target }} @@ -206,6 +208,7 @@ jobs: --target "${TARGET}" --compilation-mode opt --output-dir "dist/${TARGET}" + --bazel-config "${BAZEL_CONFIG}" ) if [[ "${SANDBOX}" == "true" ]]; then stage_args+=(--sandbox) diff --git a/.github/workflows/v8-canary.yml b/.github/workflows/v8-canary.yml index 23cd74c3c9..979e991504 100644 --- a/.github/workflows/v8-canary.yml +++ b/.github/workflows/v8-canary.yml @@ -206,6 +206,8 @@ jobs: - name: Stage release pair env: + BAZEL_CONFIG: ${{ matrix.bazel_config }} + BUILDBUDDY_API_KEY: ${{ secrets.BUILDBUDDY_API_KEY }} PLATFORM: ${{ matrix.platform }} SANDBOX: ${{ matrix.sandbox }} TARGET: ${{ matrix.target }} @@ -217,6 +219,7 @@ jobs: --platform "${PLATFORM}" --target "${TARGET}" --output-dir "dist/${TARGET}" + --bazel-config "${BAZEL_CONFIG}" ) if [[ "${SANDBOX}" == "true" ]]; then stage_args+=(--sandbox) diff --git a/MODULE.bazel b/MODULE.bazel index 4febc090a2..81f16b7b9e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -471,92 +471,20 @@ git_repository( ) http_file( - name = "rusty_v8_146_4_0_aarch64_apple_darwin_archive", - downloaded_file_path = "librusty_v8_release_aarch64-apple-darwin.a.gz", - sha256 = "bfe2c9be32a56c28546f0f965825ee68fbf606405f310cc4e17b448a568cf98a", - urls = [ - "https://github.com/denoland/rusty_v8/releases/download/v146.4.0/librusty_v8_release_aarch64-apple-darwin.a.gz", - ], -) - -http_file( - name = "rusty_v8_146_4_0_aarch64_unknown_linux_gnu_archive", - downloaded_file_path = "librusty_v8_release_aarch64-unknown-linux-gnu.a.gz", - sha256 = "dbf165b07c81bdb054bc046b43d23e69fcf7bcc1a4c1b5b4776983a71062ecd8", - urls = [ - "https://github.com/denoland/rusty_v8/releases/download/v146.4.0/librusty_v8_release_aarch64-unknown-linux-gnu.a.gz", - ], -) - -http_file( - name = "rusty_v8_146_4_0_aarch64_pc_windows_msvc_archive", + name = "rusty_v8_147_4_0_aarch64_pc_windows_msvc_archive", downloaded_file_path = "rusty_v8_release_aarch64-pc-windows-msvc.lib.gz", - sha256 = "ed13363659c6d08583ac8fdc40493445c5767d8b94955a4d5d7bb8d5a81f6bf8", + sha256 = "1fa3f94d9e09cff1f6bcce94c478e5cb072c0755f6a0357abadb9dd3b48d8127", urls = [ - "https://github.com/denoland/rusty_v8/releases/download/v146.4.0/rusty_v8_release_aarch64-pc-windows-msvc.lib.gz", + "https://github.com/denoland/rusty_v8/releases/download/v147.4.0/rusty_v8_release_aarch64-pc-windows-msvc.lib.gz", ], ) http_file( - name = "rusty_v8_146_4_0_x86_64_apple_darwin_archive", - downloaded_file_path = "librusty_v8_release_x86_64-apple-darwin.a.gz", - sha256 = "630cd240f1bbecdb071417dc18387ab81cf67c549c1c515a0b4fcf9eba647bb7", - urls = [ - "https://github.com/denoland/rusty_v8/releases/download/v146.4.0/librusty_v8_release_x86_64-apple-darwin.a.gz", - ], -) - -http_file( - name = "rusty_v8_146_4_0_x86_64_unknown_linux_gnu_archive", - downloaded_file_path = "librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", - sha256 = "e64b4d99e4ae293a2e846244a89b80178ba10382c13fb591c1fa6968f5291153", - urls = [ - "https://github.com/denoland/rusty_v8/releases/download/v146.4.0/librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", - ], -) - -http_file( - name = "rusty_v8_146_4_0_x86_64_pc_windows_msvc_archive", + name = "rusty_v8_147_4_0_x86_64_pc_windows_msvc_archive", downloaded_file_path = "rusty_v8_release_x86_64-pc-windows-msvc.lib.gz", - sha256 = "90a9a2346acd3685a355e98df85c24dbe406cb124367d16259a4b5d522621862", + sha256 = "e2827ff98b1a9d4c0343000fc5124ac30dfab3007bc0129c168c9355fc2fcd7c", urls = [ - "https://github.com/denoland/rusty_v8/releases/download/v146.4.0/rusty_v8_release_x86_64-pc-windows-msvc.lib.gz", - ], -) - -http_file( - name = "rusty_v8_146_4_0_aarch64_unknown_linux_musl_archive", - downloaded_file_path = "librusty_v8_release_aarch64-unknown-linux-musl.a.gz", - sha256 = "27a08ed26c34297bfd93e514692ccc44b85f8b15c6aa39cf34e784f84fb37e8e", - urls = [ - "https://github.com/openai/codex/releases/download/rusty-v8-v146.4.0/librusty_v8_release_aarch64-unknown-linux-musl.a.gz", - ], -) - -http_file( - name = "rusty_v8_146_4_0_aarch64_unknown_linux_musl_binding", - downloaded_file_path = "src_binding_release_aarch64-unknown-linux-musl.rs", - sha256 = "09f8900ced8297c229246c7a50b2e0ec23c54d0a554f369619cc29863f38dd1a", - urls = [ - "https://github.com/openai/codex/releases/download/rusty-v8-v146.4.0/src_binding_release_aarch64-unknown-linux-musl.rs", - ], -) - -http_file( - name = "rusty_v8_146_4_0_x86_64_unknown_linux_musl_archive", - downloaded_file_path = "librusty_v8_release_x86_64-unknown-linux-musl.a.gz", - sha256 = "20d8271ad712323d352c1383c36e3c4b755abc41ece35819c49c75ec7134d2f8", - urls = [ - "https://github.com/openai/codex/releases/download/rusty-v8-v146.4.0/librusty_v8_release_x86_64-unknown-linux-musl.a.gz", - ], -) - -http_file( - name = "rusty_v8_146_4_0_x86_64_unknown_linux_musl_binding", - downloaded_file_path = "src_binding_release_x86_64-unknown-linux-musl.rs", - sha256 = "09f8900ced8297c229246c7a50b2e0ec23c54d0a554f369619cc29863f38dd1a", - urls = [ - "https://github.com/openai/codex/releases/download/rusty-v8-v146.4.0/src_binding_release_x86_64-unknown-linux-musl.rs", + "https://github.com/denoland/rusty_v8/releases/download/v147.4.0/rusty_v8_release_x86_64-pc-windows-msvc.lib.gz", ], ) diff --git a/third_party/v8/BUILD.bazel b/third_party/v8/BUILD.bazel index 190f11f095..4d7e174ed2 100644 --- a/third_party/v8/BUILD.bazel +++ b/third_party/v8/BUILD.bazel @@ -30,43 +30,13 @@ config_setting( ) alias( - name = "v8_146_4_0_x86_64_apple_darwin", - actual = "@rusty_v8_146_4_0_x86_64_apple_darwin_archive//file", + name = "v8_147_4_0_x86_64_pc_windows_msvc", + actual = "@rusty_v8_147_4_0_x86_64_pc_windows_msvc_archive//file", ) alias( - name = "v8_146_4_0_aarch64_apple_darwin", - actual = "@rusty_v8_146_4_0_aarch64_apple_darwin_archive//file", -) - -alias( - name = "v8_146_4_0_x86_64_unknown_linux_gnu", - actual = "@rusty_v8_146_4_0_x86_64_unknown_linux_gnu_archive//file", -) - -alias( - name = "v8_146_4_0_aarch64_unknown_linux_gnu", - actual = "@rusty_v8_146_4_0_aarch64_unknown_linux_gnu_archive//file", -) - -alias( - name = "v8_146_4_0_x86_64_unknown_linux_musl", - actual = "@rusty_v8_146_4_0_x86_64_unknown_linux_musl_archive//file", -) - -alias( - name = "v8_146_4_0_aarch64_unknown_linux_musl", - actual = "@rusty_v8_146_4_0_aarch64_unknown_linux_musl_archive//file", -) - -alias( - name = "v8_146_4_0_x86_64_pc_windows_msvc", - actual = "@rusty_v8_146_4_0_x86_64_pc_windows_msvc_archive//file", -) - -alias( - name = "v8_146_4_0_aarch64_pc_windows_msvc", - actual = "@rusty_v8_146_4_0_aarch64_pc_windows_msvc_archive//file", + name = "v8_147_4_0_aarch64_pc_windows_msvc", + actual = "@rusty_v8_147_4_0_aarch64_pc_windows_msvc_archive//file", ) alias( @@ -102,26 +72,6 @@ filegroup( srcs = ["@v8_crate_146_4_0//:src_binding_release_x86_64_unknown_linux_gnu"], ) -alias( - name = "src_binding_release_x86_64_unknown_linux_musl", - actual = "@rusty_v8_146_4_0_x86_64_unknown_linux_musl_binding//file", -) - -alias( - name = "src_binding_release_aarch64_unknown_linux_musl", - actual = "@rusty_v8_146_4_0_aarch64_unknown_linux_musl_binding//file", -) - -filegroup( - name = "src_binding_release_x86_64_pc_windows_msvc", - srcs = ["@v8_crate_146_4_0//:src_binding_release_x86_64_pc_windows_msvc"], -) - -filegroup( - name = "src_binding_release_aarch64_pc_windows_msvc", - srcs = ["@v8_crate_146_4_0//:src_binding_release_aarch64_pc_windows_msvc"], -) - alias( name = "src_binding_release_x86_64_pc_windows_gnullvm", # `rusty_v8` does not publish a Windows GNU binding file. The generated @@ -141,12 +91,12 @@ alias( actual = select({ "@rules_rs//rs/experimental/platforms/config:aarch64-apple-darwin": ":v8_147_4_0_aarch64_apple_darwin_bazel", "@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-gnullvm": ":v8_146_4_0_aarch64_pc_windows_gnullvm", - "@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-msvc": ":v8_146_4_0_aarch64_pc_windows_msvc", + "@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-msvc": ":v8_147_4_0_aarch64_pc_windows_msvc", "@rules_rs//rs/experimental/platforms/config:aarch64-unknown-linux-gnu": ":v8_147_4_0_aarch64_unknown_linux_gnu_bazel", ":platform_aarch64_unknown_linux_musl": ":v8_147_4_0_aarch64_unknown_linux_musl_release_base", "@rules_rs//rs/experimental/platforms/config:x86_64-apple-darwin": ":v8_147_4_0_x86_64_apple_darwin_bazel", "@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-gnullvm": ":v8_146_4_0_x86_64_pc_windows_gnullvm", - "@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-msvc": ":v8_146_4_0_x86_64_pc_windows_msvc", + "@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-msvc": ":v8_147_4_0_x86_64_pc_windows_msvc", "@rules_rs//rs/experimental/platforms/config:x86_64-unknown-linux-gnu": ":v8_147_4_0_x86_64_unknown_linux_gnu_bazel", ":platform_x86_64_unknown_linux_musl": ":v8_147_4_0_x86_64_unknown_linux_musl_release", "//conditions:default": ":v8_147_4_0_x86_64_unknown_linux_gnu_bazel", @@ -158,12 +108,12 @@ alias( actual = select({ "@rules_rs//rs/experimental/platforms/config:aarch64-apple-darwin": ":src_binding_release_aarch64_apple_darwin_147_4_0_release", "@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-gnullvm": ":src_binding_release_aarch64_pc_windows_gnullvm", - "@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-msvc": ":src_binding_release_aarch64_pc_windows_msvc", + "@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-msvc": ":src_binding_release_aarch64_pc_windows_msvc_147_4_0_release", "@rules_rs//rs/experimental/platforms/config:aarch64-unknown-linux-gnu": ":src_binding_release_aarch64_unknown_linux_gnu_147_4_0_release", ":platform_aarch64_unknown_linux_musl": ":src_binding_release_aarch64_unknown_linux_musl_147_4_0_release", "@rules_rs//rs/experimental/platforms/config:x86_64-apple-darwin": ":src_binding_release_x86_64_apple_darwin_147_4_0_release", "@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-gnullvm": ":src_binding_release_x86_64_pc_windows_gnullvm", - "@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-msvc": ":src_binding_release_x86_64_pc_windows_msvc", + "@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-msvc": ":src_binding_release_x86_64_pc_windows_msvc_147_4_0_release", "@rules_rs//rs/experimental/platforms/config:x86_64-unknown-linux-gnu": ":src_binding_release_x86_64_unknown_linux_gnu_147_4_0_release", ":platform_x86_64_unknown_linux_musl": ":src_binding_release_x86_64_unknown_linux_musl_147_4_0_release", "//conditions:default": ":src_binding_release_x86_64_unknown_linux_gnu_147_4_0_release", @@ -543,16 +493,16 @@ filegroup( filegroup( name = "rusty_v8_release_pair_x86_64_pc_windows_msvc", srcs = [ - ":v8_146_4_0_x86_64_pc_windows_msvc", - ":src_binding_release_x86_64_pc_windows_msvc", + ":v8_147_4_0_x86_64_pc_windows_msvc", + ":src_binding_release_x86_64_pc_windows_msvc_147_4_0_release", ], ) filegroup( name = "rusty_v8_release_pair_aarch64_pc_windows_msvc", srcs = [ - ":v8_146_4_0_aarch64_pc_windows_msvc", - ":src_binding_release_aarch64_pc_windows_msvc", + ":v8_147_4_0_aarch64_pc_windows_msvc", + ":src_binding_release_aarch64_pc_windows_msvc_147_4_0_release", ], ) diff --git a/third_party/v8/README.md b/third_party/v8/README.md index df54fb7a7f..ff98674140 100644 --- a/third_party/v8/README.md +++ b/third_party/v8/README.md @@ -32,9 +32,8 @@ python3 .github/scripts/rusty_v8_bazel.py check-module-bazel ``` The commands default to the single `rusty_v8_*` `http_file` version still -present in `MODULE.bazel` and validate every matching entry. During the source -build rollout, that asset version can lag the resolved Rust crate version. -CI runs the check command to block checksum drift. +present in `MODULE.bazel` and validate every matching entry. CI runs the check +command to block checksum drift. The consumer-facing selectors are: diff --git a/third_party/v8/rusty_v8_146_4_0.sha256 b/third_party/v8/rusty_v8_146_4_0.sha256 deleted file mode 100644 index 09b3e1b0b2..0000000000 --- a/third_party/v8/rusty_v8_146_4_0.sha256 +++ /dev/null @@ -1,10 +0,0 @@ -bfe2c9be32a56c28546f0f965825ee68fbf606405f310cc4e17b448a568cf98a librusty_v8_release_aarch64-apple-darwin.a.gz -dbf165b07c81bdb054bc046b43d23e69fcf7bcc1a4c1b5b4776983a71062ecd8 librusty_v8_release_aarch64-unknown-linux-gnu.a.gz -ed13363659c6d08583ac8fdc40493445c5767d8b94955a4d5d7bb8d5a81f6bf8 rusty_v8_release_aarch64-pc-windows-msvc.lib.gz -630cd240f1bbecdb071417dc18387ab81cf67c549c1c515a0b4fcf9eba647bb7 librusty_v8_release_x86_64-apple-darwin.a.gz -e64b4d99e4ae293a2e846244a89b80178ba10382c13fb591c1fa6968f5291153 librusty_v8_release_x86_64-unknown-linux-gnu.a.gz -90a9a2346acd3685a355e98df85c24dbe406cb124367d16259a4b5d522621862 rusty_v8_release_x86_64-pc-windows-msvc.lib.gz -27a08ed26c34297bfd93e514692ccc44b85f8b15c6aa39cf34e784f84fb37e8e librusty_v8_release_aarch64-unknown-linux-musl.a.gz -09f8900ced8297c229246c7a50b2e0ec23c54d0a554f369619cc29863f38dd1a src_binding_release_aarch64-unknown-linux-musl.rs -20d8271ad712323d352c1383c36e3c4b755abc41ece35819c49c75ec7134d2f8 librusty_v8_release_x86_64-unknown-linux-musl.a.gz -09f8900ced8297c229246c7a50b2e0ec23c54d0a554f369619cc29863f38dd1a src_binding_release_x86_64-unknown-linux-musl.rs diff --git a/third_party/v8/rusty_v8_147_4_0.sha256 b/third_party/v8/rusty_v8_147_4_0.sha256 new file mode 100644 index 0000000000..a287e5fd5b --- /dev/null +++ b/third_party/v8/rusty_v8_147_4_0.sha256 @@ -0,0 +1,2 @@ +1fa3f94d9e09cff1f6bcce94c478e5cb072c0755f6a0357abadb9dd3b48d8127 rusty_v8_release_aarch64-pc-windows-msvc.lib.gz +e2827ff98b1a9d4c0343000fc5124ac30dfab3007bc0129c168c9355fc2fcd7c rusty_v8_release_x86_64-pc-windows-msvc.lib.gz