From 3bf2657ed77f907f4a40e52c74803e1e65c67e56 Mon Sep 17 00:00:00 2001 From: Talha Pathan Date: Wed, 31 Aug 2022 12:00:25 +0100 Subject: [PATCH] Create bazel_version repo rule and check version --- go/private/repositories.bzl | 14 ++++++++++++++ go/private/rules/test.bzl | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/go/private/repositories.bzl b/go/private/repositories.bzl index 4dc669cee3..0b901cf3fb 100644 --- a/go/private/repositories.bzl +++ b/go/private/repositories.bzl @@ -20,6 +20,18 @@ load("//go/private:nogo.bzl", "DEFAULT_NOGO", "go_register_nogo") load("//proto:gogo.bzl", "gogo_special_proto") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +# native.bazel_version is only available in WORKSPACE macros +# https://github.com/bazelbuild/bazel/issues/8305 +# Needed for guarding env_inherit support https://github.com/bazelbuild/rules_go/pull/3256 which requires 5.2.0+ +def _bazel_version_repository_impl(repository_ctx): + repository_ctx.file("bazel_version.bzl", "bazel_version = \"{}\"".format(native.bazel_version)) + repository_ctx.file("BUILD", "") + +_bazel_version_repository = repository_rule( + implementation = _bazel_version_repository_impl, + local = True, +) + def go_rules_dependencies(force = False): """Declares workspaces the Go rules depend on. Workspaces that use rules_go should call this. @@ -38,6 +50,8 @@ def go_rules_dependencies(force = False): if getattr(native, "bazel_version", None): versions.check(MINIMUM_BAZEL_VERSION, bazel_version = native.bazel_version) + _bazel_version_repository(name = "rules_go_bazel_version") + if force: wrapper = _always else: diff --git a/go/private/rules/test.bzl b/go/private/rules/test.bzl index 681c9d622f..76716ed7a5 100644 --- a/go/private/rules/test.bzl +++ b/go/private/rules/test.bzl @@ -52,6 +52,7 @@ load( "@bazel_skylib//lib:structs.bzl", "structs", ) +load("@rules_go_bazel_version//:bazel_version.bzl", "bazel_version") load( "//go/private/skylib/lib:versions.bzl", "versions", @@ -171,8 +172,7 @@ def _go_test_impl(ctx): if ctx.attr.env_inherit: # inherited_environment is only available in Bazel 5.2.0+ # https://github.com/bazelbuild/rules_go/pull/3256 - if not getattr(native, "bazel_version", None) or not versions.check("5.2.0", bazel_version = native.bazel_version): - fail("env_inherit is only available in Bazel 5.2.0 or higher") + versions.check("5.2.0", bazel_version = bazel_version) test_environment = testing.TestEnvironment(env, ctx.attr.env_inherit) # Bazel only looks for coverage data if the test target has an