Add --run_in_client option to mobile-install
This option allows the mobile-install deployer command to be sent to the bazel client for execution. This is useful for configurations where the bazel client is on a different machine than the bazel server.
Takes the shortcut of having --run_in_client not respect
--mobile_install_run_deployer. The latter (undocumented) flag exists as an
earlier attempt at something like --run_in_client and AFAICT is only used for
that purpose, so taking advantage of that situation to avoid introducing extra
flags. We make these two flags get along after an internal compatibility window
has passed.
PiperOrigin-RevId: 681104164
Change-Id: Id462debabc54766b4b4f86024e4378f76798fd74
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ExecRequestUtils.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ExecRequestUtils.java
new file mode 100644
index 0000000..06ca868
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ExecRequestUtils.java
@@ -0,0 +1,49 @@
+// Copyright 2024 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.runtime.commands;
+
+import static java.nio.charset.StandardCharsets.ISO_8859_1;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.runtime.CommandEnvironment;
+import com.google.devtools.build.lib.server.CommandProtos.PathToReplace;
+import com.google.protobuf.ByteString;
+
+/** Helpers for constructing {@link ExecRequest}s. */
+public class ExecRequestUtils {
+
+ /** Returns the common required {@link PathToReplace} list. */
+ public static ImmutableList<PathToReplace> getPathsToReplace(CommandEnvironment env) {
+ return ImmutableList.of(
+ PathToReplace.newBuilder()
+ .setType(PathToReplace.Type.OUTPUT_BASE)
+ .setValue(bytes(env.getOutputBase().getPathString()))
+ .build(),
+ PathToReplace.newBuilder()
+ .setType(PathToReplace.Type.BUILD_WORKING_DIRECTORY)
+ .setValue(bytes(env.getWorkingDirectory().getPathString()))
+ .build(),
+ PathToReplace.newBuilder()
+ .setType(PathToReplace.Type.BUILD_WORKSPACE_DIRECTORY)
+ .setValue(bytes(env.getWorkspace().getPathString()))
+ .build());
+ }
+
+ /** Converts a string to bytes for use in {@link ExecRequest} bytes fields. */
+ public static ByteString bytes(String string) {
+ return ByteString.copyFrom(string, ISO_8859_1);
+ }
+
+ private ExecRequestUtils() {}
+}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
index d1163bf..c783b2a 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
@@ -525,32 +525,18 @@
private static ImmutableList<PathToReplace> getPathsToReplace(
CommandEnvironment env, String testLogDir, boolean isTestTarget) {
- ImmutableList.Builder<PathToReplace> pathsToReplace =
- ImmutableList.<PathToReplace>builder()
- .add(
- CommandProtos.PathToReplace.newBuilder()
- .setType(PathToReplace.Type.OUTPUT_BASE)
- .setValue(ByteString.copyFrom(env.getOutputBase().getPathString(), ISO_8859_1))
- .build())
- .add(
- CommandProtos.PathToReplace.newBuilder()
- .setType(PathToReplace.Type.BUILD_WORKING_DIRECTORY)
- .setValue(
- ByteString.copyFrom(env.getWorkingDirectory().getPathString(), ISO_8859_1))
- .build())
- .add(
- CommandProtos.PathToReplace.newBuilder()
- .setType(PathToReplace.Type.BUILD_WORKSPACE_DIRECTORY)
- .setValue(ByteString.copyFrom(env.getWorkspace().getPathString(), ISO_8859_1))
- .build());
+ ImmutableList<PathToReplace> pathsToReplace = ExecRequestUtils.getPathsToReplace(env);
if (isTestTarget) {
- pathsToReplace.add(
- CommandProtos.PathToReplace.newBuilder()
- .setType(PathToReplace.Type.TEST_LOG_SUBDIR)
- .setValue(ByteString.copyFrom(testLogDir, ISO_8859_1))
- .build());
+ return ImmutableList.<PathToReplace>builder()
+ .addAll(pathsToReplace)
+ .add(
+ PathToReplace.newBuilder()
+ .setType(PathToReplace.Type.TEST_LOG_SUBDIR)
+ .setValue(ByteString.copyFrom(testLogDir, ISO_8859_1))
+ .build())
+ .build();
}
- return pathsToReplace.build();
+ return pathsToReplace;
}
private static ImmutableList<ByteString> getArgvForExecRequest(
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD
index 512e25f..807d621 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD
@@ -31,10 +31,10 @@
"//src/main/java/com/google/devtools/build/lib/runtime/commands",
"//src/main/java/com/google/devtools/build/lib/shell",
"//src/main/java/com/google/devtools/build/lib/util:command",
- "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code",
"//src/main/java/com/google/devtools/build/lib/util/io:out-err",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:command_server_java_proto",
"//src/main/protobuf:failure_details_java_proto",
"//third_party:guava",
"//third_party:jsr305",
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
index 5ca2d61..b236556 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.runtime.mobileinstall;
+import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.devtools.build.lib.analysis.OutputGroupInfo.INTERNAL_SUFFIX;
import static com.google.devtools.build.lib.runtime.Command.BuildPhase.EXECUTES;
@@ -38,6 +39,9 @@
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.CommonCommandOptions;
import com.google.devtools.build.lib.runtime.commands.BuildCommand;
+import com.google.devtools.build.lib.runtime.commands.ExecRequestUtils;
+import com.google.devtools.build.lib.server.CommandProtos.EnvironmentVariable;
+import com.google.devtools.build.lib.server.CommandProtos.ExecRequest;
import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
import com.google.devtools.build.lib.server.FailureDetails.MobileInstall;
import com.google.devtools.build.lib.server.FailureDetails.MobileInstall.Code;
@@ -57,9 +61,9 @@
import com.google.devtools.common.options.OptionsParser;
import com.google.devtools.common.options.OptionsParsingException;
import com.google.devtools.common.options.OptionsParsingResult;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
import javax.annotation.Nullable;
/** Implementation of the 'mobile-install' command. */
@@ -160,7 +164,19 @@
OptionEffectTag.EXECUTION
},
help = "Whether to run the mobile-install deployer after building all artifacts.")
+ // TODO: b/369442227 - Delete --mobile_install_run_deployer or have --run_in_client respect it.
public boolean mobileInstallRunDeployer;
+
+ @Option(
+ name = "run_in_client",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.BAZEL_INTERNAL_CONFIGURATION},
+ help =
+ "If true, the mobile-install deployer command will be sent to the bazel client for "
+ + "execution. Useful for configurations where the bazel client is on a different "
+ + "machine than the bazel server.")
+ public boolean runInClient;
}
private static final String SINGLE_TARGET_MESSAGE =
@@ -169,8 +185,6 @@
@Override
public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
- Options mobileInstallOptions = options.getOptions(Options.class);
-
// This list should look like: ["//executable:target", "arg1", "arg2"]
List<String> targetAndArgs = options.getResidue();
@@ -198,19 +212,15 @@
.setStartTimeMillis(env.getCommandStartTime())
.build();
- BuildResult result;
- if (mobileInstallOptions.mobileInstallRunDeployer) {
- result =
- new BuildTool(env)
- .processRequest(
- request,
- /* validator= */ null,
- successfulTargets ->
- doMobileInstall(env, options, runTargetArgs, successfulTargets));
- } else {
- result = new BuildTool(env).processRequest(request, /* validator = */ null);
- }
-
+ AtomicReference<ExecRequest> deployerRequestRef = new AtomicReference<>();
+ BuildResult result =
+ new BuildTool(env)
+ .processRequest(
+ request,
+ /* validator= */ null,
+ successfulTargets ->
+ doMobileInstall(
+ env, options, runTargetArgs, successfulTargets, deployerRequestRef));
if (!result.getSuccess()) {
env.getReporter().handle(Event.error("Build failed. Not running mobile-install on target."));
return BlazeCommandResult.detailedExitCode(result.getDetailedExitCode());
@@ -218,7 +228,9 @@
FailureDetail failureDetail = result.getPostBuildCallBackFailureDetail();
if (failureDetail == null) {
- return BlazeCommandResult.success();
+ return deployerRequestRef.get() == null
+ ? BlazeCommandResult.success()
+ : BlazeCommandResult.execute(deployerRequestRef.get());
}
return BlazeCommandResult.failureDetail(failureDetail);
}
@@ -229,7 +241,8 @@
CommandEnvironment env,
OptionsParsingResult options,
List<String> runTargetArgs,
- Collection<ConfiguredTarget> successfulTargets)
+ Collection<ConfiguredTarget> successfulTargets,
+ AtomicReference<ExecRequest> deployerRequestRef)
throws InterruptedException {
if (successfulTargets == null) {
env.getReporter().handle(Event.warn(NO_TARGET_MESSAGE));
@@ -252,7 +265,7 @@
}
}
- List<String> cmdLine = new ArrayList<>();
+ ImmutableList.Builder<String> cmdLine = ImmutableList.builder();
// TODO(bazel-team): Get the executable path from the filesToRun provider from the aspect.
BuildConfigurationValue configuration =
env.getSkyframeExecutor()
@@ -300,6 +313,25 @@
Path workingDir =
env.getDirectories().getOutputPath(env.getWorkspaceName()).getParentDirectory();
+
+ // TODO: b/369442227 - Delete --mobile_install_run_deployer or have --run_in_client respect it.
+ if (mobileInstallOptions.runInClient) {
+ deployerRequestRef.set(createExecRequest(env, workingDir, cmdLine.build()));
+ return null;
+ }
+
+ if (!mobileInstallOptions.mobileInstallRunDeployer) {
+ return null;
+ }
+
+ return executeAsChild(env, workingDir, cmdLine.build());
+ }
+
+ /** Executes the mobile-install deployer as a child process on this machine. */
+ @Nullable
+ private static FailureDetail executeAsChild(
+ CommandEnvironment env, Path workingDir, ImmutableList<String> cmdLine)
+ throws InterruptedException {
com.google.devtools.build.lib.shell.Command command =
new CommandBuilder()
.addArgs(cmdLine)
@@ -337,6 +369,26 @@
}
}
+ /** Returns an {@link ExecRequest} for running the mobile-install deployer in the client. */
+ private static ExecRequest createExecRequest(
+ CommandEnvironment env, Path workingDir, ImmutableList<String> cmdLine) {
+ return ExecRequest.newBuilder()
+ .setShouldExec(true)
+ .setWorkingDirectory(ExecRequestUtils.bytes(workingDir.getPathString()))
+ .addAllArgv(cmdLine.stream().map(ExecRequestUtils::bytes).collect(toImmutableList()))
+ .addAllPathToReplace(ExecRequestUtils.getPathsToReplace(env))
+ // TODO: b/333695932 - Shim for client run-support, remove once no longer needed.
+ .addEnvironmentVariable(
+ EnvironmentVariable.newBuilder()
+ .setName(ExecRequestUtils.bytes("BUILD_WORKING_DIRECTORY"))
+ .setValue(ExecRequestUtils.bytes(env.getWorkingDirectory().getPathString())))
+ .addEnvironmentVariable(
+ EnvironmentVariable.newBuilder()
+ .setName(ExecRequestUtils.bytes("BUILD_WORKSPACE_DIRECTORY"))
+ .setValue(ExecRequestUtils.bytes(env.getWorkspace().getPathString())))
+ .build();
+ }
+
@Override
public void editOptions(OptionsParser optionsParser) {
Options options = optionsParser.getOptions(Options.class);
diff --git a/third_party/BUILD b/third_party/BUILD
index 63a2f27..0f003c0 100644
--- a/third_party/BUILD
+++ b/third_party/BUILD
@@ -33,6 +33,7 @@
"//third_party/py/mock:srcs",
"//third_party/py/six:srcs",
"//third_party/remoteapis:srcs",
+ "//third_party/upb:srcs",
"//third_party/zlib:srcs",
],
)
diff --git a/third_party/googleapis/MODULE.bazel b/third_party/googleapis/MODULE.bazel
new file mode 100644
index 0000000..b9e5f7d
--- /dev/null
+++ b/third_party/googleapis/MODULE.bazel
@@ -0,0 +1,13 @@
+# NOTE: When editing this file, also update the lockfile.
+# bazel mod deps --lockfile_mode=update
+
+module(
+ name = "googleapis",
+ version = "",
+)
+
+bazel_dep(name = "rules_license", version = "0.0.3")
+bazel_dep(name = "rules_java", version = "4.0.0")
+bazel_dep(name = "rules_proto", version = "4.0.0")
+bazel_dep(name = "protobuf", version = "3.19.0", repo_name = "com_google_protobuf")
+bazel_dep(name = "bazel", version = "", repo_name = "io_bazel")
diff --git a/third_party/protobuf/21.7.patch b/third_party/protobuf/21.7.patch
new file mode 100644
index 0000000..1f7ffcc
--- /dev/null
+++ b/third_party/protobuf/21.7.patch
@@ -0,0 +1,321 @@
+From 992aeb206ab9d82d86066c8abf8a4445822b0db9 Mon Sep 17 00:00:00 2001
+From: Ivo List <ilist@google.com>
+Date: Fri, 30 Dec 2022 07:49:53 +0100
+Subject: [PATCH] fix
+
+---
+ BUILD.bazel | 4 +--
+ java/core/BUILD.bazel | 54 ++++++++++--------------------------
+ java/kotlin-lite/BUILD.bazel | 12 ++++----
+ java/kotlin/BUILD.bazel | 22 +++++++--------
+ java/lite/BUILD.bazel | 4 +--
+ java/util/BUILD.bazel | 30 ++++++--------------
+ 6 files changed, 44 insertions(+), 82 deletions(-)
+
+diff --git a/BUILD.bazel b/BUILD.bazel
+index 0f6e41e..88226cc 100644
+--- a/BUILD.bazel
++++ b/BUILD.bazel
+@@ -138,7 +138,7 @@ cc_library(
+ visibility = ["//visibility:public"],
+ deps = [":protobuf_lite"] + select({
+ "//build_defs:config_msvc": [],
+- "//conditions:default": ["@zlib//:zlib"],
++ "//conditions:default": ["@io_bazel//third_party/zlib"],
+ }),
+ )
+
+@@ -755,7 +755,7 @@ cc_test(
+ "@com_google_googletest//:gtest_main",
+ ] + select({
+ "//build_defs:config_msvc": [],
+- "//conditions:default": ["@zlib//:zlib"],
++ "//conditions:default": ["@io_bazel//third_party/zlib"],
+ }),
+ )
+
+diff --git a/java/core/BUILD.bazel b/java/core/BUILD.bazel
+index cfd53f4..d312923 100644
+--- a/java/core/BUILD.bazel
++++ b/java/core/BUILD.bazel
+@@ -1,6 +1,5 @@
+ load("@bazel_skylib//rules:build_test.bzl", "build_test")
+ load("@rules_java//java:defs.bzl", "java_library", "java_lite_proto_library", "java_proto_library")
+-load("@rules_jvm_external//:defs.bzl", "java_export")
+ load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")
+ load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain", "proto_library")
+ load("//conformance:defs.bzl", "conformance_test")
+@@ -131,18 +130,6 @@ java_library(
+ ],
+ )
+
+-# Bazel users, don't depend on this target, use //java/lite.
+-java_export(
+- name = "lite_mvn",
+- maven_coordinates = "com.google.protobuf:protobuf-javalite:%s" % PROTOBUF_JAVA_VERSION,
+- pom_template = "//java/lite:pom_template.xml",
+- resources = [
+- "//:lite_well_known_protos",
+- ],
+- tags = ["manual"],
+- runtime_deps = [":lite"],
+-)
+-
+ java_library(
+ name = "lite_runtime_only",
+ srcs = LITE_SRCS,
+@@ -185,19 +172,6 @@ java_library(
+ ],
+ )
+
+-# Bazel users, don't depend on this target, use :core.
+-java_export(
+- name = "core_mvn",
+- maven_coordinates = "com.google.protobuf:protobuf-java:%s" % PROTOBUF_JAVA_VERSION,
+- pom_template = "pom_template.xml",
+- resources = [
+- "//:built_in_runtime_protos",
+- "//:well_known_type_protos",
+- ],
+- tags = ["manual"],
+- runtime_deps = [":core"],
+-)
+-
+ filegroup(
+ name = "release",
+ srcs = [
+@@ -271,8 +245,8 @@ java_library(
+ ":core",
+ ":generic_test_protos_java_proto",
+ ":java_test_protos_java_proto",
+- "@maven//:com_google_guava_guava",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:guava",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -318,10 +292,10 @@ junit_tests(
+ ":generic_test_protos_java_proto",
+ ":java_test_protos_java_proto",
+ ":test_util",
+- "@maven//:com_google_guava_guava",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
+- "@maven//:org_mockito_mockito_core",
++ "@io_bazel//third_party:guava",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
++ "@io_bazel//third_party:mockito",
+ ],
+ )
+
+@@ -337,9 +311,9 @@ junit_tests(
+ ],
+ deps = [
+ ":core",
+- "@maven//:com_google_guava_guava",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:guava",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -384,8 +358,8 @@ java_library(
+ ":generic_test_protos_java_proto_lite",
+ ":java_test_protos_java_proto_lite",
+ ":lite_runtime_only",
+- "@maven//:com_google_guava_guava",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:guava",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -447,9 +421,9 @@ junit_tests(
+ ":java_test_protos_java_proto_lite",
+ ":lite",
+ ":test_util_lite",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
+- "@maven//:org_mockito_mockito_core",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
++ "@io_bazel//third_party:mockito",
+ ],
+ )
+
+diff --git a/java/kotlin-lite/BUILD.bazel b/java/kotlin-lite/BUILD.bazel
+index d3d9ddf..3516d63 100644
+--- a/java/kotlin-lite/BUILD.bazel
++++ b/java/kotlin-lite/BUILD.bazel
+@@ -94,8 +94,8 @@ kt_jvm_library(
+ "//java/kotlin:shared_runtime",
+ "//java/lite",
+ "@com_github_jetbrains_kotlin//:kotlin-test",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -187,8 +187,8 @@ kt_jvm_library(
+ deps = [
+ ":kotlin_unittest_lite",
+ "//java/core:test_util_lite",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -204,8 +204,8 @@ kt_jvm_library(
+ deps = [
+ ":kotlin_proto3_unittest_lite",
+ "//java/core:test_util_lite",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+diff --git a/java/kotlin/BUILD.bazel b/java/kotlin/BUILD.bazel
+index 67fc6e0..1ed26aa 100644
+--- a/java/kotlin/BUILD.bazel
++++ b/java/kotlin/BUILD.bazel
+@@ -101,8 +101,8 @@ kt_jvm_library(
+ ":bytestring_lib",
+ "//java/lite",
+ "@com_github_jetbrains_kotlin//:kotlin-test",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -136,9 +136,9 @@ kt_jvm_library(
+ ":only_for_use_in_proto_generated_code_its_generator_and_tests",
+ ":shared_runtime",
+ "@com_github_jetbrains_kotlin//:kotlin-test",
+- "@maven//:com_google_guava_guava_testlib",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:guava",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -162,8 +162,8 @@ kt_jvm_library(
+ ":shared_runtime",
+ "//java/core",
+ "@com_github_jetbrains_kotlin//:kotlin-test",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -271,8 +271,8 @@ kt_jvm_library(
+ deps = [
+ ":kotlin_unittest",
+ "//java/core:test_util",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+@@ -288,8 +288,8 @@ kt_jvm_library(
+ deps = [
+ ":kotlin_proto3_unittest",
+ "//java/core:test_util",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+diff --git a/java/lite/BUILD.bazel b/java/lite/BUILD.bazel
+index 9ae3c51..f1ce750 100644
+--- a/java/lite/BUILD.bazel
++++ b/java/lite/BUILD.bazel
+@@ -73,8 +73,8 @@ junit_tests(
+ "//java/core:generic_test_protos_java_proto_lite",
+ "//java/core:java_test_protos_java_proto_lite",
+ "//java/core:test_util_lite",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+diff --git a/java/util/BUILD.bazel b/java/util/BUILD.bazel
+index e3804fb..cecd254 100644
+--- a/java/util/BUILD.bazel
++++ b/java/util/BUILD.bazel
+@@ -1,5 +1,4 @@
+ load("@rules_java//java:defs.bzl", "java_proto_library")
+-load("@rules_jvm_external//:defs.bzl", "java_export")
+ load("@rules_pkg//:mappings.bzl", "pkg_filegroup", "pkg_files", "strip_prefix")
+ load("@rules_proto//proto:defs.bzl", "proto_library")
+ load("//:protobuf_version.bzl", "PROTOBUF_JAVA_VERSION")
+@@ -13,25 +12,14 @@ java_library(
+ visibility = ["//visibility:public"],
+ deps = [
+ "//java/core",
+- "@maven//:com_google_code_findbugs_jsr305",
+- "@maven//:com_google_code_gson_gson",
+- "@maven//:com_google_errorprone_error_prone_annotations",
+- "@maven//:com_google_guava_guava",
+- "@maven//:com_google_j2objc_j2objc_annotations",
++ "@io_bazel//third_party:jsr305",
++ "@io_bazel//third_party:gson",
++ "@io_bazel//third_party:error_prone_annotations",
++ "@io_bazel//third_party:guava",
++ "@io_bazel//third_party/java/j2objc-annotations",
+ ],
+ )
+
+-# Bazel users, don't depend on this target, use :util.
+-java_export(
+- name = "util_mvn",
+- deploy_env = ["//java/core"],
+- maven_coordinates = "com.google.protobuf:protobuf-java-util:%s" % PROTOBUF_JAVA_VERSION,
+- pom_template = "pom_template.xml",
+- tags = ["manual"],
+- visibility = ["//java:__pkg__"],
+- runtime_deps = [":util"],
+-)
+-
+ filegroup(
+ name = "release",
+ srcs = [
+@@ -70,10 +58,10 @@ junit_tests(
+ ":util",
+ "//java/core",
+ "//java/core:generic_test_protos_java_proto",
+- "@maven//:com_google_code_gson_gson",
+- "@maven//:com_google_guava_guava",
+- "@maven//:com_google_truth_truth",
+- "@maven//:junit_junit",
++ "@io_bazel//third_party:gson",
++ "@io_bazel//third_party:guava",
++ "@io_bazel//third_party:truth",
++ "@io_bazel//third_party:junit4",
+ ],
+ )
+
+--
+2.39.0.314.g84b9a713c41-goog
+
diff --git a/third_party/protobuf/BUILD b/third_party/protobuf/BUILD
index c1b64c4..83615ed 100644
--- a/third_party/protobuf/BUILD
+++ b/third_party/protobuf/BUILD
@@ -6,11 +6,6 @@
visibility = ["//third_party:__pkg__"],
)
-exports_files([
- "BUILD",
- "remove_rules_rust.patch",
-])
-
alias(
name = "protoc",
actual = "@com_google_protobuf//:protoc",
diff --git a/third_party/protobuf/remove_rules_rust.patch b/third_party/protobuf/remove_rules_rust.patch
deleted file mode 100644
index 1e3fadd..0000000
--- a/third_party/protobuf/remove_rules_rust.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff --git a/MODULE.bazel b/MODULE.bazel
-index 213d3c2..4958368 100755
---- a/MODULE.bazel
-+++ b/MODULE.bazel
-@@ -68,11 +68,6 @@ bazel_dep(
- version = "0.28.0",
- )
-
--bazel_dep(
-- name = "rules_rust",
-- version = "0.45.1",
--)
--
- bazel_dep(
- name = "platforms",
- version = "0.0.8",
-@@ -128,33 +123,6 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
-
- use_repo(pip, "pip_deps")
-
--rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
--
--rust.toolchain(edition = "2021")
--
--use_repo(rust, "rust_toolchains")
--
--register_toolchains("@rust_toolchains//:all")
--
--crate = use_extension("@rules_rust//crate_universe:extension.bzl", "crate")
--
--crate.spec(
-- package = "googletest",
-- version = ">0.0.0",
--)
--
--crate.spec(
-- package = "paste",
-- version = ">=1",
--)
--
--crate.from_specs()
--
--use_repo(
-- crate,
-- crate_index = "crates",
--)
--
- maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
-
- maven.install(
diff --git a/third_party/protobuf_21.7.patch b/third_party/protobuf_21.7.patch
new file mode 100644
index 0000000..d76c801
--- /dev/null
+++ b/third_party/protobuf_21.7.patch
@@ -0,0 +1,13 @@
+diff --git a/protobuf.bzl b/protobuf.bzl
+index c5b8dab38..5854d2677 100644
+--- a/protobuf.bzl
++++ b/protobuf.bzl
+@@ -481,7 +481,7 @@ def internal_copied_filegroup(name, srcs, strip_prefix, dest, **kwargs):
+ ["cp $(location %s) $(location %s)" %
+ (s, _RelativeOutputPath(s, strip_prefix, dest)) for s in srcs]),
+ cmd_bat = " && ".join(
+- ["@copy /Y $(location %s) $(location %s) >NUL" %
++ ["@copy /Y \"$(location %s)\" \"$(location %s)\" >NUL" %
+ (s, _RelativeOutputPath(s, strip_prefix, dest)) for s in srcs]),
+ )
+
diff --git a/third_party/remoteapis/MODULE.bazel b/third_party/remoteapis/MODULE.bazel
index 26f9dec..9459f6f 100644
--- a/third_party/remoteapis/MODULE.bazel
+++ b/third_party/remoteapis/MODULE.bazel
@@ -9,5 +9,5 @@
bazel_dep(name = "rules_java", version = "4.0.0")
bazel_dep(name = "rules_proto", version = "4.0.0")
bazel_dep(name = "protobuf", version = "3.19.0", repo_name = "com_google_protobuf")
-bazel_dep(name = "googleapis", version = "0.0.0-20240819-fe8ba054a")
+bazel_dep(name = "googleapis", version = "")
bazel_dep(name = "bazel", version = "", repo_name = "io_bazel")
diff --git a/third_party/rules_jvm_external_6.0.patch b/third_party/rules_jvm_external_6.0.patch
index 70e44f8..17c8d82 100644
--- a/third_party/rules_jvm_external_6.0.patch
+++ b/third_party/rules_jvm_external_6.0.patch
@@ -113,19 +113,6 @@
# Iterate through the list of artifacts, and generate the target declaration strings.
for artifact in dependencies:
artifact_path = artifact["file"]
-@@ -390,9 +398,9 @@ def _generate_imports(repository_ctx, dependencies, explicit_artifacts, neverlin
- # Override target labels with the user provided mapping, instead of generating
- # a jvm_import/aar_import based on information in dep_tree.
- seen_imports[target_label] = True
-- all_imports.append(
-- "alias(\n\tname = \"%s\",\n\tactual = \"%s\",\n\tvisibility = [\"//visibility:public\"],)" % (target_label, labels_to_override.get(target_label)),
-- )
-+ alias = "alias(\n\tname = \"%s\",\n\tactual = \"%s\",\n\tvisibility = [\"//visibility:public\"],)" % (target_label, labels_to_override.get(target_label))
-+ all_imports.append(alias)
-+ vendor_targets.append(alias)
- if repository_ctx.attr.maven_install_json:
- # Provide the downloaded artifact as a file target.
- all_imports.append(_genrule_copy_artifact_from_http_file(artifact, default_visibilities))
@@ -412,6 +420,7 @@ def _generate_imports(repository_ctx, dependencies, explicit_artifacts, neverlin
testonly_artifacts,
default_visibilities,
diff --git a/third_party/upb/00_remove_toolchain_transition.patch b/third_party/upb/00_remove_toolchain_transition.patch
new file mode 100644
index 0000000..fb8776d
--- /dev/null
+++ b/third_party/upb/00_remove_toolchain_transition.patch
@@ -0,0 +1,20 @@
+diff --git a/bazel/upb_proto_library.bzl b/bazel/upb_proto_library.bzl
+index cb9800ca..08d03edc 100644
+--- a/bazel/upb_proto_library.bzl
++++ b/bazel/upb_proto_library.bzl
+@@ -316,7 +316,6 @@ _upb_proto_library_aspect = aspect(
+ attr_aspects = ["deps"],
+ fragments = ["cpp"],
+ toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
+- incompatible_use_toolchain_transition = True,
+ )
+
+ upb_proto_library = rule(
+@@ -369,7 +368,6 @@ _upb_proto_reflection_library_aspect = aspect(
+ attr_aspects = ["deps"],
+ fragments = ["cpp"],
+ toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
+- incompatible_use_toolchain_transition = True,
+ )
+
+ upb_proto_reflection_library = rule(
diff --git a/third_party/upb/01_remove_werror.patch b/third_party/upb/01_remove_werror.patch
new file mode 100644
index 0000000..2165b14
--- /dev/null
+++ b/third_party/upb/01_remove_werror.patch
@@ -0,0 +1,19 @@
+diff --git a/bazel/upb_proto_library.bzl b/bazel/upb_proto_library.bzl
+--- a/bazel/build_defs.bzl
++++ b/bazel/build_defs.bzl
+@@ -34,13 +34,13 @@
+ _DEFAULT_CPPOPTS.extend([
+ "-Wextra",
+ # "-Wshorten-64-to-32", # not in GCC (and my Kokoro images doesn't have Clang)
+- "-Werror",
++ # "-Werror",
+ "-Wno-long-long",
+ ])
+ _DEFAULT_COPTS.extend([
+ "-std=c99",
+ "-pedantic",
+- "-Werror=pedantic",
++ # "-Werror=pedantic",
+ "-Wall",
+ "-Wstrict-prototypes",
+ # GCC (at least) emits spurious warnings for this that cannot be fixed
diff --git a/third_party/upb/BUILD b/third_party/upb/BUILD
new file mode 100644
index 0000000..7e44147
--- /dev/null
+++ b/third_party/upb/BUILD
@@ -0,0 +1,13 @@
+licenses(["notice"])
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]), # glob everything to satisfy the compile.sh srcs test
+ visibility = ["//third_party:__pkg__"],
+)
+
+exports_files([
+ "BUILD",
+ "00_remove_toolchain_transition.patch",
+ "01_remove_werror.patch",
+])