Update buck to the latest version

This version includes a lot of new features and improvements,
including:

* Switched to top-down-building, which should generally make builds
  faster. The old behavior can be bypassed by passing --deep on the
  command line [1]

* New query command was added (inspired by Bazel) [2]

* Performance improvement in file globbing

Extend tools/eclipse/project.py to pass the --deep option to ask Buck
to execute bottom-up build when generating the Eclipse project. This is
needed otherwise after using the buck clean command only the gerrit.war
file would be fetched from the cache and the buck-out/gen/lib folder
would remain empty.

With [3] genrule output is now namespaced with the genrule name. Adapt
documentation and references in the code to the new location of Buck
artifacts. Because of this change, `buck clean` must be issued after
Buck upgrade, otherwise the build would fail. The same prolem exists
when switching between branches: `buck clean` must be issued, otherwise
the build would fail.

Test plan:

* buck build release
* buck build api_install
* buck test
* install and verify new gerrit site
* upgrade and verify existing gerrit site
* reindex existing gerrit site
* verify that tools/eclipse/project.py produces sane Eclipse project
* verify that unit test execution from Eclipse works
* verify that daemon started from Eclipse works
* verify that GWT SDM debug session started from Eclipe works

[1] 217cec33bc
[2] https://buckbuild.com/command/query.html
[3] c92ef212b5

Change-Id: Ib3f22e70b7cb9eb9349618f2bcc018bf799c40f8
This commit is contained in:
David Ostrovsky
2015-09-14 17:46:28 +09:00
parent 057e94530c
commit f377aa96de
7 changed files with 17 additions and 17 deletions

View File

@@ -1 +1 @@
8204fddf60b25a3c2090f3ef0742fca5d466d562 d1be554f51fb9b2f090a85fcdbcef3b4dbbef8d7

View File

@@ -106,7 +106,7 @@ To build the Gerrit web application:
The output executable WAR will be placed in: The output executable WAR will be placed in:
---- ----
buck-out/gen/gerrit.war buck-out/gen/gerrit/gerrit.war
---- ----
@@ -121,7 +121,7 @@ To build Gerrit in headless mode, i.e. without the GWT Web UI:
The output executable WAR will be placed in: The output executable WAR will be placed in:
---- ----
buck-out/gen/headless.war buck-out/gen/headless/headless.war
---- ----
=== Extension and Plugin API JAR Files === Extension and Plugin API JAR Files
@@ -137,8 +137,8 @@ project directories in `buck-out/gen`, here as example for plugin API:
---- ----
buck-out/gen/gerrit-plugin-api/plugin-api.jar buck-out/gen/gerrit-plugin-api/plugin-api.jar
buck-out/gen/gerrit-plugin-api/plugin-api-javadoc/plugin-api-javadoc.jar
buck-out/gen/gerrit-plugin-api/plugin-api-src.jar buck-out/gen/gerrit-plugin-api/plugin-api-src.jar
buck-out/gen/gerrit-plugin-api/plugin-api-javadoc.jar
---- ----
Install {extension,plugin,gwt}-api to the local maven repository: Install {extension,plugin,gwt}-api to the local maven repository:
@@ -170,7 +170,7 @@ The output JAR files for individual plugins will be placed in:
The JAR files will also be packaged in: The JAR files will also be packaged in:
---- ----
buck-out/gen/plugins/core.zip buck-out/gen/plugins/core/core.zip
---- ----
To build a specific plugin: To build a specific plugin:
@@ -224,7 +224,7 @@ placed in:
The html files will also be bundled into `searchfree.zip` in this location: The html files will also be bundled into `searchfree.zip` in this location:
---- ----
buck-out/gen/Documentation/searchfree.zip buck-out/gen/Documentation/searchfree/searchfree.zip
---- ----
To build the executable WAR with the documentation included: To build the executable WAR with the documentation included:
@@ -236,7 +236,7 @@ To build the executable WAR with the documentation included:
The WAR file will be placed in: The WAR file will be placed in:
---- ----
buck-out/gen/withdocs.war buck-out/gen/withdocs/withdocs.war
---- ----
[[soyc]] [[soyc]]
@@ -272,7 +272,7 @@ all core plugins:
The output release WAR will be placed in: The output release WAR will be placed in:
---- ----
buck-out/gen/release.war buck-out/gen/release/release.war
---- ----
[[all]] [[all]]

