Gazelle: Difference between revisions
Line 30: | Line 30: | ||
<syntaxhighlight lang='bash'> | <syntaxhighlight lang='bash'> | ||
bazel clean --expunge | bazel clean --expunge | ||
</syntaxhighlight> | |||
Example: | |||
<syntaxhighlight lang='starlark'> | |||
load("@bazel_gazelle//:deps.bzl", "go_repository") | |||
# Download using "go mod download" | |||
go_repository( | |||
name = "com_github_pkg_errors", | |||
importpath = "github.com/pkg/errors", | |||
sum = "h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=", | |||
version = "v0.8.1", | |||
) | |||
.... | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 07:33, 23 November 2024
External
- https://github.com/bazel-contrib/bazel-gazelle/
- https://github.com/bazel-contrib/bazel-gazelle#gazelle-build-file-generator
Internal
Overview
Gazelle is a BUILD file generator for Bazel projects. It can create new BUILD.bazel
files for a project that follows language conventions, and it can update existing build files to include new sources, dependencies, and options.
Gazelle natively supports Go and protobuf.
Gazelle may be run by Bazel using the gazelle
rule:
bazel run //:gazelle
Alternatively, it may be installed and run as a command line tool.
Aside from generating BUILD files for the local source code, Gazelle can also generate build files for external repositories as part of the go_repository rule.
Generating BUILD Files
Repository Rules
go_repository
go_repository
downloads a Go project and generates build files with Gazelle if they are not already present. This is the simplest way to depend on external Go projects. When go_repository
is in module mode, it saves downloaded modules in a shared, internal cache within Bazel's cache. It may be cleared with:
bazel clean --expunge
Example:
load("@bazel_gazelle//:deps.bzl", "go_repository")
# Download using "go mod download"
go_repository(
name = "com_github_pkg_errors",
importpath = "github.com/pkg/errors",
sum = "h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=",
version = "v0.8.1",
)
....
repositories.bzl
Describe the relationship between repositories.bzl
and go.mod
git_repository
Deprecated.
Add a go_repository Rule to WORKSPACE File
bazel run //:gazelle -- update-repos golang.org/x/sys@v0.13.0
adds the following line to the WORKSPACE
file:
go_repository(
name = "org_golang_x_sys",
importpath = "golang.org/x/sys",
sum = "h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=",
version = "v0.13.0",
)