From e51b745efa34ea5c9f96e2beaf4428b56729b982 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Sun, 6 Nov 2016 18:07:10 +0100 Subject: [PATCH] Bazel: Allow to consume jgit from development tree Now that Bazel build for JGit is fully implemented, we can document the process of routing the JGit dependency to the development tree instead of consuming it from Central or ~/.m2 local repository: 1. Activate local jgit repository in WORKSPACE file: local_repository( name = "jgit", path = "/home//projects/jgit", ) 2. Uncomment alias to jgit repository in lib/jgit/**/BUILD files. It shouldn't be needed and is tracked under this issue upstream: [1]: alias( name = "jgit-alias", actual = select({ "@//lib:jgit-dev": "@jgit//org.eclipse.jgit:jgit", "//conditions:default": "@jgit_lib//jar", }), visibility = ["//visibility:public"], ) Test plan: Update local JGit tree, run tests and verify that local JGit tree modifications are relfected in gerrit build: $ bazel build --define jgit-dev=1 headless To consume JGit from Central, do not pass jgit-dev=1: $ bazel test ... [1] https://github.com/bazelbuild/bazel/issues/2707 Change-Id: I1b0fee7df802f6cbd54acbb0bc73157e2b8bc7cf --- Documentation/dev-bazel.txt | 10 ++++++++++ WORKSPACE | 12 +++++++++++- gerrit-patch-jgit/BUILD | 4 ++-- lib/jgit/BUILD | 7 +++++++ lib/jgit/org.eclipse.jgit.archive/BUILD | 5 ++++- lib/jgit/org.eclipse.jgit.http.server/BUILD | 5 ++++- lib/jgit/org.eclipse.jgit.junit/BUILD | 6 +++++- lib/jgit/org.eclipse.jgit/BUILD | 14 +++++++++++++- tools/bzl/gwt.bzl | 2 +- 9 files changed, 57 insertions(+), 8 deletions(-) diff --git a/Documentation/dev-bazel.txt b/Documentation/dev-bazel.txt index be03305bd6..fb884d3c86 100644 --- a/Documentation/dev-bazel.txt +++ b/Documentation/dev-bazel.txt @@ -352,6 +352,16 @@ And corresponding WORKSPACE excerpt: ) ---- +[[consume-jgit-from-development-tree]] + +To consume the JGit dependency from the development tree, uncomment +`local_repository` rule for `jgit` in WORKSPACE file and uncomment +the lines in the `lib/jgit/**/BUILD` files for `jgit` rule aliases. +`jgit-dev=1` must be passed in to bazel: + +---- + $ bazel test --define jgit-dev=1 ... +---- [[clean-cache]] === Cleaning The download cache diff --git a/WORKSPACE b/WORKSPACE index fc074fcaa0..e2dd4105d1 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -132,8 +132,18 @@ maven_jar( load("//lib/jgit:jgit.bzl", "JGIT_VERS", "JGIT_REPO", "JGIT_SHA1", "JGIT_SRC_SHA1", "JGIT_SERVLET_SHA1", "JGIT_ARCHIVE_SHA1", "JGIT_JUNIT_SHA1") +# +# Uncomment jgit repository to route JGit dependency to development tree. +# Pass jgit-dev=1 in to bazel: `bazel test --define jgit-dev=1 ...` +# Due to: https://github.com/bazelbuild/bazel/issues/2707 +# aliases to jgit should be uncommented in lib/jgit/**/BUILD files. +#local_repository( +# name = "jgit", +# path = "/home//projects/jgit", +#) + maven_jar( - name = "jgit", + name = "jgit_lib", artifact = "org.eclipse.jgit:org.eclipse.jgit:" + JGIT_VERS, repository = JGIT_REPO, sha1 = JGIT_SHA1, diff --git a/gerrit-patch-jgit/BUILD b/gerrit-patch-jgit/BUILD index e3d3cbdbcf..1a8fcd4477 100644 --- a/gerrit-patch-jgit/BUILD +++ b/gerrit-patch-jgit/BUILD @@ -28,12 +28,12 @@ genrule2( name = "jgit_edit_src", outs = ["edit.srcjar"], cmd = " && ".join([ - "unzip -qd $$TMP $(location @jgit//jar:src) " + + "unzip -qd $$TMP $(location //lib/jgit/org.eclipse.jgit:jgit-source) " + "org/eclipse/jgit/diff/Edit.java", "cd $$TMP", "zip -Dq $$ROOT/$@ org/eclipse/jgit/diff/Edit.java", ]), - tools = ["@jgit//jar:src"], + tools = ["//lib/jgit/org.eclipse.jgit:jgit-source"], ) java_library( diff --git a/lib/jgit/BUILD b/lib/jgit/BUILD index e69de29bb2..f0d25e6638 100644 --- a/lib/jgit/BUILD +++ b/lib/jgit/BUILD @@ -0,0 +1,7 @@ +config_setting( + name = "dev", + values = { + "define": "jgit-dev=1", + }, + visibility = ["//visibility:public"], +) diff --git a/lib/jgit/org.eclipse.jgit.archive/BUILD b/lib/jgit/org.eclipse.jgit.archive/BUILD index d4e0a8ce4f..9a5633c92e 100644 --- a/lib/jgit/org.eclipse.jgit.archive/BUILD +++ b/lib/jgit/org.eclipse.jgit.archive/BUILD @@ -2,6 +2,9 @@ java_library( name = "jgit-archive", data = ["//lib:LICENSE-jgit"], visibility = ["//visibility:public"], - exports = ["@jgit_archive//jar"], + exports = select({ + # "//lib/jgit:dev": ["@jgit//org.eclipse.jgit.archive:jgit-archive"], + "//conditions:default": ["@jgit_archive//jar"], + }), runtime_deps = ["//lib/jgit/org.eclipse.jgit:jgit"], ) diff --git a/lib/jgit/org.eclipse.jgit.http.server/BUILD b/lib/jgit/org.eclipse.jgit.http.server/BUILD index c448c4b2b9..24a58ab4cf 100644 --- a/lib/jgit/org.eclipse.jgit.http.server/BUILD +++ b/lib/jgit/org.eclipse.jgit.http.server/BUILD @@ -2,6 +2,9 @@ java_library( name = "jgit-servlet", data = ["//lib:LICENSE-jgit"], visibility = ["//visibility:public"], - exports = ["@jgit_servlet//jar"], + exports = select({ + # "//lib/jgit:dev": ["@jgit//org.eclipse.jgit.http.server:jgit-servlet"], + "//conditions:default": ["@jgit_servlet//jar"], + }), runtime_deps = ["//lib/jgit/org.eclipse.jgit:jgit"], ) diff --git a/lib/jgit/org.eclipse.jgit.junit/BUILD b/lib/jgit/org.eclipse.jgit.junit/BUILD index 2c8966a2fe..ebfefec134 100644 --- a/lib/jgit/org.eclipse.jgit.junit/BUILD +++ b/lib/jgit/org.eclipse.jgit.junit/BUILD @@ -1,7 +1,11 @@ java_library( name = "junit", + testonly = 1, data = ["//lib:LICENSE-DO_NOT_DISTRIBUTE"], visibility = ["//visibility:public"], - exports = ["@jgit_junit//jar"], + exports = select({ + # "//lib/jgit:dev": ["@jgit//org.eclipse.jgit.junit:junit"], + "//conditions:default": ["@jgit_junit//jar"], + }), runtime_deps = ["//lib/jgit/org.eclipse.jgit:jgit"], ) diff --git a/lib/jgit/org.eclipse.jgit/BUILD b/lib/jgit/org.eclipse.jgit/BUILD index 33de929467..38bfd4b011 100644 --- a/lib/jgit/org.eclipse.jgit/BUILD +++ b/lib/jgit/org.eclipse.jgit/BUILD @@ -2,10 +2,22 @@ java_library( name = "jgit", data = ["//lib:LICENSE-jgit"], visibility = ["//visibility:public"], - exports = ["@jgit//jar"], + exports = select({ + # "//lib/jgit:dev": ["@jgit//org.eclipse.jgit:jgit"], + "//conditions:default": ["@jgit_lib//jar"], + }), runtime_deps = [":javaewah"], ) +alias( + name = "jgit-source", + actual = select({ + # "//lib/jgit:dev": "@jgit//org.eclipse.jgit:libjgit-src.jar", + "//conditions:default": "@jgit_lib//jar:src", + }), + visibility = ["//visibility:public"], +) + java_library( name = "javaewah", data = ["//lib:LICENSE-Apache2.0"], diff --git a/tools/bzl/gwt.bzl b/tools/bzl/gwt.bzl index 4dcb9ffab9..deeb5d58dd 100644 --- a/tools/bzl/gwt.bzl +++ b/tools/bzl/gwt.bzl @@ -85,7 +85,7 @@ DEPS = GWT_TRANSITIVE_DEPS + [ "//gerrit-gwtexpui:CSS", "//lib:gwtjsonrpc", "//lib/gwt:dev", - "@jgit//jar:src", + "//lib/jgit/org.eclipse.jgit:jgit-source", ] USER_AGENT_XML = """