Add standalone bazel build Test plan: - bazel clean --expunge - bazel build importer - Deploy plugin to gerrit site - Verify plugin loads without errors - Verify plugin functionality - Run tools/eclipse/project.sh - Import project in Eclipse and verify classpath contains all dependencies Change-Id: Ic2df37ad43d65f77c120c42ea1d332cb305ff711
diff --git a/.gitignore b/.gitignore index f5c0727..b2cf752 100644 --- a/.gitignore +++ b/.gitignore
@@ -4,6 +4,8 @@ /buck-out /bucklets /.classpath +/.primary_build_tool /.project /.settings +/bazel-* /eclipse-out
diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 0000000..6b11560 --- /dev/null +++ b/WORKSPACE
@@ -0,0 +1,33 @@ +workspace(name = "importer") + +load("//:bazlets.bzl", "load_bazlets") + +load_bazlets( + commit = "c2a97a12543ce2ab59126570ca0aea163a0ee743", + # local_path = "/home/<user>/projects/bazlets", +) + +#Snapshot Plugin API +#load( +# "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl", +# "gerrit_api_maven_local", +#) + +# Load snapshot Plugin API +#gerrit_api_maven_local() + +# Release Plugin API +load( + "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl", + "gerrit_api", +) + +# Load release Plugin API +gerrit_api() + +load( + "@com_googlesource_gerrit_bazlets//:gerrit_gwt.bzl", + "gerrit_gwt", +) + +gerrit_gwt()
diff --git a/bazlets.bzl b/bazlets.bzl new file mode 100644 index 0000000..e14e488 --- /dev/null +++ b/bazlets.bzl
@@ -0,0 +1,17 @@ +NAME = "com_googlesource_gerrit_bazlets" + +def load_bazlets( + commit, + local_path = None + ): + if not local_path: + native.git_repository( + name = NAME, + remote = "https://gerrit.googlesource.com/bazlets", + commit = commit, + ) + else: + native.local_repository( + name = NAME, + path = local_path, + )
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md index 3c49502..64d5367 100644 --- a/src/main/resources/Documentation/build.md +++ b/src/main/resources/Documentation/build.md
@@ -1,18 +1,58 @@ Build ===== -This plugin can be built with Bazel. +This plugin is built with Bazel and two build modes are supported: -Clone (or link) this plugin to the `plugins` directory of Gerrit's source tree. +* Standalone +* In Gerrit tree. -Then issue +Standalone build mode is recommended, as this mode doesn't require local Gerrit +tree to exist. + +## Build standalone + +To build the plugin, issue the following command: + +``` + bazel build @PLUGIN@ +``` + +The output is created in + +``` + bazel-genfiles/@PLUGIN@.jar +``` + +To package the plugin sources run: + +``` + bazel build lib@PLUGIN@__plugin-src.jar +``` + +The output is created in: + +``` + bazel-bin/lib@PLUGIN@__plugin-src.jar +``` + +This project can be imported into the Eclipse IDE. Execute: + +``` + ./tools/eclipse/project.sh +``` + +to generate the required files and then import the project. + + +## Build in Gerrit tree + +Clone or link this plugin to the plugins directory of Gerrit's source +tree, and issue the command: ``` bazel build plugins/@PLUGIN@ ``` -in the root of Gerrit's source tree to build - The output is created in ```
diff --git a/tools/bazel.rc b/tools/bazel.rc new file mode 100644 index 0000000..4ed16cf --- /dev/null +++ b/tools/bazel.rc
@@ -0,0 +1,2 @@ +build --workspace_status_command=./tools/workspace-status.sh +test --build_tests_only
diff --git a/tools/bzl/BUILD b/tools/bzl/BUILD new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tools/bzl/BUILD
diff --git a/tools/bzl/classpath.bzl b/tools/bzl/classpath.bzl new file mode 100644 index 0000000..dfcbe9c --- /dev/null +++ b/tools/bzl/classpath.bzl
@@ -0,0 +1,2 @@ +load("@com_googlesource_gerrit_bazlets//tools:classpath.bzl", + "classpath_collector")
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl new file mode 100644 index 0000000..74d4ce1 --- /dev/null +++ b/tools/bzl/plugin.bzl
@@ -0,0 +1,6 @@ +load( + "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl", + "gerrit_plugin", + "PLUGIN_DEPS", + "GWT_PLUGIN_DEPS", +)
diff --git a/tools/eclipse/BUILD b/tools/eclipse/BUILD new file mode 100644 index 0000000..9b749e1 --- /dev/null +++ b/tools/eclipse/BUILD
@@ -0,0 +1,13 @@ +load( + "//tools/bzl:plugin.bzl", + "PLUGIN_DEPS", + "GWT_PLUGIN_DEPS", +) +load("//tools/bzl:classpath.bzl", "classpath_collector") + +classpath_collector( + name = "main_classpath_collect", + deps = PLUGIN_DEPS + GWT_PLUGIN_DEPS + [ + "//:importer__plugin", + ], +)
diff --git a/tools/eclipse/project.sh b/tools/eclipse/project.sh new file mode 100755 index 0000000..2d40079 --- /dev/null +++ b/tools/eclipse/project.sh
@@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright (C) 2017 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. + +`bazel query @com_googlesource_gerrit_bazlets//tools/eclipse:project --output location | sed s/BUILD:.*//`project.py -n importer -r .
diff --git a/tools/workspace-status.sh b/tools/workspace-status.sh new file mode 100755 index 0000000..25fd73a --- /dev/null +++ b/tools/workspace-status.sh
@@ -0,0 +1,17 @@ +#!/bin/bash + +# This script will be run by bazel when the build process starts to +# generate key-value information that represents the status of the +# workspace. The output should be like +# +# KEY1 VALUE1 +# KEY2 VALUE2 +# +# If the script exits with non-zero code, it's considered as a failure +# and the output will be discarded. + +function rev() { + cd $1 && git describe --always --match "v[0-9].*" --dirty +} + +echo STABLE_BUILD_IMPORTER_LABEL "$(rev .)"