9e4e243cfd
genrule() can only produce one output. This is critical to the way buck caching works for build results. The solution I learned from the Buck team is to have the genrule() produce a ZIP file containing all of the outputs, and use a unique genrule() to extract each output from the ZIP. Developers can now opt-into the buck cache by writing a local config file: cat >.buckconfig.local <<EOF [cache] mode = dir dir = buck-cache EOF This can be very useful when switching commits around with GWT UI code. If the UI code does not modify between commits there is no rebuild time. If UI code does modify, rebuild time is reduced to 0 when switching back to a prior version you had previously built. The cache needs local disk, so its not enabled by default. Change-Id: If8f79637004fbc13ea37c419e5c9bb582a489ab5
43 lines
921 B
Python
43 lines
921 B
Python
ANTLR_OUTS = [
|
|
'QueryLexer.java',
|
|
'QueryParser.java',
|
|
]
|
|
PARSER_DEPS = [
|
|
':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(
|
|
name = 'query_antlr',
|
|
srcs = ['src/main/antlr3/com/google/gerrit/server/query/Query.g'],
|
|
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 = PARSER_DEPS + [':' + f for f in ANTLR_OUTS],
|
|
)
|
|
|
|
genrule(
|
|
name = 'query_link',
|
|
cmd = 'ln -s $SRCS $OUT',
|
|
srcs = [genfile('lib__lib__output/lib.jar')],
|
|
deps = [':lib'],
|
|
out = 'query_parser.jar',
|
|
)
|
|
|
|
prebuilt_jar(
|
|
name = 'query_parser',
|
|
binary_jar = genfile('query_parser.jar'),
|
|
deps = PARSER_DEPS + [':query_link'],
|
|
visibility = ['PUBLIC'],
|
|
)
|