24 Commits

Author SHA1 Message Date
David Ostrovsky
fdbfcad77d Remove Buck based build
Bug: Issue 5302
Change-Id: I6e860446ef30ff0ad1c7c49fc0e39d39d921820b
2017-01-23 12:44:58 +00:00
David Ostrovsky
fa18907d7f Bazel: Reformat build files
Reformat the Bazel build files with the buildifier tool [1].

The style is different for Bazel files. Most notably, indentation level
is 4 spaces instead of 2, and " is used instead of '.

[1] https://github.com/bazelbuild/buildifier

Change-Id: I95c0c6f11b6d76572797853b4ebb5cee5ebd3c98
2016-12-07 11:33:07 +00:00
Yuxuan 'fishy' Wang
75b98f77d9 bazel: add license to appropriate lib/ targets
This is to prepare for implementing genlicenses rule in bazel.

Change-Id: I60d79d5b53f9dd05c9f9ebfe6e6f658604c5a037
2016-09-26 16:42:38 +08:00
David Pursehouse
af7bc6446f Update Jetty to 9.3.11.v20160721
Change-Id: Ia2ed308319ba77df7c64f02970264cd0117e8742
2016-09-20 11:12:48 +02:00
David Ostrovsky
b81b4f75ae Implement Bazel build
To run the tests:

  bazel test //...

To build the Gerrit plugin API, run:

  bazel build gerrit-plugin-api:plugin-api_deploy.jar

To build the Gerrit extension API, run:

  bazel build gerrit-extension-api:extension-api_deploy.jar

TODOs:

Licenses
Reduce visibility (all public for now)
Generate HTML Documentation
Core plugins
gerrit_plugin() rule to build plugins in tree and standalone modes
GWT UI (only gwt_module() skylark rule is provided, no gwt_binary())
PolyGerrit UI
WAR
Publish artifacts to Maven Central
Ask Bazel team to add Gerrit to their CI on ci.bazel.io

Contributed-By: Han-Wen Nienhuys <hanwen@google.com>
Change-Id: I9a86e670882a44a5c966579cdeb8ed79b1590de3
2016-06-14 21:12:02 +02:00
David Pursehouse
121b36acfd Upgrade Jetty to 9.2.14.v20151106
This is a maintenance release including several bug fixes.

There doesn't seem to be any release note, but the list of fixed
issues is included in the VERSION.txt of the release commit [1]

[1] ecba378f5c

Change-Id: I1c825abfddf54267518d68e7f092b75e6d48a34a
2016-01-28 19:44:42 +09:00
David Pursehouse
d937092ec9 Upgrade Jetty to 9.2.13.v20150730
This is a maintenance release [1] and is the same version as used
in the latest version of JGit.

[1] http://permalink.gmane.org/gmane.comp.ide.eclipse.jetty.devel/2032

Change-Id: Ied4c7c1b36aa449a6801fc3ada1193f4b28d90cc
2015-11-12 18:09:40 +00:00
David Pursehouse
911a92cfa4 Update Jetty to 9.2.12.v20150709
This is a maintenance release including some minor bug fixes [1].

It is not the latest version, but is the latest one that still
works with Java 7.  Later versions (9.3.x) require Java 8.

[1] http://permalink.gmane.org/gmane.comp.ide.eclipse.jetty.devel/2016

Change-Id: I73d6d5528249c6656f05a78007b0b72f0c0efdf7
2015-07-29 11:07:47 +09:00
David Pursehouse
c3939de0ec Upgrade jetty to version 9.2.10.v20150310
Change-Id: I88cb22da6a123efae05e0ea07c3423d56d39e7c8
2015-05-22 15:59:25 +09:00
Edwin Kempin
030d8ff23d Upgrade Jetty to fix JetLeak security vulnerability
The new Jetty version fixes the JetLeak vulnerability remote leakage
of shared buffers in Jetty [1].

[1] http://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00075.html

Change-Id: I40b38b0be153a746184f11a7e8da32d9baa8368f
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
2015-02-27 16:16:49 +01:00
David Ostrovsky
8e37a9d9e2 Bump jetty version to 9.2.6
Jetty 9.2.6 is maintenance release. Given that htmlunit [1] was updated
recently to this version and next GWT release [2] is going to be based
on this version, so that we can in the end drop our fork of WebServer
I616a53eb0 to make SDM work on jetty 9 [3], update to this version.

