Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ bazel_dep(name = "onetbb", version = "2022.2.0", repo_name = None)
single_version_override(
module_name = "rules_jvm_external",
patch_strip = 1,
patches = ["//third_party:rules_jvm_external_6.8_bazel_vendor.patch"],
patches = [
"//third_party:rules_jvm_external_6.8_bazel_vendor.patch",
# TODO: Remove this patch once a new version of rules_jvm_external is released and adopted by Bazel.
"//third_party:rules_jvm_external_6.8_exec_jar_tools.patch",
],
version = "6.8",
)

Expand Down
11 changes: 5 additions & 6 deletions src/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -377,13 +377,12 @@ genrule(
# Build an executable named `bazel.exe`.
# Works on all platforms but only makes sense on Windows.
# Workaround for non-configurability of genrule's `outs` attribute.
[genrule(
[copy_file(
name = "bazel-bin" + suffix + ".exe",
srcs = [":bazel-bin" + suffix],
outs = ["bazel" + suffix + ".exe"],
cmd = "cp $(location :bazel-bin" + suffix + ") $@",
executable = 1,
output_to_bindir = 1,
src = ":bazel-bin" + suffix,
out = "bazel" + suffix + ".exe",
allow_symlink = True,
is_executable = True,
visibility = [
"//scripts:__pkg__", # For bash completion generation
"//scripts/packages:__pkg__", # For installer generation
Expand Down
9 changes: 5 additions & 4 deletions src/main/java/com/google/devtools/build/lib/bazel/rules/BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@rules_java//java:defs.bzl", "java_library")

package(
Expand Down Expand Up @@ -192,10 +193,10 @@ java_library(
# We need this redirect target so that the builtins zip can be packaged as a
# resource next to the BazelRuleClassProvider class (com/google/devtools/...). Otherwise
# it gets placed under the package path of the original zip target.
genrule(
copy_file(
name = "builtins_bzl_zip",
srcs = ["//src/main/starlark/builtins_bzl:builtins_bzl.zip"],
outs = ["builtins_bzl.zip"],
cmd = "cp $(SRCS) $@",
src = "//src/main/starlark/builtins_bzl:builtins_bzl.zip",
out = "builtins_bzl.zip",
allow_symlink = True,
visibility = ["//:__pkg__"],
)
9 changes: 5 additions & 4 deletions src/main/java/net/starlark/java/eval/BUILD
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Description: Bazel's Starlark interpreter

load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_java//java:defs.bzl", "java_library")

Expand Down Expand Up @@ -111,11 +112,11 @@ filegroup(
visibility = ["//src/main/java/net/starlark/java:clients"],
)

genrule(
copy_file(
name = "cpu_profiler_jni_darwin",
srcs = ["libcpu_profiler.so"],
outs = ["libcpu_profiler.dylib"],
cmd = "cp $< $@",
src = "libcpu_profiler.so",
out = "libcpu_profiler.dylib",
allow_symlink = True,
)

# The C++ portion of the Starlark CPU profiler.
Expand Down
36 changes: 18 additions & 18 deletions src/main/native/BUILD
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_library.bzl", "cc_library")

genrule(
copy_file(
name = "copy_link_jni_md_header",
srcs = select({
"//src/conditions:darwin": ["@rules_java//toolchains:jni_md_header-darwin"],
"//src/conditions:freebsd": ["@rules_java//toolchains:jni_md_header-freebsd"],
"//src/conditions:openbsd": ["@rules_java//toolchains:jni_md_header-openbsd"],
"//src/conditions:windows": ["@rules_java//toolchains:jni_md_header-windows"],
"//conditions:default": ["@rules_java//toolchains:jni_md_header-linux"],
src = select({
"//src/conditions:darwin": "@rules_java//toolchains:jni_md_header-darwin",
"//src/conditions:freebsd": "@rules_java//toolchains:jni_md_header-freebsd",
"//src/conditions:openbsd": "@rules_java//toolchains:jni_md_header-openbsd",
"//src/conditions:windows": "@rules_java//toolchains:jni_md_header-windows",
"//conditions:default": "@rules_java//toolchains:jni_md_header-linux",
}),
outs = ["jni_md.h"],
cmd = "cp -f $< $@",
out = "jni_md.h",
allow_symlink = True,
visibility = ["//src/main/native:__subpackages__"],
)

genrule(
copy_file(
name = "copy_link_jni_header",
srcs = ["@rules_java//toolchains:jni_header"],
outs = ["jni.h"],
cmd = "cp -f $< $@",
src = "@rules_java//toolchains:jni_header",
out = "jni.h",
allow_symlink = True,
visibility = ["//src/main/native:__subpackages__"],
)

Expand Down Expand Up @@ -107,12 +108,11 @@ cc_binary(

# TODO(bazel-team): Come up with a way to support platform-specific dynamic
# library extensions. This is issue #914.
genrule(
copy_file(
name = "mac-compat",
srcs = ["libunix_jni.so"],
outs = ["libunix_jni.dylib"],
cmd = "cp $< $@",
output_to_bindir = 1,
src = "libunix_jni.so",
out = "libunix_jni.dylib",
allow_symlink = True,
visibility = ["//src/main/java/com/google/devtools/build/lib/jni:__pkg__"],
)

Expand Down
76 changes: 76 additions & 0 deletions third_party/rules_jvm_external_6.8_exec_jar_tools.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
diff --git a/private/rules/jvm_import.bzl b/private/rules/jvm_import.bzl
index 0fbbd10..de36b90 100644
--- a/private/rules/jvm_import.bzl
+++ b/private/rules/jvm_import.bzl
@@ -7,7 +7,7 @@
# [0]: https://github.com/square/bazel_maven_repository/pull/48
# [1]: https://github.com/bazelbuild/bazel/issues/4549

-load("@rules_java//java:defs.bzl", "JavaInfo")
+load("@rules_java//java:defs.bzl", "JavaInfo", "java_common")
load("@rules_license//rules:providers.bzl", "PackageInfo")
load("//private/lib:coordinates.bzl", "to_external_form", "to_purl", "unpack_coordinates")
load("//private/lib:urls.bzl", "scheme_and_host")
@@ -26,6 +26,8 @@ def _jvm_import_impl(ctx):
if not ctx.attr.jar:
print(ctx.attr.name, "The `jars` attribute is deprecated and will be removed in `rules_jvm_external` 7.0. Please use the `jar` attribute instead.")

+ java_runtime = ctx.attr._java_runtime[java_common.JavaRuntimeInfo]
+ add_jar_manifest_entry = ctx.file._add_jar_manifest_entry
injar = ctx.file.jar if ctx.attr.jar else ctx.files.jars[0]

if ctx.attr._stamp_manifest[StampManifestProvider].stamp_enabled:
@@ -33,11 +35,14 @@ def _jvm_import_impl(ctx):
args = ctx.actions.args()
args.add_all(["--source", injar, "--output", outjar])
args.add("--manifest-entry", ctx.label, format = "Target-Label:%s")
+ java_args = ctx.actions.args()
+ java_args.add_all(["-XX:-UsePerfData", "-jar", add_jar_manifest_entry])
ctx.actions.run(
- executable = ctx.executable._add_jar_manifest_entry,
- arguments = [args],
+ executable = java_runtime.java_executable_exec_path,
+ arguments = [java_args, args],
inputs = [injar],
outputs = [outjar],
+ tools = [add_jar_manifest_entry, java_runtime.files],
mnemonic = "StampJarManifest",
progress_message = "Stamping the manifest of %{label}",
)
@@ -59,13 +64,16 @@ def _jvm_import_impl(ctx):
# Make sure the compile jar is safe to compile with
args.add("--make-safe")

+ java_args = ctx.actions.args()
+ java_args.add_all(["-XX:-UsePerfData", "-jar", add_jar_manifest_entry])
ctx.actions.run(
- executable = ctx.executable._add_jar_manifest_entry,
- arguments = [args],
+ executable = java_runtime.java_executable_exec_path,
+ arguments = [java_args, args],
inputs = [outjar],
outputs = [compilejar],
+ tools = [add_jar_manifest_entry, java_runtime.files],
mnemonic = "CreateCompileJar",
- progress_message = "Creating compile jar for %s" % ctx.label,
+ progress_message = "Creating compile jar for %{label}",
)

additional_providers = []
@@ -129,9 +137,14 @@ jvm_import = rule(
doc = "URL from where `jar` will be downloaded from.",
),
"_add_jar_manifest_entry": attr.label(
- executable = True,
+ allow_single_file = True,
+ cfg = "exec",
+ default = "//private/tools/java/com/github/bazelbuild/rules_jvm_external/jar:AddJarManifestEntry_deploy.jar",
+ ),
+ "_java_runtime": attr.label(
+ default = "@rules_java//toolchains:current_java_runtime",
+ providers = [java_common.JavaRuntimeInfo],
cfg = "exec",
- default = "//private/tools/java/com/github/bazelbuild/rules_jvm_external/jar:AddJarManifestEntry",
),
"_stamp_manifest": attr.label(
default = "@rules_jvm_external//settings:stamp_manifest",