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)