Download patches/v8_bazel_rules.patch from SaylorTwift/codex: direct link, hf CLI and curl.
- Browser
- Download file 17.5 kB
-
https://huggingface.co/SaylorTwift/codex/resolve/main/patches/v8_bazel_rules.patch
- Command line
-
hf download hf://SaylorTwift/codex/patches/v8_bazel_rules.patch
-
curl -L -o v8_bazel_rules.patch https://huggingface.co/SaylorTwift/codex/resolve/main/patches/v8_bazel_rules.patch
17.5 kB
| # What: adapt upstream V8 Bazel rules to this workspace's hermetic toolchains | |
| # and externally provided dependencies. | |
| # Scope: Bazel BUILD/defs/BUILD.icu integration only, including dependency | |
| # wiring, generated sources, and visibility; no standalone V8 source patching. | |
| diff --git a/orig/v8-15.0.245.2/bazel/defs.bzl b/mod/v8-15.0.245.2/bazel/defs.bzl | |
| index bbe1495..6673518 100644 | |
| --- a/orig/v8-15.0.245.2/bazel/defs.bzl | |
| +++ b/mod/v8-15.0.245.2/bazel/defs.bzl | |
| _create_option_int = rule( | |
| ) | |
| def v8_flag(name, default = False): | |
| - _create_option_flag(name = name, build_setting_default = default) | |
| - native.config_setting(name = "is_" + name, flag_values = {name: "True"}) | |
| - native.config_setting(name = "is_not_" + name, flag_values = {name: "False"}) | |
| + _create_option_flag( | |
| + name = name, | |
| + build_setting_default = default, | |
| + visibility = ["//visibility:public"], | |
| + ) | |
| + native.config_setting( | |
| + name = "is_" + name, | |
| + flag_values = {name: "True"}, | |
| + visibility = ["//visibility:public"], | |
| + ) | |
| + native.config_setting( | |
| + name = "is_not_" + name, | |
| + flag_values = {name: "False"}, | |
| + visibility = ["//visibility:public"], | |
| + ) | |
| def v8_string(name, default = ""): | |
| _create_option_string(name = name, build_setting_default = default) | |
| v8_config = rule( | |
| def _default_args(): | |
| return struct( | |
| - deps = [":define_flags", "@libcxx//:libc++"], | |
| + deps = [":define_flags"] + select({ | |
| + "@v8//:is_v8_use_rusty_v8_custom_libcxx": [ | |
| + "@@//third_party/v8:rusty_v8_custom_libcxx_headers", | |
| + "@@//third_party/v8:rusty_v8_custom_libcxx_runtime", | |
| + ], | |
| + "//conditions:default": [], | |
| + }), | |
| defines = select({ | |
| "@v8//bazel/config:is_windows": [ | |
| "UNICODE", | |
| def _default_args(): | |
| ], | |
| "//conditions:default": [], | |
| }) + select({ | |
| - "@v8//bazel/config:is_clang": [ | |
| - "-Wno-invalid-offsetof", | |
| - "-Wno-deprecated-this-capture", | |
| - "-Wno-deprecated-declarations", | |
| - "-std=c++20", | |
| + "@v8//:is_v8_use_rusty_v8_custom_libcxx": [ | |
| + "-nostdinc++", | |
| + "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS", | |
| + "-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE", | |
| + "-D_LIBCPP_INSTRUMENTED_WITH_ASAN=0", | |
| + "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS", | |
| ], | |
| + "//conditions:default": [], | |
| + }) + select({ | |
| "@v8//bazel/config:is_gcc": [ | |
| "-Wno-extra", | |
| "-Wno-array-bounds", | |
| def _default_args(): | |
| "-std=gnu++2a", | |
| ], | |
| "@v8//bazel/config:is_windows": [ | |
| - "/std:c++20", | |
| + "-Wno-invalid-offsetof", | |
| + "-Wno-deprecated-this-capture", | |
| + "-Wno-deprecated-declarations", | |
| + "-std=c++20", | |
| + ], | |
| + "//conditions:default": [ | |
| + "-Wno-invalid-offsetof", | |
| + "-Wno-deprecated-this-capture", | |
| + "-Wno-deprecated-declarations", | |
| + "-std=c++20", | |
| ], | |
| - "//conditions:default": [], | |
| }) + select({ | |
| "@v8//bazel/config:is_gcc_fastbuild": [ | |
| # Non-debug builds without optimizations fail because | |
| def _default_args(): | |
| includes = ["include"], | |
| linkopts = select({ | |
| "@v8//bazel/config:is_windows": [ | |
| - "Winmm.lib", | |
| - "DbgHelp.lib", | |
| - "Advapi32.lib", | |
| + "-lwinmm", | |
| + "-ldbghelp", | |
| + "-ladvapi32", | |
| ], | |
| "@v8//bazel/config:is_macos": ["-pthread"], | |
| - "//conditions:default": ["-Wl,--no-as-needed -ldl -latomic -pthread"], | |
| + "//conditions:default": ["-Wl,--no-as-needed -ldl -pthread"], | |
| }) + select({ | |
| ":should_add_rdynamic": ["-rdynamic"], | |
| "//conditions:default": [], | |
| def _mksnapshot(ctx): | |
| prefix = ctx.attr.prefix | |
| suffix = ctx.attr.suffix | |
| + # Windows cross-builds use Linux for the exec configuration, but the | |
| + # snapshot generator must match the target ABI and run on the Windows | |
| + # runner. Action strategies only choose where an action runs; they cannot | |
| + # change this executable from the exec to the target configuration. | |
| + tool = ctx.executable.target_tool if ctx.attr.target_os == "win" else ctx.executable.tool | |
| outs = [ | |
| ctx.actions.declare_file(prefix + "/snapshot" + suffix + ".cc"), | |
| ctx.actions.declare_file(prefix + "/embedded" + suffix + ".S"), | |
| outs[1].path, | |
| ] + ctx.attr.args, | |
| - executable = ctx.executable.tool, | |
| + executable = tool, | |
| progress_message = "Running mksnapshot", | |
| ) | |
| return [DefaultInfo(files = depset(outs))] | |
| executable = True, | |
| cfg = "exec", | |
| ), | |
| + "target_tool": attr.label( | |
| + mandatory = True, | |
| + allow_files = True, | |
| + executable = True, | |
| + cfg = "target", | |
| + ), | |
| "target_os": attr.string(mandatory = True), | |
| "prefix": attr.string(mandatory = True), | |
| "suffix": attr.string(mandatory = True), | |
| args = args, | |
| prefix = "noicu", | |
| tool = ":noicu/mksnapshot" + suffix, | |
| + target_tool = ":noicu/mksnapshot" + suffix, | |
| suffix = suffix, | |
| target_os = select({ | |
| "@v8//bazel/config:is_macos": "mac", | |
| args = args, | |
| prefix = "icu", | |
| tool = ":icu/mksnapshot" + suffix, | |
| + target_tool = ":icu/mksnapshot" + suffix, | |
| suffix = suffix, | |
| target_os = select({ | |
| "@v8//bazel/config:is_macos": "mac", | |
| diff --git a/orig/v8-15.0.245.2/BUILD.bazel b/mod/v8-15.0.245.2/BUILD.bazel | |
| index b432f86..28c567b 100644 | |
| --- a/orig/v8-15.0.245.2/BUILD.bazel | |
| +++ b/mod/v8-15.0.245.2/BUILD.bazel | |
| v8_flag(name = "v8_enable_trace_maps") | |
| v8_flag(name = "v8_enable_v8_checks") | |
| +v8_flag(name = "v8_enable_sandbox") | |
| + | |
| +v8_flag(name = "v8_use_rusty_v8_custom_libcxx") | |
| + | |
| v8_flag(name = "v8_enable_verify_csa") | |
| v8_flag(name = "v8_enable_verify_heap") | |
| v8_int( | |
| # If no explicit value for v8_enable_pointer_compression, we set it to 'none'. | |
| v8_string( | |
| name = "v8_enable_pointer_compression", | |
| - default = "none", | |
| + default = "False", | |
| ) | |
| # Default setting for v8_enable_pointer_compression. | |
| v8_config( | |
| "v8_enable_slow_dchecks": "ENABLE_SLOW_DCHECKS", | |
| "v8_enable_runtime_call_stats": "V8_RUNTIME_CALL_STATS", | |
| "v8_enable_snapshot_native_code_counters": "V8_SNAPSHOT_NATIVE_CODE_COUNTERS", | |
| + "v8_enable_sandbox": "V8_ENABLE_SANDBOX", | |
| "v8_enable_trace_maps": "V8_TRACE_MAPS", | |
| "v8_enable_turbofan": "V8_ENABLE_TURBOFAN", | |
| "v8_enable_v8_checks": "V8_ENABLE_CHECKS", | |
| filegroup( | |
| }), | |
| ) | |
| -v8_library( | |
| - name = "lib_dragonbox", | |
| - srcs = ["third_party/dragonbox/src/include/dragonbox/dragonbox.h"], | |
| - hdrs = [ | |
| - "third_party/dragonbox/src/include/dragonbox/dragonbox.h", | |
| - ], | |
| - includes = [ | |
| - "third_party/dragonbox/src/include", | |
| - ], | |
| +alias( | |
| + name = "lib_dragonbox", | |
| + actual = "@dragonbox//:dragonbox", | |
| ) | |
| -v8_library( | |
| - name = "lib_fp16", | |
| - srcs = ["third_party/fp16/src/include/fp16.h"], | |
| - hdrs = [ | |
| - "third_party/fp16/src/include/fp16/fp16.h", | |
| - "third_party/fp16/src/include/fp16/bitcasts.h", | |
| - "third_party/fp16/src/include/fp16/macros.h", | |
| - ], | |
| - includes = [ | |
| - "third_party/fp16/src/include", | |
| - ], | |
| +alias( | |
| + name = "lib_fp16", | |
| + actual = "@fp16//:fp16", | |
| ) | |
| filegroup( | |
| genrule( | |
| srcs = [ | |
| "include/js_protocol.pdl", | |
| "src/inspector/inspector_protocol_config.json", | |
| + "third_party/inspector_protocol/code_generator.py", | |
| + "third_party/inspector_protocol/pdl.py", | |
| + "third_party/inspector_protocol/lib/Forward_h.template", | |
| + "third_party/inspector_protocol/lib/Object_cpp.template", | |
| + "third_party/inspector_protocol/lib/Object_h.template", | |
| + "third_party/inspector_protocol/lib/Protocol_cpp.template", | |
| + "third_party/inspector_protocol/lib/ValueConversions_cpp.template", | |
| + "third_party/inspector_protocol/lib/ValueConversions_h.template", | |
| + "third_party/inspector_protocol/lib/Values_cpp.template", | |
| + "third_party/inspector_protocol/lib/Values_h.template", | |
| + "third_party/inspector_protocol/templates/Exported_h.template", | |
| + "third_party/inspector_protocol/templates/Imported_h.template", | |
| + "third_party/inspector_protocol/templates/TypeBuilder_cpp.template", | |
| + "third_party/inspector_protocol/templates/TypeBuilder_h.template", | |
| ], | |
| outs = [ | |
| "include/inspector/Debugger.h", | |
| genrule( | |
| "src/inspector/protocol/Schema.cpp", | |
| "src/inspector/protocol/Schema.h", | |
| ], | |
| - cmd = "$(location :code_generator) --jinja_dir . \ | |
| - --inspector_protocol_dir third_party/inspector_protocol \ | |
| + cmd = "INSPECTOR_PROTOCOL_DIR=$$(dirname $(execpath third_party/inspector_protocol/code_generator.py)); \ | |
| + PYTHONPATH=$$INSPECTOR_PROTOCOL_DIR:external/rules_python++pip+v8_python_deps_311_jinja2/site-packages:external/rules_python++pip+v8_python_deps_311_markupsafe/site-packages:$${PYTHONPATH-} \ | |
| + $(execpath @rules_python//python/bin:python) $(execpath third_party/inspector_protocol/code_generator.py) --jinja_dir . \ | |
| + --inspector_protocol_dir $$INSPECTOR_PROTOCOL_DIR \ | |
| --config $(location :src/inspector/inspector_protocol_config.json) \ | |
| --config_value protocol.path=$(location :include/js_protocol.pdl) \ | |
| + --config_value crdtp.dir=third_party/inspector_protocol/crdtp \ | |
| --output_base $(@D)/src/inspector", | |
| - local = 1, | |
| message = "Generating inspector files", | |
| tools = [ | |
| - ":code_generator", | |
| + "@rules_python//python/bin:python", | |
| + requirement("jinja2"), | |
| + requirement("markupsafe"), | |
| ], | |
| ) | |
| filegroup( | |
| ], | |
| ) | |
| +cc_library( | |
| + name = "rusty_v8_internal_headers", | |
| + hdrs = [ | |
| + "src/libplatform/default-platform.h", | |
| + ], | |
| + strip_include_prefix = "", | |
| + visibility = ["//visibility:public"], | |
| +) | |
| + | |
| +cc_library( | |
| + name = "rusty_v8_crdtp_headers", | |
| + hdrs = [ | |
| + "third_party/inspector_protocol/crdtp/cbor.h", | |
| + "third_party/inspector_protocol/crdtp/dispatch.h", | |
| + "third_party/inspector_protocol/crdtp/error_support.h", | |
| + "third_party/inspector_protocol/crdtp/export.h", | |
| + "third_party/inspector_protocol/crdtp/find_by_first.h", | |
| + "third_party/inspector_protocol/crdtp/frontend_channel.h", | |
| + "third_party/inspector_protocol/crdtp/json.h", | |
| + "third_party/inspector_protocol/crdtp/parser_handler.h", | |
| + "third_party/inspector_protocol/crdtp/protocol_core.h", | |
| + "third_party/inspector_protocol/crdtp/serializable.h", | |
| + "third_party/inspector_protocol/crdtp/span.h", | |
| + "third_party/inspector_protocol/crdtp/status.h", | |
| + ], | |
| + strip_include_prefix = "", | |
| + visibility = ["//visibility:public"], | |
| +) | |
| + | |
| filegroup( | |
| name = "d8_files", | |
| srcs = [ | |
| cc_library( | |
| strip_include_prefix = "noicu", | |
| ) | |
| - | |
| + | |
| -cc_library( | |
| - name = "llvm_libc_headers", | |
| - hdrs = glob(["third_party/llvm-libc/src/shared/**/*.h"]), | |
| - includes = ["third_party/llvm-libc/src"], | |
| - defines = ["LIBC_NAMESPACE=__llvm_libc_cr"], | |
| -) | |
| +alias( | |
| + name = "llvm_libc_headers", | |
| + actual = "@@//third_party/v8:rusty_v8_llvm_libc_headers", | |
| +) | |
| - | |
| + | |
| v8_library( | |
| name = "v8_libbase", | |
| cc_library( | |
| ], | |
| ) | |
| -cc_library( | |
| - name = "simdutf", | |
| - srcs = ["third_party/simdutf/simdutf.cpp"], | |
| - hdrs = ["third_party/simdutf/simdutf.h"], | |
| - copts = select({ | |
| - "@v8//bazel/config:is_clang": ["-std=c++20"], | |
| - "@v8//bazel/config:is_gcc": ["-std=gnu++2a"], | |
| - "@v8//bazel/config:is_windows": ["/std:c++20"], | |
| - "//conditions:default": [], | |
| - }), | |
| +alias( | |
| + name = "simdutf", | |
| + actual = "@simdutf//:simdutf", | |
| ) | |
| v8_library( | |
| v8_library( | |
| copts = ["-Wno-implicit-fallthrough"], | |
| icu_deps = [ | |
| ":icu/generated_torque_definitions_headers", | |
| - "//external:icu", | |
| + "@icu//:icu", | |
| ], | |
| icu_srcs = [ | |
| ":generated_regexp_special_case", | |
| v8_library( | |
| ], | |
| deps = [ | |
| ":lib_dragonbox", | |
| - "//third_party/fast_float/src:fast_float", | |
| + "@fast_float//:fast_float", | |
| ":lib_fp16", | |
| ":simdutf", | |
| ":v8_libbase", | |
| alias( | |
| alias( | |
| name = "core_lib_icu", | |
| actual = "icu/v8", | |
| + visibility = ["//visibility:public"], | |
| ) | |
| v8_library( | |
| v8_binary( | |
| ], | |
| deps = [ | |
| ":v8_libbase", | |
| - "//external:icu", | |
| + "@icu//:icu", | |
| ], | |
| ) | |
| v8_binary( | |
| ":icu/generated_torque_initializers", | |
| ":icu/v8_initializers_files", | |
| ], | |
| + # Match GN's mksnapshot `disable_icf` config. If the linker folds distinct | |
| + # external-reference helpers together while producing the snapshot, the | |
| + # final embedder binary may not fold the same pair and startup | |
| + # deserialization will reject the snapshot. | |
| + # GN also increases the x64 Windows stack reserve because constructing the | |
| + # snapshot overflows the linker's 1 MiB default. | |
| linkopts = select({ | |
| "@v8//bazel/config:is_android": ["-llog"], | |
| - "//conditions:default": [], | |
| + "@v8//bazel/config:is_macos": ["-Wl,-no_deduplicate"], | |
| + "@v8//bazel/config:is_windows": [ | |
| + "-Wl,/OPT:NOICF", | |
| + "-Wl,/STACK:2097152", | |
| + ], | |
| + "//conditions:default": ["-Wl,--icf=none"], | |
| }), | |
| noicu_deps = [":v8_libshared_noicu"], | |
| noicu_srcs = [ | |
| diff --git a/orig/v8-15.0.245.2/bazel/BUILD.icu b/mod/v8-15.0.245.2/bazel/BUILD.icu | |
| index 5fda2f4..8c3c372 100644 | |
| --- a/orig/v8-15.0.245.2/bazel/BUILD.icu | |
| +++ b/mod/v8-15.0.245.2/bazel/BUILD.icu | |
| +load("@rules_cc//cc:defs.bzl", "cc_library") | |
| + | |
| +CUSTOM_LIBCXX_COPTS = select({ | |
| + "@v8//:is_v8_use_rusty_v8_custom_libcxx": [ | |
| + "-nostdinc++", | |
| + "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS", | |
| + "-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE", | |
| + "-D_LIBCPP_INSTRUMENTED_WITH_ASAN=0", | |
| + "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS", | |
| + ], | |
| + "//conditions:default": [], | |
| +}) | |
| + | |
| +CUSTOM_LIBCXX_DEPS = select({ | |
| + "@v8//:is_v8_use_rusty_v8_custom_libcxx": [ | |
| + "@@//third_party/v8:rusty_v8_custom_libcxx_headers", | |
| + "@@//third_party/v8:rusty_v8_custom_libcxx_runtime", | |
| + ], | |
| + "//conditions:default": [], | |
| +}) | |
| + | |
| # Copyright 2021 the V8 project authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| cc_library( | |
| ]), | |
| copts = select({ | |
| "@platforms//os:windows": [ | |
| - "/wd4005", # Macro redefinition. | |
| - "/wd4068", # Unknown pragmas. | |
| - "/wd4267", # Conversion from size_t on 64-bits. | |
| - "/utf-8", # ICU source files are in UTF-8. | |
| + "-Wno-deprecated-declarations", | |
| ], | |
| "//conditions:default": [ | |
| "-Wno-deprecated-declarations", | |
| ], | |
| - }), | |
| + }) + CUSTOM_LIBCXX_COPTS, | |
| data = [":icudata"], | |
| defines = [ | |
| "HAVE_DLOPEN=0", | |
| cc_library( | |
| "U_ICUDATAENTRY_IN_COMMON", | |
| ], | |
| tags = ["requires-rtti"], | |
| + deps = CUSTOM_LIBCXX_DEPS, | |
| alwayslink = 1, | |
| ) | |
| cc_library( | |
| ]), | |
| copts = select({ | |
| "@platforms//os:windows": [ | |
| - "/wd4005", # Macro redefinition. | |
| - "/wd4068", # Unknown pragmas. | |
| - "/wd4267", # Conversion from size_t on 64-bits. | |
| - "/utf-8", # ICU source files are in UTF-8. | |
| + "-Wno-deprecated-declarations", | |
| ], | |
| "//conditions:default": [ | |
| "-Wno-deprecated-declarations", | |
| ], | |
| - }), | |
| + }) + CUSTOM_LIBCXX_COPTS, | |
| local_defines = [ | |
| "U_I18N_IMPLEMENTATION", | |
| ], | |
| - deps = [":icuuc"], | |
| + deps = [":icuuc"] + CUSTOM_LIBCXX_DEPS, | |
| alwayslink = 1, | |
| ) | |
| cc_library( | |
| ]), | |
| copts = select({ | |
| "@platforms//os:windows": [ | |
| - "/wd4005", # Macro redefinition. | |
| - "/wd4068", # Unknown pragmas. | |
| - "/wd4267", # Conversion from size_t on 64-bits. | |
| - "/utf-8", # ICU source files are in UTF-8. | |
| + "-Wno-deprecated-declarations", | |
| ], | |
| "//conditions:default": [], | |
| - }), | |
| + }) + CUSTOM_LIBCXX_COPTS, | |
| include_prefix = "third_party/icu", | |
| local_defines = [ | |
| "U_COMMON_IMPLEMENTATION", | |
| cc_library( | |
| deps = [ | |
| ":icui18n", | |
| ":icuuc", | |
| - ], | |
| + ] + CUSTOM_LIBCXX_DEPS, | |
| alwayslink = 1, | |
| ) | |