]> source.dussan.org Git - jgit.git/commitdiff
Bazel: Reuse version from .bazelversion for minimum used version check 66/149966/1
authorDavid Ostrovsky <david@ostrovsky.org>
Mon, 23 Sep 2019 07:20:41 +0000 (09:20 +0200)
committerDavid Ostrovsky <david@ostrovsky.org>
Mon, 23 Sep 2019 07:23:21 +0000 (09:23 +0200)
Bazel is still supported in addition to the Bazel wrapper Bazelisk,
that is recommended, as it would automatically switch to the right
Bazel version on stable branches (like it was the case with Buck).

That why minimum used Bazel version check is still needed in WORKSPACE
file in addition to the .bazelversion used by Bazelisk. That means that
currently, bazel version is maintained in two places:

* .bazelversion
* WORKSPACE

This change introduces the repository rule to read the bazel version
from the .bazelversion file and perform the minimum version check.

Change-Id: Ib9c1382935ded7bcd322ed0122838c40ba2faa6c
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
WORKSPACE
tools/bazelisk_version.bzl [new file with mode: 0644]

index 101e7cc59b14d56ef7699402bb499a4c0407292e..86e12b607e276096c3dfe2dd45d5c18268500e1f 100644 (file)
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -9,9 +9,14 @@ http_archive(
     urls = ["https://github.com/bazelbuild/bazel-skylib/archive/0.8.0.tar.gz"],
 )
 
-load("@bazel_skylib//lib:versions.bzl", "versions")
+# Check Bazel version when invoked by Bazel directly
+load("//tools:bazelisk_version.bzl", "bazelisk_version")
 
-versions.check(minimum_bazel_version = "0.29.0")
+bazelisk_version(name = "bazelisk_version")
+
+load("@bazelisk_version//:check.bzl", "check_bazel_version")
+
+check_bazel_version()
 
 load("//tools:bazlets.bzl", "load_bazlets")
 
diff --git a/tools/bazelisk_version.bzl b/tools/bazelisk_version.bzl
new file mode 100644 (file)
index 0000000..d8b3d10
--- /dev/null
@@ -0,0 +1,16 @@
+_template = """
+load("@bazel_skylib//lib:versions.bzl", "versions")
+
+def check_bazel_version():
+  versions.check(minimum_bazel_version = "{version}")
+""".strip()
+
+def _impl(repository_ctx):
+    repository_ctx.symlink(Label("@//:.bazelversion"), ".bazelversion")
+    bazelversion = repository_ctx.read(".bazelversion").strip()
+
+    repository_ctx.file("BUILD", executable = False)
+
+    repository_ctx.file("check.bzl", executable = False, content = _template.format(version = bazelversion))
+
+bazelisk_version = repository_rule(implementation = _impl)