From e03c217cc1928e8c43611226b23aa310ef73674f Mon Sep 17 00:00:00 2001 From: Sergiusz Bazanski Date: Sat, 15 Feb 2020 01:04:38 +0100 Subject: [PATCH] go: bump rules_go, autodetect nix for go toolchains Change-Id: If10a7843e5e54ade82fbeec85f4e6727e4d2a117 --- WORKSPACE | 23 +++++++++++++---------- tools/go_sdk.bzl | 28 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 tools/go_sdk.bzl diff --git a/WORKSPACE b/WORKSPACE index 68f8f7d6..caa380b6 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -169,24 +169,27 @@ http_file( http_archive( name = "io_bazel_rules_go", urls = [ - "https://storage.googleapis.com/bazel-mirror/github.com/bazelbuild/rules_go/releases/download/0.18.7/rules_go-0.18.7.tar.gz", - "https://github.com/bazelbuild/rules_go/releases/download/0.18.7/rules_go-0.18.7.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.21.3/rules_go-v0.21.3.tar.gz", + "https://github.com/bazelbuild/rules_go/releases/download/v0.21.3/rules_go-v0.21.3.tar.gz", ], - sha256 = "45409e6c4f748baa9e05f8f6ab6efaa05739aa064e3ab94e5a1a09849c51806a", + sha256 = "af04c969321e8f428f63ceb73463d6ea817992698974abeff0161e069cd08bd6", ) -load("@io_bazel_rules_go//go:deps.bzl", "go_rules_dependencies", "go_register_toolchains") - -go_rules_dependencies() - -go_register_toolchains() +# Invoke go_rules_dependencies depending on host platform. +load("//tools:go_sdk.bzl", "gen_imports") +gen_imports(name = "go_sdk_imports") +load("@go_sdk_imports//:imports.bzl", "load_go_sdk") +load_go_sdk() # Go Gazelle rules http_archive( name = "bazel_gazelle", - urls = ["https://github.com/bazelbuild/bazel-gazelle/releases/download/0.17.0/bazel-gazelle-0.17.0.tar.gz"], - sha256 = "3c681998538231a2d24d0c07ed5a7658cb72bfb5fd4bf9911157c0e9ac6a2687", + urls = [ + "https://storage.googleapis.com/bazel-mirror/github.com/bazelbuild/bazel-gazelle/releases/download/v0.20.0/bazel-gazelle-v0.20.0.tar.gz", + "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.20.0/bazel-gazelle-v0.20.0.tar.gz", + ], + sha256 = "d8c45ee70ec39a57e7a05e5027c32b1576cc7f16d9dd37135b0eddde45cf1b10", ) load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") diff --git a/tools/go_sdk.bzl b/tools/go_sdk.bzl new file mode 100644 index 00000000..1884c427 --- /dev/null +++ b/tools/go_sdk.bzl @@ -0,0 +1,28 @@ +def _gen_imports_impl(ctx): + ctx.file("BUILD", "") + + is_nixos = "NIX_PATH" in ctx.os.environ + bzl_file_content = """ +load( + "@io_bazel_rules_go//go:deps.bzl", + "go_register_toolchains", + "go_rules_dependencies", +) +def load_go_sdk(): + go_rules_dependencies() + go_register_toolchains({go_version}) + """.format( + go_version = 'go_version = "host"' if is_nixos else "", + ) + + ctx.file("imports.bzl", bzl_file_content) + +_gen_imports = repository_rule( + implementation = _gen_imports_impl, + attrs = dict(), +) + +def gen_imports(name): + _gen_imports( + name = name, + )