]> source.dussan.org Git - jgit.git/commitdiff
Implement initial framework of Bazel build 27/84527/10
authorDavid Ostrovsky <david@ostrovsky.org>
Sun, 6 Nov 2016 08:06:54 +0000 (09:06 +0100)
committerDavid Pursehouse <david.pursehouse@gmail.com>
Wed, 18 Jan 2017 23:13:16 +0000 (19:13 -0400)
The initial implementation only builds the packages consumed by
Gerrit Code Review.

Test build and execution is not implemented.

We prefer to consume maven_jar custom rule from bazlets repository,
for the same reasons as in the Gerrit project:

* Caching artifacts across different clones and projects
* Exposing source classifiers and neverlink artifact

TEST PLAN:

  $ bazel build :all
  $ unzip -t bazel-genfiles/all.zip
  Archive: bazel-genfiles/all.zip
    testing: libjgit-archive.jar      OK
    testing: libjgit-servlet.jar      OK
    testing: libjgit.jar              OK
    testing: libjunit.jar             OK
  No errors detected in compressed data of bazel-genfiles/all.zip.

Change-Id: Ia837ce95d9829fe2515f37b7a04a71a4598672a0
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
.gitignore
BUILD [new file with mode: 0644]
WORKSPACE [new file with mode: 0644]
org.eclipse.jgit.archive/BUILD [new file with mode: 0644]
org.eclipse.jgit.http.server/BUILD [new file with mode: 0644]
org.eclipse.jgit.junit/BUILD [new file with mode: 0644]
org.eclipse.jgit/BUILD [new file with mode: 0644]
tools/BUILD [new file with mode: 0644]
tools/bazlets.bzl [new file with mode: 0644]

index e78f8fd9b19eefa3dd42a89634bdab95fc49ec0a..b52fac6f2eea42a0068372735463deae2605e89a 100644 (file)
@@ -4,3 +4,9 @@
 /buck-out
 /target
 infer-out
