Implement Bazel build
To run the tests:
bazel test //...
To build the Gerrit plugin API, run:
bazel build gerrit-plugin-api:plugin-api_deploy.jar
To build the Gerrit extension API, run:
bazel build gerrit-extension-api:extension-api_deploy.jar
TODOs:
Licenses
Reduce visibility (all public for now)
Generate HTML Documentation
Core plugins
gerrit_plugin() rule to build plugins in tree and standalone modes
GWT UI (only gwt_module() skylark rule is provided, no gwt_binary())
PolyGerrit UI
WAR
Publish artifacts to Maven Central
Ask Bazel team to add Gerrit to their CI on ci.bazel.io
Contributed-By: Han-Wen Nienhuys <hanwen@google.com>
Change-Id: I9a86e670882a44a5c966579cdeb8ed79b1590de3
diff --git a/gerrit-pgm/BUILD b/gerrit-pgm/BUILD
new file mode 100644
index 0000000..59b371a
--- /dev/null
+++ b/gerrit-pgm/BUILD
@@ -0,0 +1,161 @@
+load('//tools/bzl:java.bzl', 'java_library2')
+load('//tools/bzl:junit.bzl', 'junit_tests')
+
+SRCS = 'src/main/java/com/google/gerrit/pgm/'
+RSRCS = 'src/main/resources/com/google/gerrit/pgm/'
+
+INIT_API_SRCS = glob([SRCS + 'init/api/*.java'])
+
+BASE_JETTY_DEPS = [
+ '//gerrit-common:server',
+ '//gerrit-extension-api:api',
+ '//gerrit-gwtexpui:linker_server',
+ '//gerrit-gwtexpui:server',
+ '//gerrit-httpd:httpd',
+ '//gerrit-server:server',
+ '//gerrit-sshd:sshd',
+ '//lib:guava',
+ '//lib/guice:guice',
+ '//lib/guice:guice-assistedinject',
+ '//lib/guice:guice-servlet',
+ '//lib/jgit/org.eclipse.jgit:jgit',
+ '//lib/log:api',
+ '//lib/log:log4j',
+]
+
+DEPS = BASE_JETTY_DEPS + [
+ '//gerrit-reviewdb:server',
+ '//lib/log:jsonevent-layout',
+]
+
+java_library(
+ name = 'init-api',
+ srcs = INIT_API_SRCS,
+ deps = DEPS + ['//gerrit-common:annotations'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'init',
+ srcs = glob([SRCS + 'init/*.java']),
+ resources = glob([RSRCS + 'init/*']),
+ deps = DEPS + [
+ ':init-api',
+ ':util',
+ '//gerrit-common:annotations',
+ '//gerrit-launcher:launcher', # We want this dep to be provided_deps
+ '//gerrit-lucene:lucene',
+ '//lib:args4j',
+ '//lib:derby',
+ '//lib:gwtjsonrpc',
+ '//lib:gwtorm',
+ '//lib:h2',
+ '//lib/commons:validator',
+ '//lib/mina:sshd',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+REST_UTIL_DEPS = [
+ '//gerrit-cache-h2:cache-h2',
+ '//gerrit-util-cli:cli',
+ '//lib:args4j',
+ '//lib:gwtorm',
+ '//lib/commons:dbcp',
+]
+
+java_library(
+ name = 'util',
+ exports = [':util-nodep'],
+ runtime_deps = DEPS + REST_UTIL_DEPS,
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'util-nodep',
+ srcs = glob([SRCS + 'util/*.java']),
+ deps = DEPS + REST_UTIL_DEPS, # We want all these deps to be provided_deps
+ visibility = ['//visibility:public'],
+)
+
+JETTY_DEPS = [
+ '//lib/jetty:jmx',
+ '//lib/jetty:server',
+ '//lib/jetty:servlet',
+]
+
+java_library(
+ name = 'http',
+ runtime_deps = DEPS + JETTY_DEPS,
+ exports = [':http-jetty'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'http-jetty',
+ srcs = glob([SRCS + 'http/jetty/*.java']),
+ deps = JETTY_DEPS + BASE_JETTY_DEPS + [ # We want all these deps to be provided_deps
+ '//gerrit-launcher:launcher',
+ '//gerrit-reviewdb:client',
+ '//lib:servlet-api-3_1',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+REST_PGM_DEPS = [
+ ':http',
+ ':init',
+ ':init-api',
+ ':util',
+ '//gerrit-cache-h2:cache-h2',
+ '//gerrit-gpg:gpg',
+ '//gerrit-lucene:lucene',
+ '//gerrit-oauth:oauth',
+ '//gerrit-openid:openid',
+ '//lib:args4j',
+ '//lib:gwtorm',
+ '//lib:protobuf',
+ '//lib:servlet-api-3_1-without-neverlink',
+ '//lib/auto:auto-value',
+ '//lib/prolog:cafeteria',
+ '//lib/prolog:compiler',
+ '//lib/prolog:runtime',
+]
+
+java_library(
+ name = 'pgm',
+ resources = glob([RSRCS + '*']),
+ runtime_deps = DEPS + REST_PGM_DEPS + [
+ ':daemon',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+# no transitive deps, used for gerrit-acceptance-framework
+java_library(
+ name = 'daemon',
+ srcs = glob([SRCS + '*.java', SRCS + 'rules/*.java']),
+ resources = glob([RSRCS + '*']),
+ deps = DEPS + REST_PGM_DEPS + [ # We want all these deps to be provided_deps
+ '//gerrit-launcher:launcher',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+junit_tests(
+ name = 'pgm_tests',
+ srcs = glob(['src/test/java/**/*.java']),
+ deps = [
+ ':init',
+ ':init-api',
+ ':pgm',
+ '//gerrit-common:server',
+ '//gerrit-server:server',
+ '//lib:guava',
+ '//lib:junit',
+ '//lib/easymock:easymock',
+ '//lib/guice:guice',
+ '//lib/jgit/org.eclipse.jgit:jgit',
+ '//lib/jgit/org.eclipse.jgit.junit:junit',
+ ],
+)