Skip to content

Commit

Permalink
Prototype of bzlmod-powered transitive dependencies
Browse files Browse the repository at this point in the history
Modules can use the `go_deps` module extension to define Go dependencies.

Only Go module dependencies are supported for now (`go_deps.module`).

HTTP and VCS Go repositories can be implemented for the root module only
using the new bazel_module.is_root field added in
bazelbuild/bazel#15792 has been merged. They
should follow the semantics of archive_override/git_override.
  • Loading branch information
fmeum committed Jul 6, 2022
1 parent f1b4e7b commit 46818e4
Show file tree
Hide file tree
Showing 21 changed files with 691 additions and 7 deletions.
18 changes: 17 additions & 1 deletion .bazelci/presubmit.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
platforms:
tasks:
ubuntu1804:
platform: ubuntu1804
build_targets:
- "..."
run_targets:
Expand All @@ -9,17 +10,32 @@ platforms:
- "//:gazelle_ci"
test_targets:
- "..."
ubuntu1804_bcr_tests:
name: BCR test module
platform: ubuntu1804
# Includes https://github.com/bazelbuild/bazel/commit/4e439689db73a12b9c8a1f9f1a5f8023e09d40b0,
# which will eventually be released in Bazel 5.3.0.
bazel_version: 4e439689db73a12b9c8a1f9f1a5f8023e09d40b0
working_directory: tests/bcr
build_targets:
- "//..."
- "//:gazelle"
test_targets:
- "//..."
ubuntu1604:
platform: ubuntu1604
build_targets:
- "..."
test_targets:
- "..."
macos:
platform: macos
build_targets:
- "..."
test_targets:
- "..."
windows:
platform: windows
build_targets:
- "--"
- "..."
Expand Down
1 change: 1 addition & 0 deletions .bazelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
tests/bcr
13 changes: 8 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
bazel-bazel-gazelle
bazel-bin
bazel-genfiles
bazel-out
bazel-testlogs
/bazel-bazel-gazelle
/bazel-bin
/bazel-out
/bazel-testlogs
/tests/bcr/bazel-bcr
/tests/bcr/bazel-bin
/tests/bcr/bazel-out
/tests/bcr/bazel-testlogs
7 changes: 7 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -109,3 +109,10 @@ bzl_library(
"@bazel_tools//tools/build_defs/repo:git.bzl",
],
)

bzl_library(
name = "extensions",
srcs = ["extensions.bzl"],
visibility = ["//visibility:public"],
deps = ["//internal/bzlmod:go_dep"],
)
244 changes: 244 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
module(
name = "gazelle",
version = "0.26.0",
)

