Merge changes from topic 'javadoc'
* changes:
Allow to provide URLs for docs of external classes
Allow to create javadocs for multiple packages
Remove unnecessary reference to $SRCDIR in Buck genrules
diff --git a/buckversion b/buckversion
index 6686020..b2b427a 100644
--- a/buckversion
+++ b/buckversion
@@ -1 +1 @@
-d1be554f51fb9b2f090a85fcdbcef3b4dbbef8d7
+75b74ccf90a590b284b1a1553dc48af8844a9ca7
diff --git a/gerrit_plugin.bucklet b/gerrit_plugin.bucklet
index 2c374c8..922bd77 100644
--- a/gerrit_plugin.bucklet
+++ b/gerrit_plugin.bucklet
@@ -73,7 +73,8 @@
gwt_module = None,
manifest_entries = [],
type = 'plugin',
- visibility = ['PUBLIC']):
+ visibility = ['PUBLIC'],
+ target_suffix = ''):
from multiprocessing import cpu_count
from os import path,getcwd
# TODO(davido): Remove this hack and replace all this mess with just
@@ -151,7 +152,7 @@
)
java_binary(
- name = name,
+ name = name + target_suffix,
manifest_file = ':%s__manifest' % name,
merge_manifests = False,
deps = [
diff --git a/java_doc.bucklet b/java_doc.bucklet
index 64b8d87..72122f1 100644
--- a/java_doc.bucklet
+++ b/java_doc.bucklet
@@ -63,7 +63,6 @@
'-d $TMP',
]) + ';jar cf $OUT -C $TMP .',
srcs = srcs,
- deps = deps,
out = name + '.jar',
visibility = visibility,
)
diff --git a/local_jar.bucklet b/local_jar.bucklet
deleted file mode 100644
index a7bd35b..0000000
--- a/local_jar.bucklet
+++ /dev/null
@@ -1,64 +0,0 @@
-# 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.
-#
-# If a dependent library is undergoing active development it must be
-# recompiled and the change must be reflected in the Buck build process. For
-# example testing Gerrit against changed JGit snapshot version. After building
-# JGit library, the artifacts are created in local Maven build directory.
-#
-# To shorten that workflow and take the installation of the artifacts to the
-# local Maven repository and fetching it again from there out of the picture,
-# `local_jar()` method is used:
-#
-# Example:
-#
-# local_jar(
-# name = 'jgit',
-# jar = '/home/<user>/projects/jgit/org.eclipse.jgit/target/org.eclipse.jgit-3.3.0-SNAPSHOT.jar',
-# src_jar = '/home/<user>/projects/jgit/org.eclipse.jgit/target/org.eclipse.jgit-3.3.0-SNAPSHOT-sources.jar',
-# deps = [':ewah']
-# )
-#
-def local_jar(
- name,
- jar,
- src_jar = None,
- deps = [],
- visibility = ['PUBLIC']):
- binjar = name + '.jar'
- srcjar = name + '-src.jar'
- genrule(
- name = name + '__local_bin',
- cmd = 'ln -s %s $OUT' % jar,
- out = binjar)
- if src_jar:
- genrule(
- name = name + '__local_src',
- cmd = 'ln -s %s $OUT' % src_jar,
- out = srcjar)
- prebuilt_jar(
- name = name + '_src',
- binary_jar = ':' + name + '__local_src',
- visibility = visibility,
- )
- else:
- srcjar = None
-
- prebuilt_jar(
- name = name,
- deps = deps,
- binary_jar = ':' + name + '__local_bin',
- source_jar = ':' + name + '__local_src' if srcjar else None,
- visibility = visibility,
- )
diff --git a/maven_jar.bucklet b/maven_jar.bucklet
index 0692fc4..3a26a66 100644
--- a/maven_jar.bucklet
+++ b/maven_jar.bucklet
@@ -44,7 +44,6 @@
GERRIT = 'GERRIT:'
GERRIT_API = 'GERRIT_API:'
-ECLIPSE = 'ECLIPSE:'
MAVEN_CENTRAL = 'MAVEN_CENTRAL:'
MAVEN_LOCAL = 'MAVEN_LOCAL:'
@@ -84,7 +83,13 @@
group, artifact, version = parts
classifier = None
- if 'SNAPSHOT' in version and repository != MAVEN_LOCAL:
+ # 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:
@@ -94,6 +99,7 @@
file_version += '-' + classifier
jar = path.join(name, artifact.lower() + '-' + file_version)
+
url = '/'.join([
repository,
group.replace('.', '/'), artifact, version,
@@ -118,12 +124,10 @@
cmd.append('--unsign')
genrule(
- name = name + '__download_bin',
+ name = '%s__download_bin' % name,
cmd = ' '.join(cmd),
- deps = ['//bucklets/tools:download_file'],
out = binjar,
)
-
license = ':LICENSE-' + license
if not local_license:
license = '//lib' + license
@@ -134,30 +138,30 @@
if src_sha1:
cmd.extend(['-v', src_sha1])
genrule(
- name = name + '__download_src',
+ name = '%s__download_src' % name,
cmd = ' '.join(cmd),
- deps = ['//bucklets/tools:download_file'],
out = srcjar,
)
prebuilt_jar(
- name = name + '_src',
- binary_jar = ':' + name + '__download_src',
+ name = '%s_src' % name,
+ binary_jar = ':%s__download_src' % name,
visibility = visibility,
)
else:
srcjar = None
genrule(
- name = name + '__download_src',
+ name = '%s_src' % name,
cmd = ':>$OUT',
- out = '__' + name + '__no_src',
+ out = '__%s__no_src' % name,
)
if exported_deps:
prebuilt_jar(
- name = name + '__jar',
+ name = '%s__jar' % name,
deps = deps,
- binary_jar = ':' + name + '__download_bin',
- source_jar = ':' + name + '__download_src' if srcjar else None,
+ binary_jar = ':%s__download_bin' % name,
+ source_jar = ':%s__download_src' % name if srcjar else None,
+ visibility = visibility,
)
java_library(
name = name,
@@ -168,7 +172,7 @@
prebuilt_jar(
name = name,
deps = deps,
- binary_jar = ':' + name + '__download_bin',
- source_jar = ':' + name + '__download_src' if srcjar else None,
+ binary_jar = ':%s__download_bin' % name,
+ source_jar = ':%s__download_src' % name if srcjar else None,
visibility = visibility,
)
diff --git a/maven_package.bucklet b/maven_package.bucklet
index e8c855d..f758fcb 100644
--- a/maven_package.bucklet
+++ b/maven_package.bucklet
@@ -40,17 +40,14 @@
'-v', version,
'-o', '$OUT',
]
- dep = []
for type,d in [('jar', jar), ('java-source', src), ('javadoc', doc)]:
for a,t in d.iteritems():
cmd.append('-s %s:%s:$(location %s)' % (a,type,t))
- dep.append(t)
genrule(
name = 'install',
cmd = ' '.join(cmd + ['-a', 'install']),
- deps = dep + ['//bucklets/tools:mvn'],
out = 'install.info',
)
@@ -61,6 +58,5 @@
'-a', 'deploy',
'--repository', repository,
'--url', url]),
- deps = dep + ['//bucklets/tools:mvn'],
out = 'deploy.info',
)
diff --git a/tools/BUCK b/tools/BUCK
index 4bdfe5a..8899928 100644
--- a/tools/BUCK
+++ b/tools/BUCK
@@ -36,11 +36,10 @@
return environ.get('PATH')
genrule(
- name = 'buck.properties',
+ name = 'buck',
cmd = 'echo buck=`which buck`>$OUT;' +
("echo PATH=\''%s'\' >>$OUT;" % shquote(os_path())),
- deps = [],
- out = 'buck.properties',
+ out = 'buck',
visibility = ['PUBLIC'],
)
diff --git a/tools/buckToJUnit.xsl b/tools/buckToJUnit.xsl
index 424c050..f336520 100644
--- a/tools/buckToJUnit.xsl
+++ b/tools/buckToJUnit.xsl
@@ -31,8 +31,10 @@
<xsl:variable name="nonEmptyStacks" select="count(testresult[stacktrace != ''])"/>
<xsl:variable name="failures"
select="count(testresult[contains(stacktrace, 'java.lang.AssertionError')])"/>
- <xsl:variable name="errors" select="$nonEmptyStacks - $failures"/>
- <testsuite failures="{$failures}" time="{func:toMS(@time)}" errors="{$errors}" skipped="0"
+ <xsl:variable name="skipped"
+ select="count(testresult[contains(stacktrace, 'org.junit.internal.AssumptionViolatedException')])"/>
+ <xsl:variable name="errors" select="$nonEmptyStacks - $failures - $skipped"/>
+ <testsuite failures="{$failures}" time="{func:toMS(@time)}" errors="{$errors}" skipped="{$skipped}"
tests="{$testCount}" name="{@name}">
<xsl:apply-templates/>
</testsuite>
@@ -47,7 +49,11 @@
<xsl:template match="message"/>
- <xsl:template match="stacktrace[. != '']">
+ <xsl:template match="stacktrace[contains(.,'org.junit.internal.AssumptionViolatedException')]">
+ <skipped/>
+ </xsl:template>
+
+ <xsl:template match="stacktrace[. != '' and not(contains(.,'org.junit.internal.AssumptionViolatedException'))]">
<failure message="{../message}" type="{substring-before(., ':')}">
<xsl:value-of select="."/>
</failure>
diff --git a/tools/download_all.py b/tools/download_all.py
index 17e7ab0..0c46655 100755
--- a/tools/download_all.py
+++ b/tools/download_all.py
@@ -32,7 +32,7 @@
if m:
n = m.group(1)
if args.src and n.endswith('__download_bin'):
- n = n[:-4] + '_src'
+ n = n[:-13] + 'src'
targets.add(n)
r = p.wait()
if r != 0:
diff --git a/tools/eclipse.py b/tools/eclipse.py
index 3195b2a..2d62759 100755
--- a/tools/eclipse.py
+++ b/tools/eclipse.py
@@ -31,7 +31,7 @@
])
ROOT = path.abspath(__file__)
-for _ in range(0, 3):
+while not path.exists(path.join(ROOT, '.buckconfig')):
ROOT = path.dirname(ROOT)
opts = OptionParser()
@@ -39,14 +39,24 @@
opts.add_option('-n', '--name')
args, _ = opts.parse_args()
-def gen_project():
- p = path.join(ROOT, '.project')
- name = args.name if args.name else path.basename(ROOT)
+def _query_classpath(targets):
+ deps = []
+ p = Popen(['buck', 'audit', 'classpath'] + targets, stdout=PIPE)
+ for line in p.stdout:
+ deps.append(line.strip())
+ s = p.wait()
+ if s != 0:
+ exit(s)
+ return deps
+
+
+def gen_project(name, root=ROOT):
+ p = path.join(root, '.project')
with open(p, 'w') as fd:
print("""\
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>%s</name>
+ <name>""" + name + """</name>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
@@ -56,19 +66,9 @@
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>\
-""" % (name,), file=fd)
+""", file=fd)
def gen_classpath():
- def query_classpath(targets):
- deps = []
- p = Popen(['buck', 'audit', 'classpath'] + targets, stdout=PIPE)
- for line in p.stdout:
- deps.append(line.strip())
- s = p.wait()
- if s != 0:
- exit(s)
- return deps
-
def make_classpath():
impl = minidom.getDOMImplementation()
return impl.createDocument(None, 'classpath', None)
@@ -87,11 +87,11 @@
src = set()
lib = set()
- java_library = re.compile(r'[^/]+/gen(.*)/lib__[^/]+__output/[^/]+[.]jar$')
- for p in query_classpath(MAIN):
+ java_library = re.compile(r'[^/]+/gen/(.*)/lib__[^/]+__output/[^/]+[.]jar$')
+ for p in _query_classpath(MAIN):
m = java_library.match(p)
if m:
- src.add(m.group(1).lstrip('/'))
+ src.add(m.group(1))
else:
lib.add(p)
@@ -99,9 +99,9 @@
out = None
if s.startswith('lib/'):
- out = 'buck-out/eclipse/lib'
+ out = 'eclipse-out/lib'
elif s.startswith('plugins/'):
- out = 'buck-out/eclipse/' + s
+ out = 'eclipse-out/' + s
p = path.join(s, 'java')
if path.exists(p):
@@ -113,7 +113,7 @@
if out:
o = out + '/' + env
elif env == 'test':
- o = 'buck-out/eclipse/test'
+ o = 'eclipse-out/test'
for srctype in ['java', 'resources']:
p = path.join(s, 'src', env, srctype)
@@ -124,13 +124,13 @@
for j in sorted(libs):
s = None
if j.endswith('.jar'):
- s = j[:-4] + '-src.jar'
+ s = j[:-4] + '_src.jar'
if not path.exists(s):
s = None
classpathentry('lib', j, s)
classpathentry('con', JRE)
- classpathentry('output', 'buck-out/eclipse/classes')
+ classpathentry('output', 'eclipse-out/classes')
p = path.join(ROOT, '.classpath')
with open(p, 'w') as fd:
@@ -143,11 +143,12 @@
except CalledProcessError as err:
exit(1)
- gen_project()
+ name = args.name if args.name else path.basename(ROOT)
+ gen_project(name)
gen_classpath()
try:
- targets = ['//bucklets/tools:buck.properties'] + MAIN
+ targets = ['//bucklets/tools:buck'] + MAIN
check_call(['buck', 'build', '--deep'] + targets)
except CalledProcessError as err:
exit(1)
diff --git a/tools/pack_war.py b/tools/pack_war.py
index cfd7963..c4ffacc 100755
--- a/tools/pack_war.py
+++ b/tools/pack_war.py
@@ -18,7 +18,6 @@
from os import getcwd, chdir, makedirs, path, symlink
from subprocess import check_call
import sys
-from util import check_output
opts = OptionParser()
opts.add_option('-o', help='path to write WAR to')
@@ -31,12 +30,14 @@
root = war[:war.index('buck-out')]
jars = set()
+def prune(l):
+ return [j[j.find('buck-out'):] for e in l for j in e.split(':')]
+
def link_jars(libs, directory):
makedirs(directory)
while not path.isfile('.buckconfig'):
chdir('..')
- cp = check_output(['buck', 'audit', 'classpath'] + libs)
- for j in cp.strip().splitlines():
+ for j in libs:
if j not in jars:
jars.add(j)
n = path.basename(j)
@@ -45,9 +46,9 @@
symlink(path.join(root, j), path.join(directory, n))
if args.lib:
- link_jars(args.lib, path.join(war, 'WEB-INF', 'lib'))
+ link_jars(prune(args.lib), path.join(war, 'WEB-INF', 'lib'))
if args.pgmlib:
- link_jars(args.pgmlib, path.join(war, 'WEB-INF', 'pgm-lib'))
+ link_jars(prune(args.pgmlib), path.join(war, 'WEB-INF', 'pgm-lib'))
try:
for s in ctx:
check_call(['unzip', '-q', '-d', war, s])
diff --git a/war.bucklet b/war.bucklet
index 0ac346a..adc0072 100644
--- a/war.bucklet
+++ b/war.bucklet
@@ -35,20 +35,17 @@
):
cmd = ['$(exe //bucklets/tools:pack_war)', '-o', '$OUT', '--tmp', '$TMP']
for l in libs:
- cmd.extend(['--lib', l])
+ cmd.extend(['--lib', '$(classpath %s)' % l])
for l in pgmlibs:
- cmd.extend(['--pgmlib', l])
+ cmd.extend(['--pgmlib', '$(classpath %s)' % l])
- dep = []
if context:
for t in context:
- dep.append(t)
cmd.append('$(location %s)' % t)
genrule(
name = name,
cmd = ' '.join(cmd),
- deps = libs + pgmlibs + dep + ['//bucklets/tools:pack_war'],
out = name + '.war',
visibility = visibility,
)