Skip to content

Commit e8b1334

Browse files
authored
Modernize Bazel setup (#20)
* No longer rely on `native.bind` and the `external` package * Replace host with exec cfg * Use `ctx.actions.args()` instead of string lists * Use `http_jar` instead of `jvm_maven_import_external`
1 parent 670d3c8 commit e8b1334

File tree

3 files changed

+29
-33
lines changed

3 files changed

+29
-33
lines changed

jar_jar.bzl

+26-30
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
load(
2-
"@bazel_tools//tools/build_defs/repo:jvm.bzl",
3-
"jvm_maven_import_external",
2+
"@bazel_tools//tools/build_defs/repo:http.bzl",
3+
"http_jar",
44
)
55

66
def _jar_jar_impl(ctx):
@@ -16,12 +16,18 @@ def _jar_jar_impl(ctx):
1616
content = "\n".join(ctx.attr.inline_rules)
1717
)
1818

19+
args = ctx.actions.args()
20+
args.add("process")
21+
args.add(rule_file)
22+
args.add(ctx.file.input_jar)
23+
args.add(ctx.outputs.jar)
24+
1925
ctx.actions.run(
2026
inputs = [rule_file, ctx.file.input_jar],
2127
outputs = [ctx.outputs.jar],
2228
executable = ctx.executable._jarjar_runner,
2329
progress_message = "jarjar %s" % ctx.label,
24-
arguments = ["process", rule_file.path, ctx.file.input_jar.path, ctx.outputs.jar.path],
30+
arguments = [args],
2531
)
2632

2733
return [
@@ -38,41 +44,31 @@ jar_jar = rule(
3844
"input_jar": attr.label(allow_single_file = True),
3945
"rules": attr.label(allow_single_file = True),
4046
"inline_rules" : attr.string_list(),
41-
"_jarjar_runner": attr.label(executable = True, cfg = "host", default = Label("@com_github_johnynek_bazel_jar_jar//src/main/java/com/github/johnynek/jarjar:app")),
47+
"_jarjar_runner": attr.label(executable = True, cfg = "exec", default = "//src/main/java/com/github/johnynek/jarjar:app"),
4248
},
4349
outputs = {
4450
"jar": "%{name}.jar",
4551
},
4652
provides = [JavaInfo],
4753
)
4854

49-
def _mvn_name(coord):
50-
nocolon = "_".join(coord.split(":"))
51-
nodot = "_".join(nocolon.split("."))
52-
nodash = "_".join(nodot.split("-"))
53-
return nodash
54-
55-
def _mvn_jar(coord, sha, bname, servers):
56-
nm = "jar_jar_" + _mvn_name(coord)
57-
jvm_maven_import_external(
58-
name = nm,
59-
artifact = coord,
60-
server_urls = servers,
61-
artifact_sha256 = sha,
62-
licenses = [],
55+
def _http_jar_with_servers(name, path, sha256, servers):
56+
http_jar(
57+
name = name,
58+
urls = [server + path for server in servers],
59+
sha256 = sha256,
6360
)
64-
native.bind(name = ("com_github_johnynek_bazel_jar_jar/%s" % bname), actual = "@%s//jar" % nm)
6561

66-
def jar_jar_repositories(servers = ["https://repo1.maven.org/maven2"]):
67-
_mvn_jar(
68-
"org.ow2.asm:asm:7.0",
69-
"b88ef66468b3c978ad0c97fd6e90979e56155b4ac69089ba7a44e9aa7ffe9acf",
70-
"asm",
71-
servers,
62+
def jar_jar_repositories(servers=["https://repo1.maven.org/maven2"]):
63+
_http_jar_with_servers(
64+
name = "bazel_jar_jar_asm",
65+
path = "/org/ow2/asm/asm/7.0/asm-7.0.jar",
66+
sha256 = "b88ef66468b3c978ad0c97fd6e90979e56155b4ac69089ba7a44e9aa7ffe9acf",
67+
servers = servers,
7268
)
73-
_mvn_jar(
74-
"org.ow2.asm:asm-commons:7.0",
75-
"fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d",
76-
"asm_commons",
77-
servers,
69+
_http_jar_with_servers(
70+
name = "bazel_jar_jar_asm_commons",
71+
path = "/org/ow2/asm/asm-commons/7.0/asm-commons-7.0.jar",
72+
sha256 = "fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d",
73+
servers = servers,
7874
)

jar_jar_toolchain.bzl

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jar_jar_toolchain = rule(
1212
attrs = {
1313
"rules": attr.label(allow_single_file = True),
1414
"duplicate_class_to_warn": attr.bool(mandatory = False, default = False),
15-
"jar_jar_runner": attr.label(executable = True, cfg = "host", default = Label("@com_github_johnynek_bazel_jar_jar//src/main/java/com/github/johnynek/jarjar:app")),
15+
"jar_jar_runner": attr.label(executable = True, cfg = "exec", default = "//src/main/java/com/github/johnynek/jarjar:app"),
1616
"jar_jar_is_native_image": attr.bool(default = False)
1717
},
1818
)

src/main/java/com/github/johnynek/jarjar/BUILD

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ java_library(
66
],
77
visibility = ["//visibility:public"],
88
deps = [
9-
"//external:com_github_johnynek_bazel_jar_jar/asm",
10-
"//external:com_github_johnynek_bazel_jar_jar/asm_commons",
9+
"@bazel_jar_jar_asm//jar",
10+
"@bazel_jar_jar_asm_commons//jar",
1111
],
1212
)
1313

0 commit comments

Comments
 (0)