Update buck build for strict dependencies
java_library() targets must now list every dependency they need for
an import. This permits buck to run more targets in parallel as it
has a better view of the dependency graph, and opens the door for
buck to make even more optimizations in the future.
Change-Id: I132bf47a725e44ba5950ba6ca76bfa72c3876906
diff --git a/.buckversion b/.buckversion
new file mode 100644
index 0000000..dcaab35
--- /dev/null
+++ b/.buckversion
@@ -0,0 +1 @@
+c4df74bef4e101a7e5d0176831825b7946ea64a3
diff --git a/BUCK b/BUCK
index baea9e1..d467528 100644
--- a/BUCK
+++ b/BUCK
@@ -26,6 +26,7 @@
'//lib/guice:guice-servlet',
'//lib:servlet-api-3_0',
],
+ export_deps = True,
visibility = ['PUBLIC'],
)
@@ -37,6 +38,7 @@
'//gerrit-sshd:sshd',
'//gerrit-httpd:httpd',
],
+ export_deps = True,
visibility = ['PUBLIC'],
)
diff --git a/gerrit-acceptance-tests/BUCK b/gerrit-acceptance-tests/BUCK
index dd93223..9e31d66 100644
--- a/gerrit-acceptance-tests/BUCK
+++ b/gerrit-acceptance-tests/BUCK
@@ -8,13 +8,27 @@
name = 'acceptance_tests',
srcs = glob(['src/test/java/**/*.java']),
deps = TEST + [
+ '//gerrit-common:server',
+ '//gerrit-extension-api:api',
'//gerrit-launcher:launcher',
'//gerrit-pgm:pgm',
- '//lib:servlet-api-3_0',
+ '//gerrit-reviewdb:server',
+
+ '//lib:args4j',
+ '//lib:gson',
+ '//lib:guava',
+ '//lib:gwtorm',
'//lib:h2',
+ '//lib:jsch',
+ '//lib:jsr305',
'//lib:junit',
+ '//lib:servlet-api-3_0',
+
+ '//lib/guice:guice',
+ '//lib/jgit:jgit',
'//lib/jgit:junit',
'//lib/openid:httpclient',
+ '//lib/openid:httpcore',
],
source_under_test = TEST,
labels = ['slow'],
diff --git a/gerrit-antlr/BUCK b/gerrit-antlr/BUCK
index a37da60..0e19320 100644
--- a/gerrit-antlr/BUCK
+++ b/gerrit-antlr/BUCK
@@ -2,16 +2,16 @@
'QueryLexer.java',
'QueryParser.java',
]
-
-java_library(
- name = 'antlr',
- deps = [':query'],
- visibility = ['PUBLIC'],
-)
+PARSER_DEPS = [
+ ':query_antlr',
+ ':query_exception',
+ '//lib/antlr:java_runtime',
+]
java_library(
name = 'query_exception',
srcs = ['src/main/java/com/google/gerrit/server/query/QueryParseException.java'],
+ visibility = ['PUBLIC'],
)
genantlr(
@@ -20,14 +20,11 @@
outs = ANTLR_OUTS,
)
+# Hack necessary to expose ANTLR generated code as JAR to Eclipse.
java_library(
name = 'lib',
srcs = [genfile(f) for f in ANTLR_OUTS],
- deps = [
- ':query_antlr',
- ':query_exception',
- '//lib/antlr:java_runtime',
- ],
+ deps = PARSER_DEPS,
)
genrule(
@@ -35,15 +32,12 @@
cmd = 'ln -s $SRCS $OUT',
srcs = [genfile('lib__lib__output/lib.jar')],
deps = [':lib'],
- out = 'query.jar',
+ out = 'query_parser.jar',
)
prebuilt_jar(
- name = 'query',
- binary_jar = genfile('query.jar'),
- deps = [
- ':query_link',
- ':query_exception',
- '//lib/antlr:java_runtime',
- ],
+ name = 'query_parser',
+ binary_jar = genfile('query_parser.jar'),
+ deps = PARSER_DEPS + [':query_link'],
+ visibility = ['PUBLIC'],
)
diff --git a/gerrit-cache-h2/BUCK b/gerrit-cache-h2/BUCK
index 638f3dc..d3e8994 100644
--- a/gerrit-cache-h2/BUCK
+++ b/gerrit-cache-h2/BUCK
@@ -2,9 +2,13 @@
name = 'cache-h2',
srcs = glob(['src/main/java/**/*.java']),
deps = [
+ '//gerrit-extension-api:api',
'//gerrit-server:server',
'//lib:guava',
'//lib:h2',
+ '//lib/guice:guice',
+ '//lib/jgit:jgit',
+ '//lib/log:api',
],
visibility = ['PUBLIC'],
)
diff --git a/gerrit-common/BUCK b/gerrit-common/BUCK
index 8dfdbb7..07bbcae 100644
--- a/gerrit-common/BUCK
+++ b/gerrit-common/BUCK
@@ -9,7 +9,10 @@
'//gerrit-patch-jgit:client',
'//gerrit-prettify:client',
'//gerrit-reviewdb:client',
+ '//lib:gwtjsonrpc',
+ '//lib:gwtorm',
'//lib:jsr305',
+ '//lib/jgit:jgit',
],
visibility = ['PUBLIC'],
)
@@ -21,7 +24,10 @@
'//gerrit-patch-jgit:server',
'//gerrit-prettify:server',
'//gerrit-reviewdb:server',
+ '//lib:gwtjsonrpc',
+ '//lib:gwtorm',
'//lib:jsr305',
+ '//lib/jgit:jgit',
],
visibility = ['PUBLIC'],
)
diff --git a/gerrit-extension-api/BUCK b/gerrit-extension-api/BUCK
index 25aba72..75539f6 100644
--- a/gerrit-extension-api/BUCK
+++ b/gerrit-extension-api/BUCK
@@ -1,10 +1,6 @@
java_library2(
name = 'api',
srcs = glob(['src/main/java/com/google/gerrit/extensions/**/*.java']),
- compile_deps = [
- '//lib/guice:guice',
- '//lib/guice:guice-servlet',
- '//lib:servlet-api-3_0',
- ],
+ compile_deps = ['//lib/guice:guice'],
visibility = ['PUBLIC'],
)
diff --git a/gerrit-gwtui/BUCK b/gerrit-gwtui/BUCK
index c9d87c4..dc47d82 100644
--- a/gerrit-gwtui/BUCK
+++ b/gerrit-gwtui/BUCK
@@ -72,7 +72,10 @@
'//gerrit-reviewdb:client',
'//lib:gwtjsonrpc',
'//lib:gwtjsonrpc_src',
+ '//lib:gwtorm',
+ '//lib:jsr305',
'//lib/gwt:user',
+ '//lib/jgit:jgit',
],
visibility = [
'//tools/eclipse:classpath',
@@ -87,6 +90,7 @@
':ui_module',
'//lib:junit',
'//lib/gwt:dev',
+ '//lib/jgit:jgit',
],
source_under_test = [':ui_module'],
)
diff --git a/gerrit-httpd/BUCK b/gerrit-httpd/BUCK
index 4b1981b..51f951d 100644
--- a/gerrit-httpd/BUCK
+++ b/gerrit-httpd/BUCK
@@ -3,16 +3,33 @@
srcs = glob(['src/main/java/**/*.java']),
resources = glob(['src/main/resources/**/*']),
deps = [
+ '//gerrit-antlr:query_exception',
+ '//gerrit-common:server',
+ '//gerrit-extension-api:api',
'//gerrit-gwtexpui:linker_server',
'//gerrit-gwtexpui:server',
+ '//gerrit-patch-jgit:server',
'//gerrit-prettify:server',
+ '//gerrit-reviewdb:server',
'//gerrit-server:server',
+ '//gerrit-util-cli:cli',
+ '//lib:args4j',
+ '//lib:gson',
+ '//lib:guava',
'//lib:gwtjsonrpc',
+ '//lib:gwtorm',
+ '//lib:jsch',
'//lib:jsr305',
'//lib:mime-util',
- '//lib:servlet-api-3_0',
+ '//lib/commons:codec',
+ '//lib/guice:guice',
+ '//lib/guice:guice-assistedinject',
+ '//lib/guice:guice-servlet',
+ '//lib/jgit:jgit',
'//lib/jgit:jgit-servlet',
+ '//lib/log:api',
],
+ compile_deps = ['//lib:servlet-api-3_0'],
visibility = ['PUBLIC'],
)
@@ -21,9 +38,18 @@
srcs = glob(['src/test/java/**/*.java']),
deps = [
':httpd',
+ '//gerrit-common:server',
+ '//gerrit-extension-api:api',
+ '//gerrit-reviewdb:server',
+ '//gerrit-server:server',
'//lib:easymock',
'//lib:junit',
+ '//lib:gson',
+ '//lib:gwtorm',
+ '//lib:guava',
'//lib:servlet-api-3_0',
+ '//lib/guice:guice',
+ '//lib/jgit:jgit',
'//lib/jgit:junit',
],
source_under_test = [':httpd'],
diff --git a/gerrit-openid/BUCK b/gerrit-openid/BUCK
index 582a7de..0801534 100644
--- a/gerrit-openid/BUCK
+++ b/gerrit-openid/BUCK
@@ -1,17 +1,23 @@
-java_library(
+java_library2(
name = 'openid',
srcs = glob(['src/main/java/**/*.java']),
resources = glob(['src/main/resources/**/*']),
deps = [
'//gerrit-common:server',
'//gerrit-extension-api:api',
+ '//gerrit-gwtexpui:server',
'//gerrit-httpd:httpd',
+ '//gerrit-reviewdb:server',
+ '//gerrit-server:server',
'//lib:guava',
+ '//lib:gwtorm',
'//lib:jsr305',
- '//lib:servlet-api-3_0',
'//lib/guice:guice',
+ '//lib/guice:guice-servlet',
+ '//lib/jgit:jgit',
'//lib/log:api',
'//lib/openid:consumer',
],
+ compile_deps = ['//lib:servlet-api-3_0'],
visibility = ['PUBLIC'],
)
diff --git a/gerrit-pgm/BUCK b/gerrit-pgm/BUCK
index daed401..ef0b532 100644
--- a/gerrit-pgm/BUCK
+++ b/gerrit-pgm/BUCK
@@ -3,21 +3,36 @@
srcs = glob(['src/main/java/**/*.java']),
resources = glob(['src/main/resources/**/*']),
deps = [
- '//gerrit-server:common_rules',
- '//gerrit-server:server',
- '//gerrit-httpd:httpd',
- '//gerrit-sshd:sshd',
-
'//gerrit-cache-h2:cache-h2',
+ '//gerrit-common:server',
+ '//gerrit-extension-api:api',
+ '//gerrit-httpd:httpd',
'//gerrit-openid:openid',
-
+ '//gerrit-server:common_rules',
+ '//gerrit-reviewdb:server',
+ '//gerrit-server:server',
+ '//gerrit-sshd:sshd',
'//gerrit-util-cli:cli',
+ '//lib:args4j',
+ '//lib:guava',
+ '//lib:gwtorm',
+ '//lib:gwtjsonrpc',
+ '//lib:h2',
+ '//lib:jsr305',
+ '//lib:servlet-api-3_0',
+ '//lib/commons:dbcp',
+ '//lib/guice:guice',
+ '//lib/guice:guice-assistedinject',
+ '//lib/guice:guice-servlet',
+ '//lib/jetty:server',
'//lib/jetty:servlet',
+ '//lib/jgit:jgit',
+ '//lib/log:api',
'//lib/log:log4j',
+ '//lib/mina:sshd',
+ '//lib/prolog:prolog-cafe',
],
- compile_deps = [
- '//gerrit-launcher:launcher',
- ],
+ compile_deps = ['//gerrit-launcher:launcher'],
visibility = [
'//:',
'//gerrit-acceptance-tests:',
diff --git a/gerrit-server/BUCK b/gerrit-server/BUCK
index 86cad4e..3132075 100644
--- a/gerrit-server/BUCK
+++ b/gerrit-server/BUCK
@@ -1,18 +1,26 @@
include_defs('//lib/prolog/DEFS')
+# TODO(sop) break up gerrit-server java_library(), its too big
java_library2(
name = 'server',
srcs = glob(['src/main/java/**/*.java']),
resources = glob(['src/main/resources/**/*']),
deps = [
- '//gerrit-antlr:antlr',
+ '//gerrit-antlr:query_exception',
+ '//gerrit-antlr:query_parser',
'//gerrit-common:server',
'//gerrit-extension-api:api',
+ '//gerrit-patch-commonsnet:commons-net',
+ '//gerrit-patch-jgit:server',
+ '//gerrit-reviewdb:server',
'//gerrit-util-cli:cli',
'//gerrit-util-ssl:ssl',
- '//gerrit-patch-commonsnet:commons-net',
+ '//lib:args4j',
'//lib:automaton',
+ '//lib:gson',
'//lib:guava',
+ '//lib:gwtjsonrpc',
+ '//lib:gwtorm',
'//lib:jsch',
'//lib:jsr305',
'//lib:juniversalchardet',
@@ -20,8 +28,11 @@
'//lib:ow2-asm',
'//lib:ow2-asm-tree',
'//lib:ow2-asm-util',
+ '//lib:parboiled-core',
'//lib:pegdown',
'//lib:velocity',
+ '//lib/antlr:java_runtime',
+ '//lib/commons:codec',
'//lib/commons:dbcp',
'//lib/commons:lang',
'//lib/commons:net',
@@ -33,6 +44,7 @@
'//lib/prolog:prolog-cafe',
],
compile_deps = [
+ '//lib/bouncycastle:bcprov',
'//lib/bouncycastle:bcpg',
],
visibility = ['PUBLIC'],
@@ -52,10 +64,21 @@
deps = [
':server',
':common_rules',
+ '//gerrit-antlr:query_exception',
+ '//gerrit-antlr:query_parser',
+ '//gerrit-common:server',
+ '//gerrit-extension-api:api',
+ '//gerrit-reviewdb:server',
+ '//lib:easymock',
+ '//lib:guava',
+ '//lib:gwtorm',
'//lib:h2',
'//lib:junit',
- '//lib:easymock',
+ '//lib/antlr:java_runtime',
+ '//lib/guice:guice',
+ '//lib/jgit:jgit',
'//lib/jgit:junit',
+ '//lib/prolog:prolog-cafe',
],
source_under_test = [':server'],
)
diff --git a/gerrit-sshd/BUCK b/gerrit-sshd/BUCK
index 72e63cb..769be58 100644
--- a/gerrit-sshd/BUCK
+++ b/gerrit-sshd/BUCK
@@ -2,13 +2,27 @@
name = 'sshd',
srcs = glob(['src/main/java/**/*.java']),
deps = [
+ '//gerrit-extension-api:api',
'//gerrit-cache-h2:cache-h2',
+ '//gerrit-common:server',
+ '//gerrit-patch-jgit:server',
+ '//gerrit-reviewdb:server',
'//gerrit-server:server',
'//gerrit-util-cli:cli',
+ '//lib:args4j',
+ '//lib:gson',
+ '//lib:guava',
+ '//lib:gwtorm',
+ '//lib:jsch',
+ '//lib/commons:codec',
+ '//lib/guice:guice',
+ '//lib/guice:guice-assistedinject',
+ '//lib/guice:guice-servlet', # SSH should not depend on servlet
'//lib/log:api',
'//lib/log:log4j',
'//lib/mina:core',
'//lib/mina:sshd',
+ '//lib/jgit:jgit',
],
compile_deps = [
'//lib/bouncycastle:bcprov',
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/Commands.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/Commands.java
index 929a895..1a5e62cc 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/Commands.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/Commands.java
@@ -16,7 +16,6 @@
import com.google.inject.Key;
-import org.apache.commons.lang.StringUtils;
import org.apache.sshd.server.Command;
import java.lang.annotation.Annotation;
@@ -124,7 +123,7 @@
NestedCommandNameImpl(final CommandName parent, final String name) {
this.parent = parent;
this.name = name;
- this.descr = StringUtils.EMPTY;
+ this.descr = "";
}
NestedCommandNameImpl(final CommandName parent, final String name,
diff --git a/gerrit-war/BUCK b/gerrit-war/BUCK
index 2f2b34c..8cf24ad 100644
--- a/gerrit-war/BUCK
+++ b/gerrit-war/BUCK
@@ -1,14 +1,22 @@
-java_library(
+java_library2(
name = 'init',
srcs = glob(['src/main/java/**/*.java']),
deps = [
+ '//gerrit-cache-h2:cache-h2',
+ '//gerrit-extension-api:api',
+ '//gerrit-httpd:httpd',
+ '//gerrit-openid:openid',
+ '//gerrit-reviewdb:server',
'//gerrit-server:common_rules',
'//gerrit-server:server',
- '//gerrit-httpd:httpd',
'//gerrit-sshd:sshd',
- '//gerrit-cache-h2:cache-h2',
- '//gerrit-openid:openid',
+ '//lib:gwtorm',
+ '//lib/guice:guice',
+ '//lib/guice:guice-servlet',
+ '//lib/log:api',
+ '//lib/jgit:jgit',
],
+ compile_deps = ['//lib:servlet-api-3_0'],
visibility = [
'//:',
'//gerrit-gwtdebug:gwtdebug',
diff --git a/lib/BUCK b/lib/BUCK
index c4de186..9f24e6f 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -169,7 +169,6 @@
sha1 = '3fc3013adf98701efcc594a1ea99a3f841dc81bb',
license = 'Apache2.0',
attach_source = False,
- visibility = [],
)
maven_jar(
diff --git a/lib/guice/BUCK b/lib/guice/BUCK
index 0cfe5f5..48c3be3 100644
--- a/lib/guice/BUCK
+++ b/lib/guice/BUCK
@@ -7,16 +7,24 @@
'META-INF/NOTICE',
]
-maven_jar(
+java_library(
name = 'guice',
+ deps = [
+ ':guice_library',
+ ':javax-inject',
+ ],
+ export_deps = True,
+ visibility = ['PUBLIC'],
+)
+
+maven_jar(
+ name = 'guice_library',
id = 'com.google.inject:guice:' + VERSION,
sha1 = '9d84f15fe35e2c716a02979fb62f50a29f38aefa',
license = 'Apache2.0',
- deps = [
- ':javax-inject',
- ':aopalliance',
- ],
+ deps = [':aopalliance'],
exclude = EXCLUDE,
+ visibility = [],
)
maven_jar(
@@ -37,7 +45,6 @@
exclude = EXCLUDE,
)
-
maven_jar(
name = 'aopalliance',
id = 'aopalliance:aopalliance:1.0',
diff --git a/lib/jetty/BUCK b/lib/jetty/BUCK
index b7bdbac..6eac1a9 100644
--- a/lib/jetty/BUCK
+++ b/lib/jetty/BUCK
@@ -34,8 +34,8 @@
':continuation',
':http',
],
+ export_deps = True,
exclude = EXCLUDE,
- visibility = [],
)
maven_jar(
@@ -44,7 +44,6 @@
sha1 = 'f60cfe6267038000b459508529c88737601081e4',
license = 'Apache2.0',
exclude = EXCLUDE,
- visibility = [],
)
maven_jar(
@@ -54,7 +53,6 @@
license = 'Apache2.0',
deps = [':io'],
exclude = EXCLUDE,
- visibility = [],
)
maven_jar(
diff --git a/lib/maven.defs b/lib/maven.defs
index c7bf11c..3aeb891 100644
--- a/lib/maven.defs
+++ b/lib/maven.defs
@@ -35,6 +35,7 @@
sha1 = '', bin_sha1 = '', src_sha1 = '',
repository = MAVEN_CENTRAL,
attach_source = True,
+ export_deps = False,
visibility = ['PUBLIC']):
from os import path
@@ -101,10 +102,24 @@
out = '__' + name + '__no_src',
)
- prebuilt_jar(
- name = name,
- deps = deps + license + [':' + name + '__download_bin'],
- binary_jar = genfile(binjar),
- source_jar = genfile(srcjar) if srcjar else None,
- visibility = visibility,
- )
+ if export_deps:
+ prebuilt_jar(
+ name = name + '__jar',
+ deps = deps + license + [':' + name + '__download_bin'],
+ binary_jar = genfile(binjar),
+ source_jar = genfile(srcjar) if srcjar else None,
+ )
+ java_library(
+ name = name,
+ deps = [':' + name + '__jar'],
+ export_deps = True,
+ visibility = visibility,
+ )
+ else:
+ prebuilt_jar(
+ name = name,
+ deps = deps + license + [':' + name + '__download_bin'],
+ binary_jar = genfile(binjar),
+ source_jar = genfile(srcjar) if srcjar else None,
+ visibility = visibility,
+ )
diff --git a/lib/openid/BUCK b/lib/openid/BUCK
index 0327a90..b766532 100644
--- a/lib/openid/BUCK
+++ b/lib/openid/BUCK
@@ -60,5 +60,4 @@
'META-INF/LICENSE.txt',
'META-INF/NOTICE.txt',
],
- visibility = [],
)