From 09ef011ea40afa8160d25302a669a18cb28dacc8 Mon Sep 17 00:00:00 2001 From: Anton Sviridov Date: Wed, 30 Oct 2024 13:57:16 +0000 Subject: [PATCH 1/2] Use labelname when declaring output for unzipped sourcejar --- .../bazel-example/src/main/java/srcjar_example/BUILD | 9 +++++++++ .../bazel-example/src/main/java/srcjar_example/Baz.java | 7 +++++++ scip-java/src/main/resources/scip-java/scip_java.bzl | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 examples/bazel-example/src/main/java/srcjar_example/Baz.java diff --git a/examples/bazel-example/src/main/java/srcjar_example/BUILD b/examples/bazel-example/src/main/java/srcjar_example/BUILD index ff65eb50..7c337c36 100644 --- a/examples/bazel-example/src/main/java/srcjar_example/BUILD +++ b/examples/bazel-example/src/main/java/srcjar_example/BUILD @@ -11,3 +11,12 @@ java_library( ":generated-srcjar", ], ) + +java_library( + name = "other_library", + srcs = [ + "Baz.java", # create a new file in source at test/Baz.java, alongside test/Foo.java + ":generated-srcjar", + ], +) + diff --git a/examples/bazel-example/src/main/java/srcjar_example/Baz.java b/examples/bazel-example/src/main/java/srcjar_example/Baz.java new file mode 100644 index 00000000..d7b7f387 --- /dev/null +++ b/examples/bazel-example/src/main/java/srcjar_example/Baz.java @@ -0,0 +1,7 @@ +package com.testing; + +public class Baz { + public Bar baz(Bar value) { + return value; + } +} diff --git a/scip-java/src/main/resources/scip-java/scip_java.bzl b/scip-java/src/main/resources/scip-java/scip_java.bzl index 8976d4e6..ec38181e 100644 --- a/scip-java/src/main/resources/scip-java/scip_java.bzl +++ b/scip-java/src/main/resources/scip-java/scip_java.bzl @@ -70,7 +70,7 @@ def _scip_java(target, ctx): output_dir = [] for source_jar in source_jars: - dir = ctx.actions.declare_directory("extracted_srcjar/" + source_jar.short_path) + dir = ctx.actions.declare_directory(ctx.label.name + "/extracted_srcjar/" + source_jar.short_path) output_dir.append(dir) ctx.actions.run_shell( From fbf2cf1498397fc9d3da070046e701152cba87cf Mon Sep 17 00:00:00 2001 From: Anton Sviridov Date: Wed, 30 Oct 2024 14:41:11 +0000 Subject: [PATCH 2/2] Handle empty source jars --- examples/bazel-example/src/main/java/srcjar_example/BUILD | 8 +++++++- scip-java/src/main/resources/scip-java/scip_java.bzl | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/examples/bazel-example/src/main/java/srcjar_example/BUILD b/examples/bazel-example/src/main/java/srcjar_example/BUILD index 7c337c36..dce48b36 100644 --- a/examples/bazel-example/src/main/java/srcjar_example/BUILD +++ b/examples/bazel-example/src/main/java/srcjar_example/BUILD @@ -4,11 +4,18 @@ genrule( cmd = "echo 'package com.testing; public class Bar {};' > Bar.java && jar cf $(@) Bar.java", ) +genrule( + name = "empty-srcjar", + outs = ["empty.srcjar"], + cmd = "touch test.txt && zip $(@) test.txt && zip -d $(@) test.txt", +) + java_library( name = "testing", srcs = [ "Foo.java", ":generated-srcjar", + ":empty-srcjar" ], ) @@ -19,4 +26,3 @@ java_library( ":generated-srcjar", ], ) - diff --git a/scip-java/src/main/resources/scip-java/scip_java.bzl b/scip-java/src/main/resources/scip-java/scip_java.bzl index ec38181e..1525597f 100644 --- a/scip-java/src/main/resources/scip-java/scip_java.bzl +++ b/scip-java/src/main/resources/scip-java/scip_java.bzl @@ -78,7 +78,7 @@ def _scip_java(target, ctx): outputs = [dir], mnemonic = "ExtractSourceJars", command = """ - unzip {input_file} -d {output_dir} + [ "$(unzip -q -l {input_file} | wc -l)" -eq 0 ] || unzip {input_file} -d {output_dir} """.format( output_dir = dir.path, input_file = source_jar.path,