diff --git a/WORKSPACE b/WORKSPACE index 90aa2f19c..339d2a6a4 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,6 +1,12 @@ # gazelle:repository_macro hack/build/repos.bzl%go_repositories workspace(name = "com_github_jetstack_cert_manager") +load("//:workspace.bzl", "check_min_bazel_version") + +# rules_go v0.28.0 requires Bazel v4.0.0 as minimum +# https://github.com/bazelbuild/rules_go/releases/tag/v0.28.0 +check_min_bazel_version("4.0.0") + load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( diff --git a/workspace.bzl b/workspace.bzl new file mode 100644 index 000000000..deafebde6 --- /dev/null +++ b/workspace.bzl @@ -0,0 +1,42 @@ +# Copyright 2021 The cert-manager Authors. +# +# 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. + +# File contents copied from https://github.com/pixie-io/pixie/blob/main/workspace.bzl + +# Common functions and imports used by the WORKSPACE file. + +def _parse_bazel_version(bazel_version): + # Remove commit from version. + version = bazel_version.split(" ", 1)[0] + + # Split into (release, date) parts and only return the release + # as a tuple of integers. + parts = version.split("-", 1) + + # Turn "release" into a tuple of strings + version_tuple = () + for number in parts[0].split("."): + version_tuple += (str(number),) + return version_tuple + +# Check that a minimum version of bazel is being used. +def check_min_bazel_version(bazel_version): + if "bazel_version" in dir(native) and native.bazel_version: + current_bazel_version = _parse_bazel_version(native.bazel_version) + minimum_bazel_version = _parse_bazel_version(bazel_version) + if minimum_bazel_version > current_bazel_version: + fail("\nCurrent Bazel version is {}, expected at least {}\n".format( + native.bazel_version, + bazel_version, + ))