aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Mazurskiy <126021+ash2k@users.noreply.github.com>2022-09-29 00:32:39 +1000
committerGitHub <noreply@github.com>2022-09-28 07:32:39 -0700
commit3e0fcc4f47ed6a63b19aea036b05aed03a7e0b1e (patch)
tree2b92bd55df3f81a1525b6503af3ccc5945224420
parentb6f10d71719c0c944cbd6c219a0a0eea6dc0d3b4 (diff)
downloadbazelbuild-rules_go-3e0fcc4f47ed6a63b19aea036b05aed03a7e0b1e.tar.gz
Allow to select host/remote Go SDK (#3303)
-rw-r--r--go/private/BUILD.sdk.bazel8
-rw-r--r--go/private/sdk.bzl5
-rw-r--r--go/toolchains.rst2
-rw-r--r--tests/core/go_download_sdk/go_download_sdk_test.go31
4 files changed, 30 insertions, 16 deletions
diff --git a/go/private/BUILD.sdk.bazel b/go/private/BUILD.sdk.bazel
index d33813e0..305fce8c 100644
--- a/go/private/BUILD.sdk.bazel
+++ b/go/private/BUILD.sdk.bazel
@@ -97,6 +97,13 @@ config_setting(
},
)
+config_setting(
+ name = "match_sdk_type",
+ flag_values = {
+ sdk_version_label: "{sdk_type}",
+ },
+)
+
selects.config_setting_group(
name = "sdk_version_setting",
match_any = [
@@ -105,6 +112,7 @@ selects.config_setting_group(
":match_major_minor_version",
":match_patch_version",
":match_prerelease_version",
+ ":match_sdk_type",
],
)
diff --git a/go/private/sdk.bzl b/go/private/sdk.bzl
index 3bc23d9f..9a092e12 100644
--- a/go/private/sdk.bzl
+++ b/go/private/sdk.bzl
@@ -31,7 +31,7 @@ def _go_host_sdk_impl(ctx):
goroot = _detect_host_sdk(ctx)
platform = _detect_sdk_platform(ctx, goroot)
version = _detect_sdk_version(ctx, goroot)
- _sdk_build_file(ctx, platform, version)
+ _sdk_build_file(ctx, platform, version, "host")
_local_sdk(ctx, goroot)
_go_host_sdk = repository_rule(
@@ -231,7 +231,7 @@ def _local_sdk(ctx, path):
for entry in ["src", "pkg", "bin", "lib"]:
ctx.symlink(path + "/" + entry, entry)
-def _sdk_build_file(ctx, platform, version):
+def _sdk_build_file(ctx, platform, version, sdk_type = "remote"):
ctx.file("ROOT")
goos, _, goarch = platform.partition("_")
@@ -254,6 +254,7 @@ def _sdk_build_file(ctx, platform, version):
"{minor_version}": str(minor),
"{patch_version}": str(patch),
"{prerelease_suffix}": prerelease,
+ "{sdk_type}": sdk_type,
},
)
diff --git a/go/toolchains.rst b/go/toolchains.rst
index 25b7ee84..74f01e72 100644
--- a/go/toolchains.rst
+++ b/go/toolchains.rst
@@ -76,6 +76,8 @@ the flag ``--@io_bazel_rules_go//go/toolchain:sdk_version="version"`` where
``"version"`` is the SDK version you would like to build with, eg. ``"1.18.3"``.
The SDK version can omit the patch, or include a prerelease part, eg. ``"1"``,
``"1.18"``, ``"1.18.0"``, and ``"1.19.0beta1"`` are all valid values for ``sdk_version``.
+When ``go_host_sdk`` is used, ``"version"`` can be set to ``host`` to refer to the host Go SDK.
+It can also be set ``remote`` to match any non-host version.
The toolchain
~~~~~~~~~~~~~
diff --git a/tests/core/go_download_sdk/go_download_sdk_test.go b/tests/core/go_download_sdk/go_download_sdk_test.go
index 51dd5c0a..4a5999ee 100644
--- a/tests/core/go_download_sdk/go_download_sdk_test.go
+++ b/tests/core/go_download_sdk/go_download_sdk_test.go
@@ -90,7 +90,7 @@ go_download_sdk(
{
desc: "multiple_sdks",
rule: `
-load("@io_bazel_rules_go//go:deps.bzl", "go_download_sdk")
+load("@io_bazel_rules_go//go:deps.bzl", "go_download_sdk", "go_host_sdk")
go_download_sdk(
name = "go_sdk",
@@ -107,7 +107,8 @@ go_download_sdk(
`,
optToWantVersion: map[string]string{
"": "go1.16",
- "--@io_bazel_rules_go//go/toolchain:sdk_version=1": "go1.16",
+ "--@io_bazel_rules_go//go/toolchain:sdk_version=remote": "go1.16",
+ "--@io_bazel_rules_go//go/toolchain:sdk_version=1": "go1.16",
"--@io_bazel_rules_go//go/toolchain:sdk_version=1.17": "go1.17",
"--@io_bazel_rules_go//go/toolchain:sdk_version=1.17.0": "go1.17",
"--@io_bazel_rules_go//go/toolchain:sdk_version=1.17.1": "go1.17.1",
@@ -122,7 +123,7 @@ go_download_sdk(
i := bytes.Index(origWorkspaceData, []byte("go_rules_dependencies()"))
if i < 0 {
- t.Fatalf("%s: could not find call to go_rules_dependencies()")
+ t.Fatal("could not find call to go_rules_dependencies()")
}
buf := &bytes.Buffer{}
@@ -143,17 +144,19 @@ go_register_toolchains()
}()
for opt, wantVersion := range test.optToWantVersion {
- args := []string{
- "test",
- "//:version_test",
- "--test_arg=-version=" + wantVersion,
- }
- if opt != "" {
- args = append(args, opt)
- }
- if err := bazel_testing.RunBazel(args...); err != nil {
- t.Fatal(err)
- }
+ t.Run(wantVersion, func(t *testing.T) {
+ args := []string{
+ "test",
+ "//:version_test",
+ "--test_arg=-version=" + wantVersion,
+ }
+ if opt != "" {
+ args = append(args, opt)
+ }
+ if err := bazel_testing.RunBazel(args...); err != nil {
+ t.Fatal(err)
+ }
+ })
}
})
}