[1] http://sourceforge.net/p/htmlunit/bugs/1656
[2] https://gwt-review.googlesource.com/7857
[3] https://code.google.com/p/google-web-toolkit/issues/detail?id=8747

Change-Id: I7949501bfc16d41219ec94531ede71da4386079b
2015-01-15 08:33:04 +01:00
David Ostrovsky
2571776909 Buck: Remove unused dependencies
Change-Id: I8adc8d58b6d8457ffcf2089c463807aaa578a542
2014-10-26 12:46:47 +01:00
Dave Borowitz
9c4a47051f Delete GWT DevMode launcher
There is now only one supported way to debug GWT, so remove the "SDM"
naming, as it's basically an implementation detail. Be consistent
between the launcher and class names,
gerrit_gwt_dbg -> GerritGwtDebugLauncher.

Update the documentation to be consistent as well, and link to the
article about Super Dev Mode.

Change-Id: If541bc48bf828a8af64d631d7acd6f663d5ecea1
2014-09-11 10:08:36 +00:00
David Pursehouse
fae52dad16 Fix jetty servlets jar sha1
The sha1 for this jar was not updated in the recent Jetty upgrade.

This causes ./tools/eclipse/project.py to fail.

Update it.

Change-Id: Iaf1e817a8f262a37e625e9602fc627160faaf3e9
2014-09-11 08:46:51 +00:00
David Ostrovsky
668727c586 Update jetty to 9.2.2
Jetty 9.2.2 is a maintenance release and fixes a number of bugs.

Change-Id: Ic0f397aa336b7b9caa2aff032e096aee7b1c4023
2014-09-11 07:34:03 +00:00
David Ostrovsky
9adf60e96f GWT SuperDevMode: Spawn codeserver and Daemon in same process
Simplify SDM experience by embedding codeserver and daemon in one
process: no multiple launch configurations must be started and
the output must not be captured in different IDE console windows.

Unfortunately, as is Codeserver implementation is based on outdated
Jetty. Replace WebServer.java from GWT project (same license like
Gerrit itself, preserving the license header) and adjust it to run
against Jetty 9 that is used by Gerrit.

This also removes the need to fetch outdated Jetty version that we
have just wiped out from gwt-dev.jar during download from Central.

Change-Id: I616a53eb080d49a2bdf7a2211067b821af9f85d7
2014-09-10 18:47:58 +02:00
David Ostrovsky
83f24a4a21 Update Jetty version to 9.2
The Jetty 9.2 quick start mechanism provides almost an order of
magnitude improvement in start time [1].

[1] https://webtide.com/jetty-9-quick-start/

Change-Id: Icb81c2e4481d911bc3987e987b124768ce68bff1
2014-07-10 05:51:22 +00:00
Dariusz Luksza
011cfedc61 Expose Jetty JMX extensions
Jetty by default provides set of MBeans that can be registered in JMX.
This patch adds new configuration option called httpd.registerMBeans, by
default set to false, to control this behavior.

Change-Id: I3771ed3bb755240d7d90e9f1f1d7e7f84ff33ce3
Signed-off-by: Dariusz Luksza <dariusz@luksza.org>
2014-04-25 16:13:11 +02:00
David Ostrovsky
a283507bcc Update GWT version to 2.6.0-rc3
GWT 2.6.0 has Java 7 support and other new features [1].

Internal Jetty version, shipped with GWT was updated to 8.1. This
version collides with the version that is used internally by Gerrit
(9.1).  To resolve the conflict, GWT's own Jetty version is stripped
from the gwt-dev.jar with maven_jar() method and Gerrit's own Jetty
used instead. Missing Jetty artifacts, needed for the GWT to run in
dev mode:

* jetty-webapp
* jetty-xml

are included now as dependency of gerrit-gwtdebug project.

New GWT version updates a number of dependencies that are used in
Gerrit [3]. Update them too.

EditIteratorTest test is failing with NSME Exception in gwt-test-utils
framework, so deactivate it for now [2].

[1] http://www.gwtproject.org/release-notes.html#Release_Notes_2_6_0_RC1
[2] https://code.google.com/p/gwt-test-utils/issues/detail?id=179
[3]
* Guava 15.0
* Protobuf 2.5.0
* ASM 4.1

