From 188bd78785eaa53e924bd2863d4f0fda8c505ab5 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Sat, 19 Jul 2014 22:43:36 +0200 Subject: [PATCH] Buck: Align gerrit build interface to bucklets Bucklets are reusable building blocks for buck driven build. Many bucklets match Gerrit's own methods and were derived from them. To enable buck driven build of gerrit plugins bucklets, are used. This simplifies the implementation without need of code duplication. The problem is however, that unlike maven driven build, in gerrit tree build mode is supported for plugins. Because of mismatch of buck build interface between gerrit core and bucklets this currently can not be done. This change synchronizes the interfaces between gerrit and bucklets by exposing building blocks that are shared between gerrit and bucklets in own files and linking them from bucklets directory. That way bucklets can be (re-)used from both build modes: in gerrit tree and standalone. Change-Id: I8457b99936f009b4bc531f3b5633e4f19cb3b676 --- bucklets/java_doc.bucklet | 1 + bucklets/java_sources.bucklet | 1 + bucklets/local_jar.bucklet | 1 + bucklets/maven_package.bucklet | 1 + lib/local.defs | 33 ++++++++++++++++++++++ lib/maven.defs | 34 ++--------------------- tools/default.defs | 51 ++-------------------------------- tools/java_doc.defs | 37 ++++++++++++++++++++++++ tools/java_sources.defs | 10 +++++++ 9 files changed, 88 insertions(+), 81 deletions(-) create mode 120000 bucklets/java_doc.bucklet create mode 120000 bucklets/java_sources.bucklet create mode 120000 bucklets/local_jar.bucklet create mode 120000 bucklets/maven_package.bucklet create mode 100644 lib/local.defs create mode 100644 tools/java_doc.defs create mode 100644 tools/java_sources.defs diff --git a/bucklets/java_doc.bucklet b/bucklets/java_doc.bucklet new file mode 120000 index 0000000000..cc8b6dba8e --- /dev/null +++ b/bucklets/java_doc.bucklet @@ -0,0 +1 @@ +../tools/java_doc.defs \ No newline at end of file diff --git a/bucklets/java_sources.bucklet b/bucklets/java_sources.bucklet new file mode 120000 index 0000000000..8a1a5dddfb --- /dev/null +++ b/bucklets/java_sources.bucklet @@ -0,0 +1 @@ +../tools/java_sources.defs \ No newline at end of file diff --git a/bucklets/local_jar.bucklet b/bucklets/local_jar.bucklet new file mode 120000 index 0000000000..890482472c --- /dev/null +++ b/bucklets/local_jar.bucklet @@ -0,0 +1 @@ +../lib/local.defs \ No newline at end of file diff --git a/bucklets/maven_package.bucklet b/bucklets/maven_package.bucklet new file mode 120000 index 0000000000..b5f5ea8afb --- /dev/null +++ b/bucklets/maven_package.bucklet @@ -0,0 +1 @@ +../tools/maven/package.defs \ No newline at end of file diff --git a/lib/local.defs b/lib/local.defs new file mode 100644 index 0000000000..6eec581a0d --- /dev/null +++ b/lib/local.defs @@ -0,0 +1,33 @@ +def local_jar( + name, + jar, + src = None, + deps = [], + visibility = ['PUBLIC']): + binjar = name + '.jar' + srcjar = name + '-src.jar' + genrule( + name = '%s__local_bin' % name, + cmd = 'ln -s %s $OUT' % jar, + out = binjar) + if src: + genrule( + name = '%s__local_src' % name, + cmd = 'ln -s %s $OUT' % src, + out = srcjar) + prebuilt_jar( + name = '%s_src' % name, + binary_jar = ':%s__local_src' % name, + visibility = visibility, + ) + else: + srcjar = None + + prebuilt_jar( + name = name, + deps = deps, + binary_jar = ':%s__local_bin' % name, + source_jar = ':%s__local_src' % name if srcjar else None, + visibility = visibility, + ) + diff --git a/lib/maven.defs b/lib/maven.defs index 5f4006fe27..adce2a5e57 100644 --- a/lib/maven.defs +++ b/lib/maven.defs @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +include_defs('//lib/local.defs') + ATLASSIAN = 'ATLASSIAN:' GERRIT = 'GERRIT:' GERRIT_API = 'GERRIT_API:' @@ -135,35 +137,3 @@ def maven_jar( visibility = visibility, ) -def local_jar( - name, - jar, - src = None, - deps = [], - visibility = ['PUBLIC']): - binjar = name + '.jar' - srcjar = name + '-src.jar' - genrule( - name = '%s__local_bin' % name, - cmd = 'ln -s %s $OUT' % jar, - out = binjar) - if src: - genrule( - name = '%s__local_src' % name, - cmd = 'ln -s %s $OUT' % src, - out = srcjar) - prebuilt_jar( - name = '%s_src' % name, - binary_jar = ':%s__local_src' % name, - visibility = visibility, - ) - else: - srcjar = None - - prebuilt_jar( - name = name, - deps = deps, - binary_jar = ':%s__local_bin' % name, - source_jar = ':%s__local_src' % name if srcjar else None, - visibility = visibility, - ) diff --git a/tools/default.defs b/tools/default.defs index 4ebb4e435e..2239026593 100644 --- a/tools/default.defs +++ b/tools/default.defs @@ -15,6 +15,8 @@ # Rule definitions loaded by default into every BUCK file. include_defs('//tools/gwt-constants.defs') +include_defs('//tools/java_doc.defs') +include_defs('//tools/java_sources.defs') import copy def genantlr( @@ -144,52 +146,3 @@ def gerrit_plugin( ] + static_jars, visibility = visibility, ) - -def java_sources( - name, - srcs, - visibility = [] - ): - java_library( - name = name, - resources = srcs, - visibility = visibility, - ) - -def java_doc( - name, - title, - pkg, - paths, - srcs = [], - deps = [], - visibility = [], - do_it_wrong = False, - ): - if do_it_wrong: - sourcepath = paths - else: - sourcepath = ['$SRCDIR/' + n for n in paths] - genrule( - name = name, - cmd = ' '.join([ - 'while ! test -f .buckconfig; do cd ..; done;', - 'javadoc', - '-quiet', - '-protected', - '-encoding UTF-8', - '-charset UTF-8', - '-notimestamp', - '-windowtitle "' + title + '"', - '-link http://docs.oracle.com/javase/7/docs/api', - '-subpackages ' + pkg, - '-sourcepath ', - ':'.join(sourcepath), - ' -classpath ', - ':'.join(['$(location %s)' % n for n in deps]), - '-d $TMP', - ]) + ';jar cf $OUT -C $TMP .', - srcs = srcs, - out = name + '.jar', - visibility = visibility, -) diff --git a/tools/java_doc.defs b/tools/java_doc.defs new file mode 100644 index 0000000000..d117bda9b1 --- /dev/null +++ b/tools/java_doc.defs @@ -0,0 +1,37 @@ +def java_doc( + name, + title, + pkg, + paths, + srcs = [], + deps = [], + visibility = [], + do_it_wrong = False, + ): + if do_it_wrong: + sourcepath = paths + else: + sourcepath = ['$SRCDIR/' + n for n in paths] + genrule( + name = name, + cmd = ' '.join([ + 'while ! test -f .buckconfig; do cd ..; done;', + 'javadoc', + '-quiet', + '-protected', + '-encoding UTF-8', + '-charset UTF-8', + '-notimestamp', + '-windowtitle "' + title + '"', + '-link http://docs.oracle.com/javase/7/docs/api', + '-subpackages ' + pkg, + '-sourcepath ', + ':'.join(sourcepath), + ' -classpath ', + ':'.join(['$(location %s)' % n for n in deps]), + '-d $TMP', + ]) + ';jar cf $OUT -C $TMP .', + srcs = srcs, + out = name + '.jar', + visibility = visibility, +) diff --git a/tools/java_sources.defs b/tools/java_sources.defs new file mode 100644 index 0000000000..0b3974ec7a --- /dev/null +++ b/tools/java_sources.defs @@ -0,0 +1,10 @@ +def java_sources( + name, + srcs, + visibility = [] + ): + java_library( + name = name, + resources = srcs, + visibility = visibility, + )