+bazel-bin
+bazel-genfiles
+bazel-jgit
+bazel-out
+bazel-testlogs
+*~
diff --git a/BUILD b/BUILD
new file mode 100644 (file)
index 0000000..79c5e3f
--- /dev/null
+++ b/BUILD
@@ -0,0 +1,19 @@
+package(default_visibility = ['//visibility:public'])
+
+genrule(
+  name = 'all',
+  srcs = [
+    '//org.eclipse.jgit:jgit',
+    '//org.eclipse.jgit.archive:jgit-archive',
+    '//org.eclipse.jgit.http.server:jgit-servlet',
+    '//org.eclipse.jgit.junit:junit',
+  ],
+  cmd = ' && '.join([
+    'p=$$PWD',
+    't=$$(mktemp -d || mktemp -d -t bazel-tmp)',
+    'cp $(SRCS) $$t',
+    'cd $$t',
+    'zip -qr $$p/$@ .',
+  ]),
+  outs = ['all.zip'],
+)
diff --git a/WORKSPACE b/WORKSPACE
new file mode 100644 (file)
index 0000000..902c6b2
--- /dev/null
+++ b/WORKSPACE
@@ -0,0 +1,97 @@
+workspace(name="jgit")
+
+load("//tools:bazlets.bzl", "load_bazlets")
+load_bazlets(commit = "3afbeab55ece585dbfc7a980bf7214b24ddbbe86")
+load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl",
+     "maven_jar"
+)
+
+maven_jar(
+  name = 'jsch',
+  artifact = 'com.jcraft:jsch:0.1.53',
+  sha1 = '658b682d5c817b27ae795637dfec047c63d29935',
+)
+
+maven_jar(
+  name = 'javaewah',
+  artifact = 'com.googlecode.javaewah:JavaEWAH:1.1.6',
+  sha1 = '94ad16d728b374d65bd897625f3fbb3da223a2b6',
+)
+
+maven_jar(
+  name = 'httpclient',
+  artifact = 'org.apache.httpcomponents:httpclient:4.3.6',
+  sha1 = '4c47155e3e6c9a41a28db36680b828ced53b8af4',
+)
+
+maven_jar(
+  name = 'httpcore',
+  artifact = 'org.apache.httpcomponents:httpcore:4.3.3',
+  sha1 = 'f91b7a4aadc5cf486df6e4634748d7dd7a73f06d',
+)
+
+maven_jar(
+  name = 'commons_logging',
+  artifact = 'commons-logging:commons-logging:1.1.3',
+  sha1 = 'f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f',
+)
+
+maven_jar(
+  name = 'log_api',
+  artifact = 'org.slf4j:slf4j-api:1.7.2',
+  sha1 = '0081d61b7f33ebeab314e07de0cc596f8e858d97',
+)
+
+maven_jar(
+  name = 'slf4j_simple',
+  artifact = 'org.slf4j:slf4j-simple:1.7.2',
+  sha1 = '760055906d7353ba4f7ce1b8908bc6b2e91f39fa',
+)
+
+maven_jar(
+  name = 'servlet_api_3_1',
+  artifact = 'javax.servlet:javax.servlet-api:3.1.0',
+  sha1 = '3cd63d075497751784b2fa84be59432f4905bf7c',
+)
+
+maven_jar(
+  name = 'commons_compress',
+  artifact = 'org.apache.commons:commons-compress:1.6',
+  sha1 = 'c7d9b580aff9e9f1998361f16578e63e5c064699',
+)
+
+maven_jar(
+  name = 'tukaani_xz',
+  artifact = 'org.tukaani:xz:1.3',
+  sha1 = '66db21c8484120cb6a51b5b3ea47b6f383942bec',
+)
+
+maven_jar(
+  name = 'args4j',
+  artifact = 'args4j:args4j:2.0.15',
+  sha1 = '139441471327b9cc6d56436cb2a31e60eb6ed2ba',
+)
+
+maven_jar(
+  name = 'junit',
+  artifact = 'junit:junit:4.11',
+  sha1 = '4e031bb61df09069aeb2bffb4019e7a5034a4ee0',
+)
+
+maven_jar(
+  name = 'hamcrest_library',
+  artifact = 'org.hamcrest:hamcrest-library:1.3',
+  sha1 = '4785a3c21320980282f9f33d0d1264a69040538f',
+)
+
+maven_jar(
+  name = 'hamcrest_core',
+  artifact = 'org.hamcrest:hamcrest-core:1.3',
+  sha1 = '42a25dc3219429f0e5d060061f71acb49bf010a0',
+)
+
+maven_jar(
+  name = 'gson',
+  artifact = 'com.google.code.gson:gson:2.2.4',
+  sha1 = 'a60a5e993c98c864010053cb901b7eab25306568',
+)
diff --git a/org.eclipse.jgit.archive/BUILD b/org.eclipse.jgit.archive/BUILD
new file mode 100644 (file)
index 0000000..c74f6d8
--- /dev/null
@@ -0,0 +1,15 @@
+package(default_visibility = ['//visibility:public'])
+
+java_library(
+  name = 'jgit-archive',
+  srcs = glob(
+    ['src/**'],
+    exclude = ['src/org/eclipse/jgit/archive/FormatActivator.java'],
+  ),
+  resources = glob(['resources/**']),
+  resource_strip_prefix = 'org.eclipse.jgit.archive/resources',
+  deps = [ # We want these deps to be provided_deps
+    '//org.eclipse.jgit:jgit',
+    '@commons_compress//jar',
+  ],
+)
diff --git a/org.eclipse.jgit.http.server/BUILD b/org.eclipse.jgit.http.server/BUILD
new file mode 100644 (file)
index 0000000..88dc804
--- /dev/null
@@ -0,0 +1,12 @@
+package(default_visibility = ['//visibility:public'])
+
+java_library(
+  name = 'jgit-servlet',
+  srcs = glob(['src/**']),
+  resources = glob(['resources/**']),
+  resource_strip_prefix = 'org.eclipse.jgit.http.server/resources',
+  deps = [ # We want these deps to be provided_deps
+    '//org.eclipse.jgit:jgit',
+    '@servlet_api_3_1//jar',
+  ],
+)
diff --git a/org.eclipse.jgit.junit/BUILD b/org.eclipse.jgit.junit/BUILD
new file mode 100644 (file)
index 0000000..e0b358a
--- /dev/null
@@ -0,0 +1,12 @@
+package(default_visibility = ['//visibility:public'])
+
+java_library(
+  name = 'junit',
+  srcs = glob(['src/**']),
+  resources = glob(['resources/**']),
+  resource_strip_prefix = 'org.eclipse.jgit.junit/resources',
+  deps = [ # We want these deps to be provided_deps
+    '//org.eclipse.jgit:jgit',
+    '@junit//jar',
+  ],
+)
diff --git a/org.eclipse.jgit/BUILD b/org.eclipse.jgit/BUILD
new file mode 100644 (file)
index 0000000..2abf228
--- /dev/null
@@ -0,0 +1,29 @@
+package(default_visibility = ['//visibility:public'])
+
+INSECURE_CIPHER_FACTORY = [
+  'src/org/eclipse/jgit/transport/InsecureCipherFactory.java',
+]
+
+SRCS = glob(['src/**'], exclude=INSECURE_CIPHER_FACTORY)
+RESOURCES = glob(['resources/**'])
+
+java_library(
+  name = 'jgit',
+  srcs = SRCS,
+  resources = RESOURCES,
+  resource_strip_prefix = 'org.eclipse.jgit/resources',
+  deps = [
+    ':insecure_cipher_factory',
+    '@javaewah//jar',
+    '@jsch//jar',
+    '@httpclient//jar',
+    '@servlet_api_3_1//jar',
+    '@log_api//jar',
+  ],
+)
+
+java_library(
+  name = 'insecure_cipher_factory',
+  srcs = INSECURE_CIPHER_FACTORY,
+  javacopts = ['-Xep:InsecureCipherMode:OFF'],
+)
diff --git a/tools/BUILD b/tools/BUILD
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tools/bazlets.bzl b/tools/bazlets.bzl
new file mode 100644 (file)
index 0000000..e14e488
--- /dev/null
@@ -0,0 +1,17 @@
+NAME = "com_googlesource_gerrit_bazlets"
+
+def load_bazlets(
+    commit,
+    local_path = None
+  ):
+  if not local_path:
+      native.git_repository(
+          name = NAME,
+          remote = "https://gerrit.googlesource.com/bazlets",
+          commit = commit,
+      )
+  else:
+      native.local_repository(
+          name = NAME,
+          path = local_path,
+      )