Change-Id: I0fa96da6465d52febeae65168b0bd1c2913f6c7e
2014-01-23 06:39:08 +01:00
David Ostrovsky
e01d9b7f20 Bump Jetty version to stable 9.1 and Servlet API to 3.1
Change-Id: Ic6a374afa978e66ec1a04a2b39801da158ba31d7
2014-01-04 22:28:10 +01:00
Shawn Pearce
4e1a8bc63d Update Buck
Buck changed export_deps from a boolean to be exported_deps, a list of
dependencies that are to be added to deps and also exported.  This
allows libraries to have dependencies for implementation use only, but
not expose them to callers for linkage.

exported_deps aren't transparently transitive anymore.  This mostly
impacts the plugin-api:lib rule.

This is the first time Gerrit is using upstream Buck with no patches.

- Java memory settings for Buck can now be supplied in a project
  specific file using `.buckjavaargs` in the root directory.  The file
  replaces the `.buckrc` previously supported by Gerrit's fork.

- Temporary directories for java_application() invoked from genrule()
  is now supplied as part of the arguments using $TMP.  This removes
  one of the patches Gerrit had for Buck.

- Unit tests use the system temporary directory during testing.  This
  can be faster if the temporary directory is a tmpfs.  Unfortunately
  not all passing tests clean up after themselves, making it possible
  to exhaust system memory and swap with useless tmpfs contents.
  Using the system temporary directory for tests removes another patch
  Gerrit had on top of Buck.

Change-Id: I3a9fe4aab0a33a8673df727e618122027a742638
2013-11-29 10:50:59 -08:00
David Ostrovsky
8e78797190 Bump Jetty version to 9.0.6.v20130930
Change-Id: Id7306c3a2b9b3f59d24de1b93c114d7a284a3515
2013-11-15 09:24:17 +01:00
Shawn Pearce
bd5629718f Update buck build for strict dependencies
java_library() targets must now list every dependency they need for
an import. This permits buck to run more targets in parallel as it
has a better view of the dependency graph, and opens the door for
buck to make even more optimizations in the future.

Change-Id: I132bf47a725e44ba5950ba6ca76bfa72c3876906
2013-05-16 01:14:27 +00:00
Shawn Pearce
fd6bb9f6a5 Build with Buck
Implement a new build system using Buck[1], Facebook's
open source clone of Google's internal build system.

  Pros:
  - Concise build language
  - Test and build output is concise
  - Test failures and stack traces show on terminal
  - Reliable incrementals; clean is unnecessary
  - Extensible with simple blocks of Python
  - Fast
      buck: clean: 0.452s, full 1m21.083s [*], no-op:  7.145s,
      mvn:  clean: 4.596s, full 2m53.776s,     no-op: 59.108s,

      [*] full build includes downloading all dependencies,
          time can vary due to remote server performance.

  Cons:
  - No Windows support
  - No native Maven Central support (added by macros)
  - No native GWT, Prolog, or WAR support (added by macros)
  - Bootstrap of buck requires Ant

Getting started:

  git clone https://gerrit.googlesource.com/buck
  cd buck
  ant

  Mac OS X:
    PATH="`pwd`/bin:/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands:$PATH"

  Linux:
    PATH="`pwd`/bin:$PATH"

Importing into Eclipse:

  $ time buck build :eclipse
  0m48.949s

  Import existing project from `pwd`
  Import 'gerrit' (do not import other Maven based projects)
  Expand 'gerrit'
  Right click 'buck-out' > Properties
  Under Attributes check 'Derived'

  If the code doesn't currently compile but an updated classpath
  is needed, refresh the configs and obtain missing JARs:

  $ buck build :eclipse_project :download

Running JUnit tests:

  $ time buck test --all -e slow  # skip slow tests
  0m19.320s

  $ time buck test --all          # includes acceptance tests
  5m17.517s

Building WAR:

  $ buck build :gerrit
  $ java -jar buck-out/gen/gerrit.war

Building release:

  $ buck test --all && buck build :api :release
  $ java -jar buck-out/gen/release.war
  $ ls -lh buck-out/gen/{extension,plugin}-api.jar

Downloading dependencies:

  Dependencies are normally downloaded automatically, but Buck can
  inspect its graph and download missing dependencies so future
  compiles can run without the network:

  $ buck build :download

[1] http://facebook.github.io/buck/

Change-Id: I40853b108bd8e153cefa0896a5280a9a5ff81655
2013-05-09 13:40:36 +00:00