-
Notifications
You must be signed in to change notification settings - Fork 648
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This commit adds a MODULE.bazel that makes rules_go usable as a bzlmod module for basic use cases. The new module definition is verified by a test module that will be used in the presubmit tests of the Bazel Central Registry (BCR). The following features require more thought and/or work and are not yet supported: * SDK rules other than go_host_sdk and go_download_sdk. * non-no-op nogo * go_proto_library
- Loading branch information
Showing
14 changed files
with
158 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
tests/tests.bcr |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
/bazel-* | ||
/tests/core/cgo/libimported.* | ||
/tests/core/cgo/libversioned.* | ||
/tests/bcr/bazel-* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
module( | ||
name = "io_bazel_rules_go", | ||
version = "0.33.0", | ||
compatibility_level = 0, | ||
toolchains_to_register = [ | ||
"@go_default_sdk//:all", | ||
], | ||
) | ||
|
||
print("WARNING: The rules_go Bazel module is still highly experimental and subject to change at any time. Only use it to try out bzlmod for now.") | ||
|
||
bazel_dep(name = "bazel_skylib", version = "1.2.0") | ||
bazel_dep(name = "platforms", version = "0.0.4") | ||
|
||
non_module_dependencies = use_extension("@io_bazel_rules_go//go/private:extensions.bzl", "non_module_dependencies") | ||
use_repo( | ||
non_module_dependencies, | ||
"io_bazel_rules_nogo", | ||
) | ||
|
||
go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk") | ||
go_sdk.download(name = "go_default_sdk", version = "1.18.3") | ||
use_repo(go_sdk, "go_default_sdk") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
load("//go/private:extensions.bzl", _go_sdk = "go_sdk") | ||
|
||
go_sdk = _go_sdk |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
load("//go/private:sdk.bzl", "go_download_sdk", "go_host_sdk") | ||
load("//go/private:repositories.bzl", "go_rules_dependencies") | ||
|
||
_download_tag = tag_class( | ||
attrs = { | ||
"name": attr.string(mandatory = True), | ||
"goos": attr.string(), | ||
"goarch": attr.string(), | ||
"sdks": attr.string_list_dict(), | ||
"urls": attr.string_list(default = ["https://dl.google.com/go/{}"]), | ||
"version": attr.string(), | ||
"strip_prefix": attr.string(default = "go"), | ||
}, | ||
) | ||
|
||
_host_tag = tag_class( | ||
attrs = { | ||
"name": attr.string(mandatory = True), | ||
}, | ||
) | ||
|
||
def _go_sdk_impl(ctx): | ||
for mod in ctx.modules: | ||
for download_tag in mod.tags.download: | ||
go_download_sdk( | ||
name = download_tag.name, | ||
goos = download_tag.goos, | ||
goarch = download_tag.goarch, | ||
sdks = download_tag.sdks, | ||
urls = download_tag.urls, | ||
version = download_tag.version, | ||
register_toolchains = False, | ||
) | ||
for host_tag in mod.tags.host: | ||
go_host_sdk( | ||
name = host_tag.name, | ||
register_toolchains = False, | ||
) | ||
|
||
go_sdk = module_extension( | ||
implementation = _go_sdk_impl, | ||
tag_classes = { | ||
"download": _download_tag, | ||
"host": _host_tag, | ||
}, | ||
) | ||
|
||
def _non_module_dependencies_impl(ctx): | ||
go_rules_dependencies(force = True) | ||
|
||
non_module_dependencies = module_extension( | ||
implementation = _non_module_dependencies_impl, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
build --experimental_enable_bzlmod |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
6.0.0-pre.20220526.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
load("@my_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") | ||
|
||
go_library( | ||
name = "lib", | ||
srcs = ["lib.go"], | ||
importpath = "example.com/lib", | ||
) | ||
|
||
go_binary( | ||
name = "main", | ||
srcs = ["main.go"], | ||
deps = [":lib"], | ||
) | ||
|
||
go_test( | ||
name = "test", | ||
srcs = ["test.go"], | ||
embed = [":lib"], | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
module( | ||
name = "rules_go_bcr_tests", | ||
# Test that the default SDK is registered by not registering one from the test module. | ||
) | ||
|
||
bazel_dep(name = "io_bazel_rules_go", version = "", repo_name = "my_rules_go") | ||
local_path_override( | ||
module_name = "io_bazel_rules_go", | ||
path = "../..", | ||
) | ||
|
||
# Test that this correctly downloads the SDK by requesting it from the commandline (see presubmit.yml). | ||
go_sdk = use_extension("@my_rules_go//go:extensions.bzl", "go_sdk") | ||
go_sdk.download(name = "go_sdk", version = "1.17.5") | ||
use_repo(go_sdk, "go_sdk") |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package lib | ||
|
||
func Name() string { | ||
return "bzlmod" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package main | ||
|
||
import ( | ||
"fmt" | ||
|
||
"example.com/lib" | ||
) | ||
|
||
func main() { | ||
fmt.Printf("Hello %s!", lib.Name()) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package lib | ||
|
||
import ( | ||
"testing" | ||
) | ||
|
||
func TestName(t *testing.T) { | ||
if Name() != "bzlmod" { | ||
t.Fail() | ||
} | ||
} |