Releases: bazel-contrib/rules_go
v0.43.0
Breaking x/tools upgrade
This change includes a breaking upgrade to golang.org/x/tools
Please make sure to upgrade x/tools to version v0.15.0 to ensure compatibility with rules_go's NoGo.
If you need to use an older version of x/tools (v0.13.0 or earlier), apply the following patch to rules_go:
x-tools.patch
What's Changed
- Test BCR test module on macos_arm64 by @fmeum in #3715
- update documentation for
0.42.0release by @tyler-french in #3716 - add netrc support to go_download_sdk by @justinwon777 in #3718
- Temporarily disable Bzlmod explicitly by @fmeum in #3720
- Fix urls used to get auth in go_download_sdk by @justinwon777 in #3724
- Include
go.envin//gorunfiles by @fmeum in #3722 - Update arm platform constraint to latest value in bazel. by @BryanDClark in #3734
- Add toolchain param to affected actions by @kotlaja in #3740
- upgrade tools by @hawkingrei in #3730
- Also take library deps like srcs into account in go context by @mering in #3725
- Add go_cross_binary to README by @jfirebaugh in #3744
- Update
bazel_featuresto v1.1.1 by @fmeum in #3747 - builder: Make paths absolute for stdliblist (#1357) by @zecke in #3748
- feat(gopackagesdriver): add base test case for go packages driver by @JamyDev in #3743
- Fix bazel query scope not being used by @rastenis in #3688
- Add support for
xtestpackages in Go Packages Driver by @JamyDev in #3750 - upgrade x/tools to 0.15.0 by @tyler-french in #3751
- bug fix: parse embeds in files that contain the double quote rune by @andyscott in #3672
- prepare release 0.43.0 by @tyler-french in #3745
New Contributors
- @justinwon777 made their first contribution in #3718
- @BryanDClark made their first contribution in #3734
- @kotlaja made their first contribution in #3740
- @rastenis made their first contribution in #3688
- @andyscott made their first contribution in #3672
Full Changelog: v0.42.0...v0.43.0
v0.42.0
What's Changed
Added patches to go_download_sdk:
Patches can now be applied to the standard library using go_download_sdk (and go_sdk.download for Bzlmod).
Example:
go_download_sdk(
name = "go_sdk",
sdks = {
"linux_amd64": (
"go{}.linux-amd64.mirror6598503.tar.gz".format(go_version),
"3f5c50e592d8845d30eebd08ddb9c670fd2d909e032b6c2b83ecf97afb34660c",
),
"darwin_arm64": (
"go{}.darwin-arm64.mirror6598503.tar.gz".format(go_version),
"fbe78beee7861da09de9319498a1521bc41a8b79d3ead2218ce307b9fa5503e5",
),
},
patches = [
"//patches:golang_osx_dns_workaround.patch",
],
urls = ["https://dl.google.com/go/{}"],
version = go_version,
)
Other changes included:
- d1da1bb Infer importpath if not set explicitly by @mering (#3705)
- 7309aba Mark
go_sdkmodule extension as{os,arch}_dependentby @fmeum (#3703) - 09a206c Symlink all SDK files with
go_local_sdkby @fmeum (#3696) - 9ebc93c [go_sdk download] allow patches to standard library by @tyler-french (#3684)
- f03a723 bzltestutil: move os.Chdir call into new package by @jayconrod (#3681)
- a8cb4b7 bzltestutil: set importmap to fix run_dir by @jayconrod (#3679)
- 85f2440 Fix: update gomock.bzl by poping incompatible argument by @yongruilin (#3674)
- 5206498 use carved out module for x/tools/go/vcs by @malt3 (#3671)
- 2e821f6 cgo packages with assembly: Support CGO_ENABLED=0 by @evanj (#3661)
- f64211a bzlmod: Add missing experiments and strip_prefix arguments by @fmeum (#3443) (#3663)
- 0da92cd go_context: set GOTOOLCHAIN to 'local' by @sluongng (#3660)
- edf5b64 compilepkg: cgo assembly uses the C compiler by @evanj (#3648)
- 6e10f8c go/tools/gopackagesdriver: pass Compiler and Arch in DriverResponse by @matloob (#3657)
- f5ae196 [proto] Allow multiple outputs from a proto compiler by @tingilee (#3650)
- 57ef719 Add pgo support for go 1.20 by @prestonvanloon (#3641)
- ce32021 Migrate
exec_toolstotoolsongenruleby @fmeum (#3638) - 98165a6 Honor
//go/config:linkmodeforgo_testby @fmeum (#3629) - 61c1e91 Fix
//go/config:linkmodeflag value not being effective by @fmeum (#3627) - b0a9851 Remove deprecated rules by @sluongng (#3538)
- d2a3cf2 Fix compilation_outputs_test on Windows with latest Bazel by @fmeum (#3623)
Full Changelog: v0.41.0...v0.42.0
WORKSPACE code
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "91585017debb61982f7054c9688857a2ad1fd823fc3f9cb05048b0025c47d023",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.42.0/rules_go-v0.42.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.42.0/rules_go-v0.42.0.zip",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
go_rules_dependencies()
go_register_toolchains(version = "1.21.1")
v0.41.0
What's Changed
Starting this release, rules_go no longer ship with @go_googleapis repo. Together with Gazelle v0.32.0, it means that all Go code importing generated code from Google APIs will depend on @org_golang_google_genproto, which is resolved by Go modules. For proto files importing Google APIs proto and generating Go code, users need to:
- Add an
http_archiverule to download Google APIs, e.g.,
http_archive(
name = "googleapis",
sha256 = "9d1a930e767c93c825398b8f8692eca3fe353b9aaadedfbcf1fca2282c85df88",
strip_prefix = "googleapis-64926d52febbf298cb82a8f472ade4a3969ba922",
urls = [
"https://github.com/googleapis/googleapis/archive/64926d52febbf298cb82a8f472ade4a3969ba922.zip",
],
)
load("@googleapis//:repository_rules.bzl", "switched_rules_by_language")
switched_rules_by_language(
name = "com_google_googleapis_imports",
)
Note that the version of Google APIs archive needs to be compatible with the pre-generated code in @org_golang_google_genproto.
- Resolve the proto manually. If Gazelle is being used, directives like the following need to be added to a parent directory of the proto files:
# gazelle:resolve proto proto google/rpc/status.proto @googleapis//google/rpc:status_proto
# gazelle:resolve proto go google/rpc/status.proto @org_golang_google_genproto//googleapis/rpc/status
# gazelle:resolve proto google/longrunning/operations.proto @googleapis//google/longrunning:operations_proto
# gazelle:resolve proto go google/longrunning/operations.proto @org_golang_google_genproto//googleapis/longrunning
Other changes included in this release
- detect_sdk_version: Support 1.21's new VERSION file format by @evanj in #3600
- stdlib: Do not pass -static to cgo by @zecke in #3593
- Expand stdlib packages when queried by @JamyDev in #3606
- Fix stdlib file outputs pointing to processwrapper by @JamyDev in #3608
- Fix
go_sdkextension failure for unnamed root module by @fmeum in #3612 - Adding Uber's hermetic cc toolchain for tests by @linzhp in #3609
- Implement functionality to skip tests via TESTBRIDGE_TEST_ONLY env by @yushan26 in #3618
Full Changelog: v0.40.1...v0.41.0
WORKSPACE code
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "278b7ff5a826f3dc10f04feaf0b70d48b68748ccd512d7f98bf442077f043fe3",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.41.0/rules_go-v0.41.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.41.0/rules_go-v0.41.0.zip",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
go_rules_dependencies()
go_register_toolchains(version = "1.20.5")
v0.40.1
WORKSPACE code
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "51dc53293afe317d2696d4d6433a4c33feedb7748a9e352072e2ec3c0dafd2c6",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.40.1/rules_go-v0.40.1.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.40.1/rules_go-v0.40.1.zip",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
go_rules_dependencies()
go_register_toolchains(version = "1.20.5")
Changes
This patch release cherry-picked two bug fixes related to Go package driver from master
v0.40.0
What's Changed
- Revert "Add automatic platform detection from inbound crosstool_top a… by @fmeum in #3468
- bzlmod: Add dedicated documentation by @fmeum in #3519
- Create TEST_SHARD_STATUS_FILE when sharding tests by @fmeum in #3547
- Move CI flags to .bazelrc and fix BwoB build by @fmeum in #3551
- Re-enable go_path_test on RBE by @sluongng in #3539
- nogo: provide usage doc by @sluongng in #3534
- respect global strip config by @malt3 in #3527
- stdliblist: return generated files by @grampelberg in #3552
- Fix formatting in nogo usage doc by @sluongng in #3557
- Fix
goexperiment.*build tags by @lbcjbb in #3556 - Remove tests for
go_path'slinkmode by @fmeum in #3565 - Fix tests with
--incompatible_disable_starlark_host_transitionsby @fmeum in #3560 - Create empty
.gofile in a random location by @fmeum in #3566 - gopackagesdriver: fix interface to work with golangci-lint (#3523) by @grampelberg in #3524
- Fix typo in load statement for bzlmod docs by @Sovietaced in #3570
- context: remove unused import by @sluongng in #3571
- docs: Mention
use_repoautomation by @fmeum in #3573 - Test basic-gazelle example with incompatible flags by @fmeum in #3575
- go_sdk extension: create
go_host_compatible_sdkrepository by @ylecornec in #3543 - docs: Mention that
gazelle:prefixcan be replaced bygo.modby @fmeum in #3577 - go_download_sdk: apply extraction workaround to zips on non-windows OSs by @jayconrod in #3563
- Fix
go_download_sdkwith Bazel dev versions by @fmeum in #3580 - Implement //nolint parsing similar to golangci-lint by @patrickmscott in #3562
New Contributors
- @bricedp made their first contribution in #3512
- @patrickmscott made their first contribution in #3528
- @grampelberg made their first contribution in #3552
- @Sovietaced made their first contribution in #3570
- @ylecornec made their first contribution in #3543
Full Changelog: v0.39.1...v0.40.0
WORKSPACE code
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "bfc5ce70b9d1634ae54f4e7b495657a18a04e0d596785f672d35d5f505ab491a",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.40.0/rules_go-v0.40.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.40.0/rules_go-v0.40.0.zip",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
go_rules_dependencies()
go_register_toolchains(version = "1.20.5")
v0.39.1
What's Changed
- Reland "Add new darwin CC toolchain for tests (#3460)" (#3502)
- bzlmod: Remove build_file_proto_mode attribute (#3506)
- go_register_toolchains: update sdk_kinds (#3511)
- Ignore pre-compiled stdlib only on 1.19 with experiments (#3508)
- bzlmod: Fix repo name used by gopackagesdriver (#3516)
- Pass gc_goopts to stdlib (#3518)
- Drop coverage linker flags from stdlib build (#3522)
- Fix macOS CI after --remote_download_minimal flip (#3530)
- Add defines for assembly build (#3528)
- go_tool_binary: set GOMAXPROCS to 1 (#3536)
Full Changelog: v0.39.0...v0.39.1
v0.39.0
WORKSPACE code
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "6b65cb7917b4d1709f9410ffe00ecf3e160edf674b78c54a894471320862184f",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.39.0/rules_go-v0.39.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.39.0/rules_go-v0.39.0.zip",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
go_rules_dependencies()
go_register_toolchains(version = "1.20.2")
What's Changed
- Make the toolchain's
gobinary available as a target by @fmeum in #3429 - add bazel test rule for excluded packages in popular_repos by @uberzzr in #3447
- change build test name from 'need_test' to 'build_only' by @uberzzr in #3449
- fix a grammer issue by @Longchuanzheng in #3451
- go: support "all:" prefix for "go:embed" directives by @malt3 in #3455
- Remove
filter_transition_labelworkaround by @fmeum in #3438 - Extract generated code from BUILD.toolchains.bazel into a macro by @fmeum in #3439
- bzlmod: Prohibit undesirable SDK registrations in non-root modules by @fmeum in #3440
- update links to gazelle docs by @garymm in #3464
- bzlmod: Improve SDK registration by @fmeum in #3443
- Expand locations in
x_defsvalues by @fmeum in #3473 - Make
//gousable in scripts run withbazel runby @fmeum in #3474 - Avoid repository rule restarts in go_sdk by @jfirebaugh in #3478
- bzlmod: Test BCR test module on all platforms by @fmeum in #3479
- Improve error when linkmode requires cgo by @fmeum in #3482
- Rename
errorscript ingo_cross_binaryby @fmeum in #3481 - Only infer platforms from crosstool/cpu if at default by @fmeum in #3485
- Add missing darwin CPUs to apple matcher by @keith in #3461
- Canonicalize tags before transitioning by @fmeum in #3484
- Keep build tags that affect the stdlib build by @fmeum in #3488
- Quote
CCif it contains whitespace by @fmeum in #3491 - Disable cgo by default with unsupported compilers by @fmeum in #3493
- Only install
runtime/cgowithpure = Falseby @fmeum in #3492 - Use
ctx.readdirinstead oflsfor SDK platform detection by @fmeum in #3497
New Contributors
- @uberzzr made their first contribution in #3447
- @Longchuanzheng made their first contribution in #3451
- @malt3 made their first contribution in #3455
- @tyler-french made their first contribution in #3495
Full Changelog: v0.38.0...v0.39.0
v0.38.1
Bug fixes
The go_googleapis upgrade in 0.38.0 is too disruptive. It changes the Go import paths of the proto packages, causing build failures in repos trying to upgrade to rules_go 0.38.0. Reverting the go_googleapis to the master of 2022-12-05 (#3432) for now to make rules_go upgrades easier.
WORKSPACE code
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "dd926a88a564a9246713a9c00b35315f54cbd46b31a26d5d8fb264c07045f05d",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
go_rules_dependencies()
go_register_toolchains(version = "1.19.5")
Full Changelog: v0.38.0...v0.38.1
v0.38.0
Breaking changes
Starting this release, rules_go requires Bazel 5.3 and golang/x/tools at least 0.3.0. If you are using stardoc, you also need to upgrade it to 0.5.3 to recognize RunEnvironmentInfo, which is used in this release.
Major new features
This is the first release to support Go 1.20. When on this version of Go, it is highly recommended to use Bazel 6 and set --experimental_output_directory_naming_scheme=diff_against_baseline to prevent certain unnecessary rebuilds.
What's Changed
- preserve intermediate files if
-workis specified by @motiejus in #3389 - Adapt
lcov_coverage_testtoexec.Commandchange by @fmeum in #3392 - explicitly build relative path for Tool command in lcov_coverage_test by @matloob in #3399
- Add support for building with boringcrypto by @matloob in #3398
- Generalize
boringcryptotoGOEXPERIMENTsupport by @fmeum in #3401 - Replace
cfg = "host"withcfg = "exec"by @fmeum in #3404 - always produce .a files at the beginning of a build by @matloob in #3385
- Mark
nogotargets asmanualto keep top-level symlinks by @fmeum in #3410 - Refactoring the extld related logic by @linzhp in #3400
- Fix incompatible flags not applied to integration tests by @fmeum in #3415
- chore: remove experimental warning from bzlmod module by @alexeagle in #3418
- Add a clarifying error about dependency cycle found for internal tests by @yushan26 in #3422
- Do not use exec paths for rundir by @fmeum in #3414
- Upgrade org_golang_x_tools to 0.5.0 by @linzhp in #3356
- fix: Relative path of embedsrc by @bakjos in #3407
- Add support for env_inherit by @ttpathan in #3256
- Update stardoc to 0.5.3 by @fmeum in #3427
- Add
envattribute togo_binaryby @fmeum in #3428
New Contributors
- @matloob made their first contribution in #3399
- @yushan26 made their first contribution in #3422
- @bakjos made their first contribution in #3407
- @ttpathan made their first contribution in #3256
Full Changelog: v0.37.0...v0.38.0
v0.37.0
Major New Features
- Support fetching packages for generated code in the Go Packages Driver
What's Changed
- bzlmod: Add missing
strip_prefixfield tosource.template.jsonby @fmeum in #3359 - Declare toolchains in a separate repository by @jfirebaugh in #3348
- Delete legacy actions API by @fmeum in #3173
- go_path: support go:embed of generated files by @S-Chan in #3285
- Properly deprecate
bindata,go_embed_data, andgo_embed_data_depsby @fmeum in #3362 - link.bzl: ignore duplicate dep on coverdata by @robfig in #3032
- feat(pkg-drv): add support for generated files by @JamyDev in #3354
- Remove unused variables in link action by @fmeum in #3367
- Reduce number of declared files in
emit_stdlibby @fmeum in #3366 - Update docs regarding vendored proto files by @garymm in #3360
- go link: use external linker when in race mode by @motiejus in #3370
- Adding first example by @chrislovecnm in #3317
- fix(packagesdriver): bazelFlags should prefix the command by @JamyDev in #3371
- chore(gpd): export aspect utils for reusability by @JamyDev in #3373
- nogo: Add a _base key to be a default config for all Analyzers. by @DolceTriade in #3351
- Document that
Rlocationcan return relative paths by @fmeum in #3377 - Fix normalization check for
Rlocationpath by @fmeum in #3378 - fix(gpd): Write large target patterns to file by @JamyDev in #3372
- Make Go runfiles library repo mapping aware by @fmeum in #3347
New Contributors
- @jfirebaugh made their first contribution in #3348
- @S-Chan made their first contribution in #3285
- @garymm made their first contribution in #3360
- @motiejus made their first contribution in #3370
- @chrislovecnm made their first contribution in #3317
- @DolceTriade made their first contribution in #3351
Full Changelog: v0.36.0...v0.37.0
WORKSPACE code
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "56d8c5a5c91e1af73eca71a6fab2ced959b67c86d12ba37feedb0a2dfea441a6",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
go_rules_dependencies()
go_register_toolchains(version = "1.19.3")