Use real rules_python
Initial motivation was to use py_proto_library from rules_python, but then a yak came along.
Fixes: https://github.com/bazelbuild/bazel/issues/9029
Closes #17545.
PiperOrigin-RevId: 513834100
Change-Id: I11a99381e1169a9fb7a7a3eaa733ddd348ebac2b
diff --git a/src/BUILD b/src/BUILD
index 176b1d0..6350c27 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -1,6 +1,6 @@
# Packaging
-load("//tools/python:private/defs.bzl", "py_binary", "py_library")
+load("@rules_python//python:defs.bzl", "py_binary", "py_library")
load(":embedded_tools.bzl", "srcsfile")
load(":rule_size_test.bzl", "rule_size_test")
load("//src:release_archive.bzl", "release_archive")
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD
index 341e57c..cdd94cb 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD
@@ -96,6 +96,7 @@
"rules_cc",
"rules_java",
"rules_proto",
+ "rules_python",
"remotejdk11_linux",
"remotejdk11_linux_aarch64",
"remotejdk11_linux_ppc64le",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl
index 5aba763..29bd3a8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl
@@ -284,4 +284,10 @@
{rules_proto}
)
+# Needed only because of proguard_allowlister in java_tools.
+maybe(
+ http_archive,
+{rules_python}
+)
+
register_toolchains("@bazel_tools//tools/jdk:all")
diff --git a/src/main/protobuf/BUILD b/src/main/protobuf/BUILD
index 809860f..adceb38 100644
--- a/src/main/protobuf/BUILD
+++ b/src/main/protobuf/BUILD
@@ -1,4 +1,4 @@
-load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")
+load("@rules_python//python:proto.bzl", "py_proto_library")
load("@rules_proto//proto:defs.bzl", "proto_library")
load("//third_party/grpc:build_defs.bzl", "java_grpc_library")
load("//third_party/grpc/bazel:cc_grpc_library.bzl", "cc_grpc_library")
@@ -47,10 +47,7 @@
py_proto_library(
name = "analysis_v2_py_proto",
- srcs = ["analysis_v2.proto"],
- default_runtime = "//third_party/protobuf:protobuf_python",
- protoc = "//third_party/protobuf:protoc",
- deps = [":build_pb_py"],
+ deps = [":analysis_v2_proto"],
)
java_proto_library(
@@ -187,9 +184,7 @@
py_proto_library(
name = "build_pb_py",
- srcs = ["build.proto"],
- default_runtime = "//third_party/protobuf:protobuf_python",
- protoc = "//third_party/protobuf:protoc",
+ deps = [":build_proto"],
)
java_library_srcs(
diff --git a/src/test/java/com/google/devtools/build/lib/blackbox/bazel/DefaultToolsSetup.java b/src/test/java/com/google/devtools/build/lib/blackbox/bazel/DefaultToolsSetup.java
index c549ef6..2bcf86c 100644
--- a/src/test/java/com/google/devtools/build/lib/blackbox/bazel/DefaultToolsSetup.java
+++ b/src/test/java/com/google/devtools/build/lib/blackbox/bazel/DefaultToolsSetup.java
@@ -27,7 +27,12 @@
public class DefaultToolsSetup implements ToolsSetup {
private static ImmutableList<String> repos =
- ImmutableList.<String>builder().add("rules_cc").add("rules_proto").add("rules_java").build();
+ ImmutableList.<String>builder()
+ .add("rules_cc")
+ .add("rules_proto")
+ .add("rules_java")
+ .add("rules_python")
+ .build();
private ImmutableList<String> getRepositoryOverrides() {
String sharedRepoHome = System.getenv("TEST_REPOSITORY_HOME");
diff --git a/src/test/java/com/google/devtools/build/lib/blackbox/framework/BUILD b/src/test/java/com/google/devtools/build/lib/blackbox/framework/BUILD
index 0532841..814d113 100644
--- a/src/test/java/com/google/devtools/build/lib/blackbox/framework/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/blackbox/framework/BUILD
@@ -46,6 +46,7 @@
repos = [
"rules_cc",
"rules_proto",
+ "rules_python",
],
visibility = ["//visibility:private"],
)
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockPythonSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockPythonSupport.java
index 820b2a8..6481716 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockPythonSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockPythonSupport.java
@@ -38,7 +38,6 @@
addTool(config, "tools/python/srcs_version.bzl");
addTool(config, "tools/python/toolchain.bzl");
addTool(config, "tools/python/utils.bzl");
- addTool(config, "tools/python/private/defs.bzl");
addTool(config, "tools/python/python_bootstrap_template.txt");
config.create(
diff --git a/src/test/py/bazel/BUILD b/src/test/py/bazel/BUILD
index 07a9cf2..ff7f668 100644
--- a/src/test/py/bazel/BUILD
+++ b/src/test/py/bazel/BUILD
@@ -1,5 +1,5 @@
load("//:distdir_deps.bzl", "gen_workspace_stanza")
-load("//tools/python:private/defs.bzl", "py_library", "py_test")
+load("@rules_python//python:defs.bzl", "py_library", "py_test")
package(default_visibility = ["//visibility:private"])
@@ -43,6 +43,7 @@
repos = [
"rules_license",
"rules_cc",
+ "rules_python",
],
)
diff --git a/src/test/py/bazel/test_base.py b/src/test/py/bazel/test_base.py
index c3ff56b..d0057a1 100644
--- a/src/test/py/bazel/test_base.py
+++ b/src/test/py/bazel/test_base.py
@@ -58,6 +58,7 @@
'rules_cc',
'rules_java',
'rules_proto',
+ 'rules_python',
'remotejdk11_linux_for_testing',
'remotejdk11_linux_aarch64_for_testing',
'remotejdk11_linux_ppc64le_for_testing',
diff --git a/src/test/shell/BUILD b/src/test/shell/BUILD
index 6ddf5da..113a81b 100644
--- a/src/test/shell/BUILD
+++ b/src/test/shell/BUILD
@@ -1,5 +1,5 @@
load("//:distdir_deps.bzl", "gen_workspace_stanza")
-load("//tools/python:private/defs.bzl", "py_test")
+load("@rules_python//python:defs.bzl", "py_test")
package(default_visibility = ["//visibility:private"])
@@ -31,6 +31,7 @@
"rules_license",
"rules_pkg",
"rules_proto",
+ "rules_python",
],
template = "testenv.sh.tmpl",
visibility = ["//visibility:public"],
diff --git a/src/test/shell/bazel/bazel_proto_library_test.sh b/src/test/shell/bazel/bazel_proto_library_test.sh
index 17c064a..094c12d 100755
--- a/src/test/shell/bazel/bazel_proto_library_test.sh
+++ b/src/test/shell/bazel/bazel_proto_library_test.sh
@@ -48,19 +48,6 @@
mkdir -p "$workspace"
fi
- cat >> "$workspace"WORKSPACE << EOF
-# TODO(#9029): May require some adjustment if/when we depend on the real
-# @rules_python in the real source tree, since this third_party/ package won't
-# be available.
-new_local_repository(
- name = "rules_python",
- path = "$(dirname $(rlocation io_bazel/third_party/rules_python/rules_python.WORKSPACE))",
- build_file = "$(rlocation io_bazel/third_party/rules_python/BUILD)",
- workspace_file = "$(rlocation io_bazel/third_party/rules_python/rules_python.WORKSPACE)",
-)
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-EOF
cat $(rlocation io_bazel/src/tests/shell/bazel/rules_proto_stanza.txt) >> "$workspace"WORKSPACE
cat >> "$workspace"WORKSPACE << EOF
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
@@ -70,7 +57,7 @@
# @com_google_protobuf//:protoc depends on @io_bazel//third_party/zlib.
new_local_repository(
name = "io_bazel",
- path = "$(dirname $(rlocation io_bazel/third_party/rules_python/rules_python.WORKSPACE))/../..",
+ path = "$(dirname $(rlocation io_bazel/third_party/zlib))/..",
build_file_content = "# Intentionally left empty.",
workspace_file_content = "workspace(name = 'io_bazel')",
)
diff --git a/src/test/shell/integration/BUILD b/src/test/shell/integration/BUILD
index 46f70b7..e45536d 100644
--- a/src/test/shell/integration/BUILD
+++ b/src/test/shell/integration/BUILD
@@ -41,6 +41,7 @@
out = "rules_proto_stanza.txt",
repos = [
"rules_proto",
+ "rules_python",
],
)
diff --git a/src/test/shell/integration/modify_execution_info_test.sh b/src/test/shell/integration/modify_execution_info_test.sh
index 80c1d46..36607b6 100755
--- a/src/test/shell/integration/modify_execution_info_test.sh
+++ b/src/test/shell/integration/modify_execution_info_test.sh
@@ -151,18 +151,6 @@
function test_modify_execution_info_various_types() {
if [[ "$PRODUCT_NAME" = "bazel" ]]; then
- # proto_library requires this external workspace.
- cat >> WORKSPACE << EOF
-# TODO(#9029): May require some adjustment if/when we depend on the real
-# @rules_python in the real source tree, since this third_party/ package won't
-# be available.
-new_local_repository(
- name = "rules_python",
- path = "$(dirname $(rlocation io_bazel/third_party/rules_python/rules_python.WORKSPACE))",
- build_file = "$(rlocation io_bazel/third_party/rules_python/BUILD)",
- workspace_file = "$(rlocation io_bazel/third_party/rules_python/rules_python.WORKSPACE)",
-)
-EOF
cat "$(rlocation "io_bazel/src/test/shell/integration/rules_proto_stanza.txt")" >>WORKSPACE
cat >> WORKSPACE << EOF
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
@@ -172,7 +160,7 @@
# @com_google_protobuf//:protoc depends on @io_bazel//third_party/zlib.
new_local_repository(
name = "io_bazel",
- path = "$(dirname $(rlocation io_bazel/third_party/rules_python/rules_python.WORKSPACE))/../..",
+ path = "$(dirname $(rlocation io_bazel/third_party/zlib))/..",
build_file_content = "# Intentionally left empty.",
workspace_file_content = "workspace(name = 'io_bazel')",
)
diff --git a/src/test/shell/testenv.sh.tmpl b/src/test/shell/testenv.sh.tmpl
index 893e052..1677d33 100755
--- a/src/test/shell/testenv.sh.tmpl
+++ b/src/test/shell/testenv.sh.tmpl
@@ -561,6 +561,14 @@
EOF
}
+function add_rules_python_to_workspace() {
+ cat >> "$1"<<EOF
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+{rules_python}
+EOF
+}
+
function create_workspace_with_default_repos() {
write_workspace_file "${1:-WORKSPACE}" "${2:-main}"
echo "$1"
@@ -576,6 +584,7 @@
add_rules_license_to_workspace "WORKSPACE"
add_rules_pkg_to_workspace "WORKSPACE"
add_rules_proto_to_workspace "WORKSPACE"
+ add_rules_python_to_workspace "WORKSPACE"
maybe_setup_python_windows_workspace
}