Skip to content

Commit c3ab8ea

Browse files
Bazel aspects: allow sharing source jars and allow empty sourcejars (#757)
* Use labelname when declaring output for unzipped sourcejar * Handle empty source jars
1 parent 6c183d8 commit c3ab8ea

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

examples/bazel-example/src/main/java/srcjar_example/BUILD

+15
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,25 @@ genrule(
44
cmd = "echo 'package com.testing; public class Bar {};' > Bar.java && jar cf $(@) Bar.java",
55
)
66

7+
genrule(
8+
name = "empty-srcjar",
9+
outs = ["empty.srcjar"],
10+
cmd = "touch test.txt && zip $(@) test.txt && zip -d $(@) test.txt",
11+
)
12+
713
java_library(
814
name = "testing",
915
srcs = [
1016
"Foo.java",
1117
":generated-srcjar",
18+
":empty-srcjar"
19+
],
20+
)
21+
22+
java_library(
23+
name = "other_library",
24+
srcs = [
25+
"Baz.java", # create a new file in source at test/Baz.java, alongside test/Foo.java
26+
":generated-srcjar",
1227
],
1328
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.testing;
2+
3+
public class Baz {
4+
public Bar baz(Bar value) {
5+
return value;
6+
}
7+
}

scip-java/src/main/resources/scip-java/scip_java.bzl

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@ def _scip_java(target, ctx):
7070
output_dir = []
7171

7272
for source_jar in source_jars:
73-
dir = ctx.actions.declare_directory("extracted_srcjar/" + source_jar.short_path)
73+
dir = ctx.actions.declare_directory(ctx.label.name + "/extracted_srcjar/" + source_jar.short_path)
7474
output_dir.append(dir)
7575

7676
ctx.actions.run_shell(
7777
inputs = javac_action.inputs,
7878
outputs = [dir],
7979
mnemonic = "ExtractSourceJars",
8080
command = """
81-
unzip {input_file} -d {output_dir}
81+
[ "$(unzip -q -l {input_file} | wc -l)" -eq 0 ] || unzip {input_file} -d {output_dir}
8282
""".format(
8383
output_dir = dir.path,
8484
input_file = source_jar.path,

0 commit comments

Comments
 (0)