From 3ec838e578769b2d5546f8252e5cd4434e0b2b75 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Mon, 8 Feb 2016 14:34:04 +0900 Subject: [PATCH 1/2] Revert "Buck: Wipe out the machinery for merging JARs" We need it again after the upgrade to Lucene 5.4.1. This reverts commit 08cc835f99961b19b41c5958f5bdafe7ee458cc4. Change-Id: I1798907e5e792005e6b78fcf9bbaaf36535d711b --- lib/maven.defs | 28 +++++++++++++++++++++++++ tools/BUCK | 6 ++++++ tools/merge_jars.py | 50 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100755 tools/merge_jars.py diff --git a/lib/maven.defs b/lib/maven.defs index bdebe20af6..5c29beda36 100644 --- a/lib/maven.defs +++ b/lib/maven.defs @@ -147,3 +147,31 @@ def maven_jar( source_jar = ':%s__download_src' % name if srcjar else None, visibility = visibility, ) + + +def merge_maven_jars( + name, + srcs, + visibility = []): + + def cmd(jars): + return ('$(location //tools:merge_jars) $OUT ' + + ' '.join(['$(location %s)' % j for j in jars])) + + genrule( + name = '%s__merged_bin' % name, + cmd = cmd(['%s__download_bin' % s for s in srcs]), + out = '%s__merged.jar' % name, + ) + genrule( + name = '%s__merged_src' % name, + cmd = cmd(['%s__download_src' % s for s in srcs]), + # tools/eclipse/project.py requires -src.jar suffix. + out = '%s__merged-src.jar' % name, + ) + prebuilt_jar( + name = name, + binary_jar = ':%s__merged_bin' % name, + source_jar = ':%s__merged_src' % name, + visibility = visibility, + ) diff --git a/tools/BUCK b/tools/BUCK index d9cd42f921..489dffc8e8 100644 --- a/tools/BUCK +++ b/tools/BUCK @@ -5,6 +5,12 @@ python_binary( visibility = ['PUBLIC'], ) +python_binary( + name = 'merge_jars', + main = 'merge_jars.py', + visibility = ['PUBLIC'], +) + python_binary( name = 'pack_war', main = 'pack_war.py', diff --git a/tools/merge_jars.py b/tools/merge_jars.py new file mode 100755 index 0000000000..46016c0d21 --- /dev/null +++ b/tools/merge_jars.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# Copyright (C) 2015 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import print_function +import collections +import sys +import zipfile + + +if len(sys.argv) < 3: + print('usage: %s ...' % sys.argv[0], file=sys.stderr) + exit(1) + +outfile = sys.argv[1] +infiles = sys.argv[2:] +seen = set() +SERVICES = 'META-INF/services/' + +try: + with zipfile.ZipFile(outfile, 'w') as outzip: + services = collections.defaultdict(lambda: '') + for infile in infiles: + with zipfile.ZipFile(infile) as inzip: + for info in inzip.infolist(): + n = info.filename + if n in seen: + continue + elif n.startswith(SERVICES): + # Concatenate all provider configuration files. + services[n] += inzip.read(n) + continue + outzip.writestr(info, inzip.read(n)) + seen.add(n) + + for n, v in services.iteritems(): + outzip.writestr(n, v) +except Exception as err: + exit('Failed to merge jars: %s' % err) From 5a3bdadb0308c140d739883a1eefa58b7e8cb5ca Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Mon, 8 Feb 2016 14:35:55 +0900 Subject: [PATCH 2/2] Lucene: Add back the core-and-backward-codecs target This is needed after the upgrade to Lucene 5.4.1. This partially reverts commit fc70ea396173a667b13272646997e222bb4d0756. Change-Id: Ie8f4449a08ff951278863bddf39016a951a05067 --- gerrit-httpd/BUCK | 2 +- gerrit-lucene/BUCK | 4 ++-- gerrit-server/BUCK | 2 +- lib/asciidoctor/BUCK | 2 +- lib/lucene/BUCK | 31 ++++++++++++++++++++++++++++--- 5 files changed, 33 insertions(+), 8 deletions(-) diff --git a/gerrit-httpd/BUCK b/gerrit-httpd/BUCK index f4254dc6b2..7988cf6f16 100644 --- a/gerrit-httpd/BUCK +++ b/gerrit-httpd/BUCK @@ -36,7 +36,7 @@ java_library( '//lib/jgit:jgit', '//lib/jgit:jgit-servlet', '//lib/log:api', - '//lib/lucene:lucene-core', + '//lib/lucene:lucene-core-and-backward-codecs', ], provided_deps = ['//lib:servlet-api-3_1'], visibility = ['PUBLIC'], diff --git a/gerrit-lucene/BUCK b/gerrit-lucene/BUCK index e9490d0f9b..5a6df97e76 100644 --- a/gerrit-lucene/BUCK +++ b/gerrit-lucene/BUCK @@ -11,7 +11,7 @@ java_library( '//gerrit-server:server', '//lib:gwtorm', '//lib:guava', - '//lib/lucene:lucene-core', + '//lib/lucene:lucene-core-and-backward-codecs', ], visibility = ['PUBLIC'], ) @@ -34,7 +34,7 @@ java_library( '//lib/jgit:jgit', '//lib/log:api', '//lib/lucene:lucene-analyzers-common', - '//lib/lucene:lucene-core', + '//lib/lucene:lucene-core-and-backward-codecs', '//lib/lucene:lucene-misc', ], visibility = ['PUBLIC'], diff --git a/gerrit-server/BUCK b/gerrit-server/BUCK index c98663acd4..567754f762 100644 --- a/gerrit-server/BUCK +++ b/gerrit-server/BUCK @@ -65,7 +65,7 @@ java_library( '//lib/log:jsonevent-layout', '//lib/log:log4j', '//lib/lucene:lucene-analyzers-common', - '//lib/lucene:lucene-core', + '//lib/lucene:lucene-core-and-backward-codecs', '//lib/lucene:lucene-queryparser', '//lib/ow2:ow2-asm', '//lib/ow2:ow2-asm-tree', diff --git a/lib/asciidoctor/BUCK b/lib/asciidoctor/BUCK index f9b5b30087..98ad93c891 100644 --- a/lib/asciidoctor/BUCK +++ b/lib/asciidoctor/BUCK @@ -36,7 +36,7 @@ java_library( '//lib:args4j', '//lib:guava', '//lib/lucene:lucene-analyzers-common', - '//lib/lucene:lucene-core', + '//lib/lucene:lucene-core-and-backward-codecs', ], visibility = ['//tools/eclipse:classpath'], ) diff --git a/lib/lucene/BUCK b/lib/lucene/BUCK index 524f605934..fdf8129bae 100644 --- a/lib/lucene/BUCK +++ b/lib/lucene/BUCK @@ -2,6 +2,17 @@ include_defs('//lib/maven.defs') VERSION = '5.4.1' +# core and backward-codecs both provide +# META-INF/services/org.apache.lucene.codecs.Codec, so they must be merged. +merge_maven_jars( + name = 'lucene-core-and-backward-codecs', + srcs = [ + ':backward-codecs_jar', + ':lucene-core', + ], + visibility = ['PUBLIC'], +) + maven_jar( name = 'lucene-core', id = 'org.apache.lucene:lucene-core:' + VERSION, @@ -11,6 +22,7 @@ maven_jar( 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt', ], + visibility = [], ) maven_jar( @@ -18,19 +30,32 @@ maven_jar( id = 'org.apache.lucene:lucene-analyzers-common:' + VERSION, sha1 = 'c2aa2c4e00eb9cdeb5ac00dc0495e70c441f681e', license = 'Apache2.0', - deps = [':lucene-core'], + deps = [':lucene-core-and-backward-codecs'], exclude = [ 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt', ], ) +maven_jar( + name = 'backward-codecs_jar', + id = 'org.apache.lucene:lucene-backward-codecs:' + VERSION, + sha1 = '5273da96380dfab302ad06c27fe58100db4c4e2f', + license = 'Apache2.0', + deps = [':core_jar'], + exclude = [ + 'META-INF/LICENSE.txt', + 'META-INF/NOTICE.txt', + ], + visibility = [], +) + maven_jar( name = 'lucene-misc', id = 'org.apache.lucene:lucene-misc:' + VERSION, sha1 = '95f433b9d7dd470cc0aa5076e0f233907745674b', license = 'Apache2.0', - deps = [':lucene-core'], + deps = [':lucene-core-and-backward-codecs'], exclude = [ 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt', @@ -42,7 +67,7 @@ maven_jar( id = 'org.apache.lucene:lucene-queryparser:' + VERSION, sha1 = 'dccd5279bfa656dec21af444a7a66820eb1cd618', license = 'Apache2.0', - deps = [':lucene-core'], + deps = [':lucene-core-and-backward-codecs'], exclude = [ 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt',