
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
140 lines
3.8 KiB
Plaintext
140 lines
3.8 KiB
Plaintext
# Copyright (C) 2013 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.
|
|
|
|
include_defs('//lib/local.defs')
|
|
|
|
ATLASSIAN = 'ATLASSIAN:'
|
|
GERRIT = 'GERRIT:'
|
|
GERRIT_API = 'GERRIT_API:'
|
|
MAVEN_CENTRAL = 'MAVEN_CENTRAL:'
|
|
MAVEN_LOCAL = 'MAVEN_LOCAL:'
|
|
|
|
def define_license(name):
|
|
n = 'LICENSE-' + name
|
|
genrule(
|
|
name = n,
|
|
cmd = 'ln -s $SRCS $OUT',
|
|
srcs = [n],
|
|
out = n,
|
|
visibility = ['PUBLIC'],
|
|
)
|
|
|
|
def maven_jar(
|
|
name,
|
|
id,
|
|
license,
|
|
exclude = [],
|
|
exclude_java_sources = False,
|
|
unsign = False,
|
|
deps = [],
|
|
exported_deps = [],
|
|
sha1 = '', bin_sha1 = '', src_sha1 = '',
|
|
repository = MAVEN_CENTRAL,
|
|
attach_source = True,
|
|
visibility = ['PUBLIC']):
|
|
from os import path
|
|
|
|
parts = id.split(':')
|
|
if len(parts) != 3:
|
|
raise NameError('expected id="groupId:artifactId:version"')
|
|
group, artifact, version = parts
|
|
|
|
# SNAPSHOT artifacts are handled differently on Google storage bucket:
|
|
# 'SNAPSHOT' is discarded from the directory name. However on other
|
|
# Maven repositories, most notable local repository located in
|
|
# ~/.m2/repository (and is supported through MAVEN_LOCAL repository)
|
|
# it must be preserved, otherwise the artifact wouldn't be found.
|
|
# Atm the SNAPSHOT part is only discarded for Google storage bucket.
|
|
if 'SNAPSHOT' in version and repository.startswith(GERRIT):
|
|
file_version = version.replace('-SNAPSHOT', '')
|
|
version = version.split('-SNAPSHOT')[0] + '-SNAPSHOT'
|
|
else:
|
|
file_version = version
|
|
|
|
jar = path.join(name, artifact.lower() + '-' + file_version)
|
|
url = '/'.join([
|
|
repository,
|
|
group.replace('.', '/'), artifact, version,
|
|
artifact + '-' + file_version])
|
|
|
|
binjar = jar + '.jar'
|
|
binurl = url + '.jar'
|
|
|
|
srcjar = jar + '-src.jar'
|
|
srcurl = url + '-sources.jar'
|
|
|
|
cmd = ['$(exe //tools:download_file)', '-o', '$OUT', '-u', binurl]
|
|
if sha1:
|
|
cmd.extend(['-v', sha1])
|
|
elif bin_sha1:
|
|
cmd.extend(['-v', bin_sha1])
|
|
for x in exclude:
|
|
cmd.extend(['-x', x])
|
|
if exclude_java_sources:
|
|
cmd.append('--exclude_java_sources')
|
|
if unsign:
|
|
cmd.append('--unsign')
|
|
|
|
genrule(
|
|
name = '%s__download_bin' % name,
|
|
cmd = ' '.join(cmd),
|
|
out = binjar,
|
|
)
|
|
license = ['//lib:LICENSE-' + license]
|
|
|
|
if src_sha1 or attach_source:
|
|
cmd = ['$(exe //tools:download_file)', '-o', '$OUT', '-u', srcurl]
|
|
if src_sha1:
|
|
cmd.extend(['-v', src_sha1])
|
|
genrule(
|
|
name = '%s__download_src' % name,
|
|
cmd = ' '.join(cmd),
|
|
out = srcjar,
|
|
)
|
|
prebuilt_jar(
|
|
name = '%s_src' % name,
|
|
binary_jar = ':%s__download_src' % name,
|
|
deps = license,
|
|
visibility = visibility,
|
|
)
|
|
else:
|
|
srcjar = None
|
|
genrule(
|
|
name = '%s__download_src' % name,
|
|
cmd = ':>$OUT',
|
|
out = '__%s__no_src' % name,
|
|
)
|
|
|
|
if exported_deps:
|
|
prebuilt_jar(
|
|
name = '%s__jar' % name,
|
|
deps = deps,
|
|
binary_jar = ':%s__download_bin' % name,
|
|
source_jar = ':%s__download_src' % name if srcjar else None,
|
|
)
|
|
java_library(
|
|
name = name,
|
|
exported_deps = exported_deps + [':' + name + '__jar'],
|
|
visibility = visibility,
|
|
)
|
|
else:
|
|
prebuilt_jar(
|
|
name = name,
|
|
deps = deps,
|
|
binary_jar = ':%s__download_bin' % name,
|
|
source_jar = ':%s__download_src' % name if srcjar else None,
|
|
visibility = visibility,
|
|
)
|
|
|