Bazel: add support for unsigning jar files
One test is still failing:
HttpPushForReviewIT#pushForMasterWithTopicOption()
Change-Id: I257f443557a998f0c2190bd07f01547368aeb1e1
diff --git a/lib/jgit/org.eclipse.jgit.http.server/BUILD b/lib/jgit/org.eclipse.jgit.http.server/BUILD
index 6a442cc..decbd31 100644
--- a/lib/jgit/org.eclipse.jgit.http.server/BUILD
+++ b/lib/jgit/org.eclipse.jgit.http.server/BUILD
@@ -1,6 +1,14 @@
+load('//tools/bzl:unsign.bzl', 'unsign_jars')
+
java_library(
- name = 'jgit-servlet',
+ name = 'jgit-servlet-signed',
exports = ['@jgit_servlet//jar'],
runtime_deps = ['//lib/jgit/org.eclipse.jgit:jgit'],
visibility = ['//visibility:public'],
)
+
+unsign_jars(
+ name = 'jgit-servlet',
+ deps = [':jgit-servlet-signed'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/jgit/org.eclipse.jgit.junit/BUILD b/lib/jgit/org.eclipse.jgit.junit/BUILD
index d00b82c9..c743631 100644
--- a/lib/jgit/org.eclipse.jgit.junit/BUILD
+++ b/lib/jgit/org.eclipse.jgit.junit/BUILD
@@ -1,6 +1,14 @@
+load('//tools/bzl:unsign.bzl', 'unsign_jars')
+
java_library(
- name = 'junit',
+ name = 'junit-signed',
exports = ['@jgit_junit//jar'],
runtime_deps = ['//lib/jgit/org.eclipse.jgit:jgit'],
visibility = ['//visibility:public'],
)
+
+unsign_jars(
+ name = 'junit',
+ deps = [':junit-signed'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/jgit/org.eclipse.jgit/BUILD b/lib/jgit/org.eclipse.jgit/BUILD
index a1f9cad..2d41ad6 100644
--- a/lib/jgit/org.eclipse.jgit/BUILD
+++ b/lib/jgit/org.eclipse.jgit/BUILD
@@ -1,5 +1,7 @@
+load('//tools/bzl:unsign.bzl', 'unsign_jars')
+
java_library(
- name = 'jgit',
+ name = 'jgit-signed',
exports = ['@jgit//jar'],
runtime_deps = [':ewah'],
visibility = ['//visibility:public'],
@@ -10,3 +12,9 @@
exports = ['@ewah//jar'],
visibility = ['//visibility:public'],
)
+
+unsign_jars(
+ name = 'jgit',
+ deps = [':jgit-signed'],
+ visibility = ['//visibility:public'],
+)
diff --git a/tools/bzl/unsign.bzl b/tools/bzl/unsign.bzl
new file mode 100644
index 0000000..f42986a
--- /dev/null
+++ b/tools/bzl/unsign.bzl
@@ -0,0 +1,16 @@
+
+def unsign_jars(name, deps, **kwargs):
+ """unsign_jars collects its dependencies into a single java_import.
+
+ As a side effect, the signature is removed.
+ """
+ native.java_binary(
+ name = name + '-unsigned-binary',
+ runtime_deps = deps,
+ main_class = 'dummy'
+ )
+
+ native.java_import(
+ name = name,
+ jars = [ name + '-unsigned-binary_deploy.jar' ],
+ **kwargs)