View File

@@ -87,7 +87,7 @@ After compiling (above), run Gerrit's 'init' command to create a
testing site for development use: testing site for development use:
---- ----
java -jar buck-out/gen/gerrit.war init -d ../gerrit_testsite java -jar buck-out/gen/gerrit/gerrit.war init -d ../gerrit_testsite
---- ----
Accept defaults by pressing Enter until 'init' completes, or add Accept defaults by pressing Enter until 'init' completes, or add
@@ -130,7 +130,7 @@ The daemon can be directly launched from the build area, without
copying to the test site: copying to the test site:
---- ----
java -jar buck-out/gen/gerrit.war daemon -d ../gerrit_testsite java -jar buck-out/gen/gerrit/gerrit.war daemon -d ../gerrit_testsite
---- ----
=== Running the Daemon with Gerrit Inspector === Running the Daemon with Gerrit Inspector
@@ -149,7 +149,7 @@ Gerrit Inspect can be started by adding '-s' option to the
command used to launch the daemon: command used to launch the daemon:
---- ----
java -jar buck-out/gen/gerrit.war daemon -d ../gerrit_testsite -s java -jar buck-out/gen/gerrit/gerrit.war daemon -d ../gerrit_testsite -s
---- ----
Gerrit Inspector examines Java libraries first, then loads Gerrit Inspector examines Java libraries first, then loads
@@ -176,7 +176,7 @@ The embedded H2 database can be queried and updated from the
command line. If the daemon is not currently running: command line. If the daemon is not currently running:
---- ----
java -jar buck-out/gen/gerrit.war gsql -d ../gerrit_testsite java -jar buck-out/gen/gerrit/gerrit.war gsql -d ../gerrit_testsite
---- ----
Or, if it is running and the database is in use, connect over SSH Or, if it is running and the database is in use, connect over SSH

View File

@@ -189,7 +189,7 @@ public abstract class PluginDaemonTest extends AbstractDaemonTest {
private Properties loadBuckProperties() throws IOException { private Properties loadBuckProperties() throws IOException {
Properties properties = new Properties(); Properties properties = new Properties();
Path propertiesPath = gen.resolve("tools").resolve("buck.properties"); Path propertiesPath = gen.resolve(Paths.get("tools/buck/buck.properties"));
if (Files.exists(propertiesPath)) { if (Files.exists(propertiesPath)) {
try (InputStream in = Files.newInputStream(propertiesPath)) { try (InputStream in = Files.newInputStream(propertiesPath)) {
properties.load(in); properties.load(in);

View File

@@ -682,7 +682,7 @@ public class JettyServer {
throws FileNotFoundException, IOException { throws FileNotFoundException, IOException {
Properties properties = new Properties(); Properties properties = new Properties();
try (InputStream in = new FileInputStream( try (InputStream in = new FileInputStream(
gen.resolve(Paths.get("tools/buck.properties")).toFile())) { gen.resolve(Paths.get("tools/buck/buck.properties")).toFile())) {
properties.load(in); properties.load(in);
} }
return properties; return properties;

View File

@@ -42,7 +42,7 @@ def os_path():
return environ.get('PATH') return environ.get('PATH')
genrule( genrule(
name = 'buck.properties', name = 'buck',
cmd = 'echo buck=`which buck`>$OUT;' + cmd = 'echo buck=`which buck`>$OUT;' +
("echo PATH=\''%s'\' >>$OUT;" % shquote(os_path())), ("echo PATH=\''%s'\' >>$OUT;" % shquote(os_path())),
deps = [], deps = [],

View File

@@ -224,8 +224,8 @@ try:
gen_factorypath() gen_factorypath()
try: try:
targets = ['//tools:buck.properties'] + MAIN + GWT targets = ['//tools:buck'] + MAIN + GWT
check_call(['buck', 'build'] + targets) check_call(['buck', 'build', '--deep'] + targets)
except CalledProcessError as err: except CalledProcessError as err:
exit(1) exit(1)
except KeyboardInterrupt: except KeyboardInterrupt: