• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""Module extension for compatibility with previous Bazel versions"""
2
3load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
4load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
5
6def _compatibility_proxy_repo_impl(rctx):
7    # TODO: use @bazel_features
8    bazel = native.bazel_version
9    if not bazel or bazel >= "8":
10        rctx.file(
11            "BUILD.bazel",
12            """
13load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
14exports_files(['proxy.bzl'], visibility = ["@rules_java//test:__pkg__"])
15bzl_library(
16    name = "proxy_bzl",
17    srcs = ["proxy.bzl"],
18    deps = [
19        "@rules_java//java/bazel/rules",
20        "@rules_java//java/common/rules:toolchain_rules",
21        "@rules_java//java/private:internals",
22        "@rules_java//java/bazel:http_jar_bzl",
23    ],
24    visibility = ["//visibility:public"]
25)
26            """,
27        )
28        rctx.file(
29            "proxy.bzl",
30            """
31load("@rules_java//java/bazel/rules:bazel_java_binary_wrapper.bzl", _java_binary = "java_binary")
32load("@rules_java//java/bazel/rules:bazel_java_import.bzl", _java_import = "java_import")
33load("@rules_java//java/bazel/rules:bazel_java_library.bzl", _java_library = "java_library")
34load("@rules_java//java/bazel/rules:bazel_java_plugin.bzl", _java_plugin = "java_plugin")
35load("@rules_java//java/bazel/rules:bazel_java_test.bzl", _java_test = "java_test")
36load("@rules_java//java/bazel:http_jar.bzl", _http_jar = "http_jar")
37load("@rules_java//java/common/rules:java_package_configuration.bzl", _java_package_configuration = "java_package_configuration")
38load("@rules_java//java/common/rules:java_runtime.bzl", _java_runtime = "java_runtime")
39load("@rules_java//java/common/rules:java_toolchain.bzl", _java_toolchain = "java_toolchain")
40load("@rules_java//java/private:java_common.bzl", _java_common = "java_common")
41load("@rules_java//java/private:java_common_internal.bzl", _java_common_internal_compile = "compile")
42load("@rules_java//java/private:java_info.bzl", _JavaInfo = "JavaInfo", _JavaPluginInfo = "JavaPluginInfo", _java_info_internal_merge = "merge")
43
44java_binary = _java_binary
45java_import = _java_import
46java_library = _java_library
47java_plugin = _java_plugin
48java_test = _java_test
49java_package_configuration = _java_package_configuration
50java_runtime = _java_runtime
51java_toolchain = _java_toolchain
52java_common = _java_common
53JavaInfo = _JavaInfo
54JavaPluginInfo = _JavaPluginInfo
55java_common_internal_compile = _java_common_internal_compile
56java_info_internal_merge = _java_info_internal_merge
57http_jar = _http_jar
58            """,
59        )
60    else:
61        rctx.file(
62            "BUILD.bazel",
63            """
64load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
65exports_files(['proxy.bzl'], visibility = ["@rules_java//test:__pkg__"])
66bzl_library(
67    name = "proxy_bzl",
68    srcs = ["proxy.bzl"],
69    deps = [
70        "@rules_java//java/private:native_bzl",
71        "@bazel_tools//tools:bzl_srcs",
72    ],
73    visibility = ["//visibility:public"]
74)
75            """,
76        )
77        rctx.file(
78            "proxy.bzl",
79            """
80load("@bazel_tools//tools/build_defs/repo:http.bzl", _http_jar = "http_jar")
81load("@rules_java//java/private:native.bzl", "native_java_common", "NativeJavaInfo", "NativeJavaPluginInfo")
82
83java_binary = native.java_binary
84java_import = native.java_import
85java_library = native.java_library
86java_plugin = native.java_plugin
87java_test = native.java_test
88
89java_package_configuration = native.java_package_configuration
90java_runtime = native.java_runtime
91java_toolchain = native.java_toolchain
92
93java_common = native_java_common
94JavaInfo = NativeJavaInfo
95JavaPluginInfo = NativeJavaPluginInfo
96java_common_internal_compile = None
97java_info_internal_merge = None
98
99http_jar = _http_jar
100            """,
101        )
102
103_compatibility_proxy_repo_rule = repository_rule(
104    _compatibility_proxy_repo_impl,
105    # force reruns on server restarts to use correct native.bazel_version
106    local = True,
107)
108
109def compatibility_proxy_repo():
110    maybe(_compatibility_proxy_repo_rule, name = "compatibility_proxy")
111
112def _compat_proxy_impl(_unused):
113    compatibility_proxy_repo()
114
115compatibility_proxy = module_extension(_compat_proxy_impl)
116
117def protobuf_repo():
118    maybe(
119        http_archive,
120        name = "com_google_protobuf",
121        sha256 = "ce5d00b78450a0ca400bf360ac00c0d599cc225f049d986a27e9a4e396c5a84a",
122        strip_prefix = "protobuf-29.0-rc2",
123        url = "https://github.com/protocolbuffers/protobuf/releases/download/v29.0-rc2/protobuf-29.0-rc2.tar.gz",
124    )
125
126def rules_cc_repo():
127    maybe(
128        http_archive,
129        name = "rules_cc",
130        sha256 = "f4aadd8387f381033a9ad0500443a52a0cea5f8ad1ede4369d3c614eb7b2682e",
131        strip_prefix = "rules_cc-0.0.15",
132        urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.15/rules_cc-0.0.15.tar.gz"],
133    )
134
135def bazel_skylib_repo():
136    maybe(
137        http_archive,
138        name = "bazel_skylib",
139        sha256 = "bc283cdfcd526a52c3201279cda4bc298652efa898b10b4db0837dc51652756f",
140        urls = [
141            "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
142            "https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
143        ],
144    )
145
146def rules_java_dependencies():
147    """An utility method to load non-toolchain dependencies of rules_java.
148
149    Loads the remote repositories used by default in Bazel.
150    """
151    compatibility_proxy_repo()
152    bazel_skylib_repo()
153    rules_cc_repo()
154    protobuf_repo()
155