print("WARNING: The bazel_gazelle 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 = "rules_go", version = "0.33.0", repo_name = "io_bazel_rules_go")

go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")

# Known to exist since it is instantiated by rules_go itself.
use_repo(go_sdk, "go_default_sdk")

non_module_deps = use_extension("//internal/bzlmod:non_module_deps.bzl", "non_module_deps")
use_repo(
non_module_deps,
"bazel_gazelle_go_repository_cache",
"bazel_gazelle_go_repository_config",
"bazel_gazelle_go_repository_tools",
)

go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
go_deps.module(
importpath = "honnef.co/go/tools",
sum = "h1:/hemPrYIhOhy8zYrNj+069zDB68us2sMGsfkFJO0iZs=",
version = "v0.0.0-20190523083050-ea95bdfd59fc",
)
go_deps.module(
importpath = "github.com/bazelbuild/buildtools",
sum = "h1:ox8T5nCkvLflRgKZ6uzzdvLDN3gbNZBgLBqA5Xgn7QA=",
version = "v0.0.0-20220323134444-a9f46b2bb3de",
build_naming_convention = "go_default_library",
)
go_deps.module(
importpath = "github.com/bazelbuild/rules_go",
sum = "h1:8/MDe6zCE7nYKXhlbamM1izUgJjw2ce7M5kd4QKF/3Y=",
version = "v0.31.0",
)
go_deps.module(
importpath = "github.com/bmatcuk/doublestar/v4",
sum = "h1:X0krlUVAVmtr2cRoTqR8aDMrDqnB36ht8wpWTiQ3jsA=",
version = "v4.0.2",
)
go_deps.module(
importpath = "github.com/BurntSushi/toml",
sum = "h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=",
version = "v0.3.1",
)
go_deps.module(
importpath = "github.com/census-instrumentation/opencensus-proto",
sum = "h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk=",
version = "v0.2.1",
)
go_deps.module(
importpath = "github.com/chzyer/logex",
sum = "h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=",
version = "v1.1.10",
)
go_deps.module(
importpath = "github.com/chzyer/readline",
sum = "h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=",
version = "v0.0.0-20180603132655-2972be24d48e",
)
go_deps.module(
importpath = "github.com/chzyer/test",
sum = "h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=",
version = "v0.0.0-20180213035817-a1ea475d72b1",
)
go_deps.module(
importpath = "github.com/client9/misspell",
sum = "h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=",
version = "v0.3.4",
)
go_deps.module(
importpath = "github.com/davecgh/go-spew",
sum = "h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=",
version = "v1.1.1",
)
go_deps.module(
importpath = "github.com/envoyproxy/go-control-plane",
sum = "h1:4cmBvAEBNJaGARUEs3/suWRyfyBfhf7I60WBZq+bv2w=",
version = "v0.9.1-0.20191026205805-5f8ba28d4473",
)
go_deps.module(
importpath = "github.com/envoyproxy/protoc-gen-validate",
sum = "h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=",
version = "v0.1.0",
)
go_deps.module(
importpath = "github.com/fsnotify/fsnotify",
sum = "h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=",
version = "v1.5.1",
)
go_deps.module(
importpath = "github.com/golang/glog",
sum = "h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=",
version = "v0.0.0-20160126235308-23def4e6c14b",
)
go_deps.module(
importpath = "github.com/golang/mock",
sum = "h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8=",
version = "v1.1.1",
)
go_deps.module(
importpath = "github.com/golang/protobuf",
sum = "h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=",
version = "v1.4.3",
)
go_deps.module(
importpath = "github.com/google/go-cmp",
sum = "h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=",
version = "v0.5.7",
)
go_deps.module(
importpath = "github.com/pelletier/go-toml",
sum = "h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=",
version = "v1.9.4",
)
go_deps.module(
importpath = "github.com/pmezard/go-difflib",
sum = "h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=",
version = "v1.0.0",
)
go_deps.module(
importpath = "github.com/prometheus/client_model",
sum = "h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM=",
version = "v0.0.0-20190812154241-14fe0d1b01d4",
)
go_deps.module(
importpath = "github.com/yuin/goldmark",
sum = "h1:OtISOGfH6sOWa1/qXqqAiOIAO6Z5J3AEAE18WAq6BiQ=",
version = "v1.4.0",
)
go_deps.module(
importpath = "cloud.google.com/go",
sum = "h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ=",
version = "v0.26.0",
)
go_deps.module(
importpath = "gopkg.in/check.v1",
sum = "h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=",
version = "v0.0.0-20161208181325-20d25e280405",
)
go_deps.module(
importpath = "gopkg.in/yaml.v2",
sum = "h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=",
version = "v2.2.2",
)
go_deps.module(
importpath = "go.starlark.net",
sum = "h1:xwwDQW5We85NaTk2APgoN9202w/l0DVGp+GZMfsrh7s=",
version = "v0.0.0-20210223155950-e043a3d3c984",
)
go_deps.module(
importpath = "google.golang.org/appengine",
sum = "h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=",
version = "v1.4.0",
)
go_deps.module(
importpath = "google.golang.org/genproto",
sum = "h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=",
version = "v0.0.0-20200526211855-cb27e3aa2013",
)
go_deps.module(
importpath = "google.golang.org/grpc",
sum = "h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=",
version = "v1.27.0",
)
go_deps.module(
importpath = "google.golang.org/protobuf",
sum = "h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=",
version = "v1.25.0",
)
go_deps.module(
importpath = "golang.org/x/crypto",
sum = "h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=",
version = "v0.0.0-20191011191535-87dc89f01550",
)
go_deps.module(
importpath = "golang.org/x/exp",
sum = "h1:c2HOrn5iMezYjSlGPncknSEr/8x5LELb/ilJbXi9DEA=",
version = "v0.0.0-20190121172915-509febef88a4",
)
go_deps.module(
importpath = "golang.org/x/lint",
sum = "h1:XQyxROzUlZH+WIQwySDgnISgOivlhjIEwaQaJEJrrN0=",
version = "v0.0.0-20190313153728-d0100b6bd8b3",
)
go_deps.module(
importpath = "golang.org/x/mod",
sum = "h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=",
version = "v0.6.0-dev.0.20220106191415-9b9b3d81d5e3",
)
go_deps.module(
importpath = "golang.org/x/net",
sum = "h1:20cMwl2fHAzkJMEA+8J4JgqBQcQGzbisXo31MIeenXI=",
version = "v0.0.0-20210805182204-aaa1db679c0d",
)
go_deps.module(
importpath = "golang.org/x/oauth2",
sum = "h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs=",
version = "v0.0.0-20180821212333-d2e6202438be",
)
go_deps.module(
importpath = "golang.org/x/sync",
sum = "h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=",
version = "v0.0.0-20210220032951-036812b2e83c",
)
go_deps.module(
importpath = "golang.org/x/sys",
sum = "h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs=",
version = "v0.0.0-20220319134239-a9b59b0215f8",
)
go_deps.module(
importpath = "golang.org/x/text",
sum = "h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=",
version = "v0.3.6",
)
go_deps.module(
importpath = "golang.org/x/tools",
sum = "h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20=",
version = "v0.1.10",
)
go_deps.module(
importpath = "golang.org/x/xerrors",
sum = "h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=",
version = "v0.0.0-20200804184101-5ec99f83aff1",
)
use_repo(
go_deps,
"com_github_bazelbuild_buildtools",
"com_github_bmatcuk_doublestar_v4",
"com_github_fsnotify_fsnotify",
"com_github_google_go_cmp",
"com_github_pelletier_go_toml",
"com_github_pmezard_go_difflib",
"org_golang_x_mod",
"org_golang_x_sync",
"org_golang_x_tools",
# Used internally by the go_deps module extension.
"_bazel_gazelle_go_repository_directives",
)
3 changes: 3 additions & 0 deletions extensions.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
load("//internal/bzlmod:go_deps.bzl", _go_deps = "go_deps")

go_deps = _go_deps
1 change: 1 addition & 0 deletions internal/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ filegroup(
"overlay_repository.bzl",
"repository_docs.bzl",
"repository_rules_test_errors.patch",
"//internal/bzlmod:all_files",
"//internal/gazellebinarytest:all_files",
"//internal/generationtest:all_files",
"//internal/language:all_files",
Expand Down
40 changes: 40 additions & 0 deletions internal/bzlmod/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")

filegroup(
name = "all_files",
testonly = True,
srcs = [
"BUILD.bazel",
"go_dep.bzl",
"non_module_deps.bzl",
"semver.bzl",
],
visibility = ["//visibility:public"],
)

bzl_library(
name = "go_dep",
srcs = ["go_dep.bzl"],
visibility = ["//:__subpackages__"],
deps = [
":semver",
"//internal:go_repository",
],
)

bzl_library(
name = "non_module_deps",
srcs = ["non_module_deps.bzl"],
visibility = ["//:__subpackages__"],
deps = [
"//internal:go_repository_cache",
"//internal:go_repository_config",
"//internal:go_repository_tools",
],
)

bzl_library(
name = "semver",
srcs = ["semver.bzl"],
visibility = ["//:__subpackages__"],
)
Loading

0 comments on commit 46818e4

Please sign in to comment.