-
-
Notifications
You must be signed in to change notification settings - Fork 675
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create empty .go
file in a random location
#3566
Conversation
9e919ce
to
1da4247
Compare
Isolating the empty `.go` files generated for targets without sources and removing them after a build turned out not to solve issues with concurrent unsandboxed builds causing races. Instead, just generate the file in a temporary location, which for a truly empty file does not result in (non-hermetic) source file paths being included in the archive. Along the way fix a potential source of non-hermeticity in `go_bazel_test`.
1da4247
to
3e9f43c
Compare
.go
file in the output tree.go
file in a random location
cc @sluongng |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tests passed in Uber
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a ton for fixing this. I did not know that using a random path would still ensure the hermeticity for the action the last time I touch this code path.
I have some minor nits but love the overall solution 👍
defer os.Remove(emptyGoFile.Name()) | ||
defer emptyGoFile.Close() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: it would be a bit easier to read if we combine these 2 defer into 1 single defer func() {}
.
It's a bit hard to read here whether we are intentionally rm-ing an opened file handle or not.
Then we could also add err check for the os.Remove()
call.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
defer func() {}
would definitely be more readable. But what would we do if os.Remove()
or Close()
return an error? This is part of best-effort cleanup, so I don't think we would want to fail compilation over it.
if _, err := emptyGoFile.WriteString("package empty\n"); err != nil { | ||
return err | ||
} | ||
if err := emptyGoFile.Close(); err != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So we are closing the same file... twice. And we ignore the error happening when we close the second time inside the defer.
func Test(t *testing.T) { | ||
commonArgs := []string{ | ||
"--spawn_strategy=local", | ||
"--compilation_mode=dbg", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
any particular reason why dbg
was needed here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not needed, but I wanted to ensure that the output does include all debug symbols, even if we move to not generate them in other compilation modes in the future.
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io_bazel_rules_go](https://togithub.com/bazelbuild/rules_go) | http_archive | minor | `v0.39.1` -> `v0.40.0` | --- ### ⚠ Dependency Lookup Warnings ⚠ Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>bazelbuild/rules_go</summary> ### [`v0.40.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.40.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.39.1...v0.40.0) #### What's Changed - Revert "Add automatic platform detection from inbound crosstool_top a… by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3468](https://togithub.com/bazelbuild/rules_go/pull/3468) - bzlmod: Add dedicated documentation by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3519](https://togithub.com/bazelbuild/rules_go/pull/3519) - Create TEST_SHARD_STATUS_FILE when sharding tests by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3547](https://togithub.com/bazelbuild/rules_go/pull/3547) - Move CI flags to .bazelrc and fix BwoB build by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3551](https://togithub.com/bazelbuild/rules_go/pull/3551) - Re-enable go_path_test on RBE by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3539](https://togithub.com/bazelbuild/rules_go/pull/3539) - nogo: provide usage doc by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3534](https://togithub.com/bazelbuild/rules_go/pull/3534) - respect global strip config by [@​malt3](https://togithub.com/malt3) in [https://github.com/bazelbuild/rules_go/pull/3527](https://togithub.com/bazelbuild/rules_go/pull/3527) - stdliblist: return generated files by [@​grampelberg](https://togithub.com/grampelberg) in [https://github.com/bazelbuild/rules_go/pull/3552](https://togithub.com/bazelbuild/rules_go/pull/3552) - Fix formatting in nogo usage doc by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3557](https://togithub.com/bazelbuild/rules_go/pull/3557) - Fix `goexperiment.*` build tags by [@​lbcjbb](https://togithub.com/lbcjbb) in [https://github.com/bazelbuild/rules_go/pull/3556](https://togithub.com/bazelbuild/rules_go/pull/3556) - Remove tests for `go_path`'s `link` mode by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3565](https://togithub.com/bazelbuild/rules_go/pull/3565) - Fix tests with `--incompatible_disable_starlark_host_transitions` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3560](https://togithub.com/bazelbuild/rules_go/pull/3560) - Create empty `.go` file in a random location by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3566](https://togithub.com/bazelbuild/rules_go/pull/3566) - gopackagesdriver: fix interface to work with golangci-lint ([#​3523](https://togithub.com/bazelbuild/rules_go/issues/3523)) by [@​grampelberg](https://togithub.com/grampelberg) in [https://github.com/bazelbuild/rules_go/pull/3524](https://togithub.com/bazelbuild/rules_go/pull/3524) - Fix typo in load statement for bzlmod docs by [@​Sovietaced](https://togithub.com/Sovietaced) in [https://github.com/bazelbuild/rules_go/pull/3570](https://togithub.com/bazelbuild/rules_go/pull/3570) - context: remove unused import by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3571](https://togithub.com/bazelbuild/rules_go/pull/3571) - docs: Mention `use_repo` automation by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3573](https://togithub.com/bazelbuild/rules_go/pull/3573) - Test basic-gazelle example with incompatible flags by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3575](https://togithub.com/bazelbuild/rules_go/pull/3575) - go_sdk extension: create `go_host_compatible_sdk` repository by [@​ylecornec](https://togithub.com/ylecornec) in [https://github.com/bazelbuild/rules_go/pull/3543](https://togithub.com/bazelbuild/rules_go/pull/3543) - docs: Mention that `gazelle:prefix` can be replaced by `go.mod` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3577](https://togithub.com/bazelbuild/rules_go/pull/3577) - go_download_sdk: apply extraction workaround to zips on non-windows OSs by [@​jayconrod](https://togithub.com/jayconrod) in [https://github.com/bazelbuild/rules_go/pull/3563](https://togithub.com/bazelbuild/rules_go/pull/3563) - Fix `go_download_sdk` with Bazel dev versions by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3580](https://togithub.com/bazelbuild/rules_go/pull/3580) - Implement //nolint parsing similar to golangci-lint by [@​patrickmscott](https://togithub.com/patrickmscott) in [https://github.com/bazelbuild/rules_go/pull/3562](https://togithub.com/bazelbuild/rules_go/pull/3562) #### New Contributors - [@​bricedp](https://togithub.com/bricedp) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3512](https://togithub.com/bazelbuild/rules_go/pull/3512) - [@​patrickmscott](https://togithub.com/patrickmscott) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3528](https://togithub.com/bazelbuild/rules_go/pull/3528) - [@​grampelberg](https://togithub.com/grampelberg) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3552](https://togithub.com/bazelbuild/rules_go/pull/3552) - [@​Sovietaced](https://togithub.com/Sovietaced) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3570](https://togithub.com/bazelbuild/rules_go/pull/3570) - [@​ylecornec](https://togithub.com/ylecornec) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3543](https://togithub.com/bazelbuild/rules_go/pull/3543) **Full Changelog**: bazel-contrib/rules_go@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") </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/kreempuff/rules_unreal_engine). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMzEuMCIsInVwZGF0ZWRJblZlciI6IjM1LjEzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io_bazel_rules_go](https://togithub.com/bazelbuild/rules_go) | http_archive | minor | `v0.39.1` -> `v0.40.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_go</summary> ### [`v0.40.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.40.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.39.1...v0.40.0) #### What's Changed - Revert "Add automatic platform detection from inbound crosstool_top a… by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3468](https://togithub.com/bazelbuild/rules_go/pull/3468) - bzlmod: Add dedicated documentation by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3519](https://togithub.com/bazelbuild/rules_go/pull/3519) - Create TEST_SHARD_STATUS_FILE when sharding tests by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3547](https://togithub.com/bazelbuild/rules_go/pull/3547) - Move CI flags to .bazelrc and fix BwoB build by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3551](https://togithub.com/bazelbuild/rules_go/pull/3551) - Re-enable go_path_test on RBE by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3539](https://togithub.com/bazelbuild/rules_go/pull/3539) - nogo: provide usage doc by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3534](https://togithub.com/bazelbuild/rules_go/pull/3534) - respect global strip config by [@​malt3](https://togithub.com/malt3) in [https://github.com/bazelbuild/rules_go/pull/3527](https://togithub.com/bazelbuild/rules_go/pull/3527) - stdliblist: return generated files by [@​grampelberg](https://togithub.com/grampelberg) in [https://github.com/bazelbuild/rules_go/pull/3552](https://togithub.com/bazelbuild/rules_go/pull/3552) - Fix formatting in nogo usage doc by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3557](https://togithub.com/bazelbuild/rules_go/pull/3557) - Fix `goexperiment.*` build tags by [@​lbcjbb](https://togithub.com/lbcjbb) in [https://github.com/bazelbuild/rules_go/pull/3556](https://togithub.com/bazelbuild/rules_go/pull/3556) - Remove tests for `go_path`'s `link` mode by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3565](https://togithub.com/bazelbuild/rules_go/pull/3565) - Fix tests with `--incompatible_disable_starlark_host_transitions` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3560](https://togithub.com/bazelbuild/rules_go/pull/3560) - Create empty `.go` file in a random location by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3566](https://togithub.com/bazelbuild/rules_go/pull/3566) - gopackagesdriver: fix interface to work with golangci-lint ([#​3523](https://togithub.com/bazelbuild/rules_go/issues/3523)) by [@​grampelberg](https://togithub.com/grampelberg) in [https://github.com/bazelbuild/rules_go/pull/3524](https://togithub.com/bazelbuild/rules_go/pull/3524) - Fix typo in load statement for bzlmod docs by [@​Sovietaced](https://togithub.com/Sovietaced) in [https://github.com/bazelbuild/rules_go/pull/3570](https://togithub.com/bazelbuild/rules_go/pull/3570) - context: remove unused import by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3571](https://togithub.com/bazelbuild/rules_go/pull/3571) - docs: Mention `use_repo` automation by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3573](https://togithub.com/bazelbuild/rules_go/pull/3573) - Test basic-gazelle example with incompatible flags by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3575](https://togithub.com/bazelbuild/rules_go/pull/3575) - go_sdk extension: create `go_host_compatible_sdk` repository by [@​ylecornec](https://togithub.com/ylecornec) in [https://github.com/bazelbuild/rules_go/pull/3543](https://togithub.com/bazelbuild/rules_go/pull/3543) - docs: Mention that `gazelle:prefix` can be replaced by `go.mod` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3577](https://togithub.com/bazelbuild/rules_go/pull/3577) - go_download_sdk: apply extraction workaround to zips on non-windows OSs by [@​jayconrod](https://togithub.com/jayconrod) in [https://github.com/bazelbuild/rules_go/pull/3563](https://togithub.com/bazelbuild/rules_go/pull/3563) - Fix `go_download_sdk` with Bazel dev versions by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3580](https://togithub.com/bazelbuild/rules_go/pull/3580) - Implement //nolint parsing similar to golangci-lint by [@​patrickmscott](https://togithub.com/patrickmscott) in [https://github.com/bazelbuild/rules_go/pull/3562](https://togithub.com/bazelbuild/rules_go/pull/3562) #### New Contributors - [@​bricedp](https://togithub.com/bricedp) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3512](https://togithub.com/bazelbuild/rules_go/pull/3512) - [@​patrickmscott](https://togithub.com/patrickmscott) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3528](https://togithub.com/bazelbuild/rules_go/pull/3528) - [@​grampelberg](https://togithub.com/grampelberg) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3552](https://togithub.com/bazelbuild/rules_go/pull/3552) - [@​Sovietaced](https://togithub.com/Sovietaced) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3570](https://togithub.com/bazelbuild/rules_go/pull/3570) - [@​ylecornec](https://togithub.com/ylecornec) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3543](https://togithub.com/bazelbuild/rules_go/pull/3543) **Full Changelog**: bazel-contrib/rules_go@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") </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/cgrindel/rules_swift_package_manager). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMzEuMCIsInVwZGF0ZWRJblZlciI6IjM1LjEzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io_bazel_rules_go](https://togithub.com/bazelbuild/rules_go) | http_archive | minor | `v0.39.1` -> `v0.40.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_go</summary> ### [`v0.40.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.40.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.39.1...v0.40.0) #### What's Changed - Revert "Add automatic platform detection from inbound crosstool_top a… by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3468](https://togithub.com/bazelbuild/rules_go/pull/3468) - bzlmod: Add dedicated documentation by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3519](https://togithub.com/bazelbuild/rules_go/pull/3519) - Create TEST_SHARD_STATUS_FILE when sharding tests by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3547](https://togithub.com/bazelbuild/rules_go/pull/3547) - Move CI flags to .bazelrc and fix BwoB build by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3551](https://togithub.com/bazelbuild/rules_go/pull/3551) - Re-enable go_path_test on RBE by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3539](https://togithub.com/bazelbuild/rules_go/pull/3539) - nogo: provide usage doc by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3534](https://togithub.com/bazelbuild/rules_go/pull/3534) - respect global strip config by [@​malt3](https://togithub.com/malt3) in [https://github.com/bazelbuild/rules_go/pull/3527](https://togithub.com/bazelbuild/rules_go/pull/3527) - stdliblist: return generated files by [@​grampelberg](https://togithub.com/grampelberg) in [https://github.com/bazelbuild/rules_go/pull/3552](https://togithub.com/bazelbuild/rules_go/pull/3552) - Fix formatting in nogo usage doc by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3557](https://togithub.com/bazelbuild/rules_go/pull/3557) - Fix `goexperiment.*` build tags by [@​lbcjbb](https://togithub.com/lbcjbb) in [https://github.com/bazelbuild/rules_go/pull/3556](https://togithub.com/bazelbuild/rules_go/pull/3556) - Remove tests for `go_path`'s `link` mode by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3565](https://togithub.com/bazelbuild/rules_go/pull/3565) - Fix tests with `--incompatible_disable_starlark_host_transitions` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3560](https://togithub.com/bazelbuild/rules_go/pull/3560) - Create empty `.go` file in a random location by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3566](https://togithub.com/bazelbuild/rules_go/pull/3566) - gopackagesdriver: fix interface to work with golangci-lint ([#​3523](https://togithub.com/bazelbuild/rules_go/issues/3523)) by [@​grampelberg](https://togithub.com/grampelberg) in [https://github.com/bazelbuild/rules_go/pull/3524](https://togithub.com/bazelbuild/rules_go/pull/3524) - Fix typo in load statement for bzlmod docs by [@​Sovietaced](https://togithub.com/Sovietaced) in [https://github.com/bazelbuild/rules_go/pull/3570](https://togithub.com/bazelbuild/rules_go/pull/3570) - context: remove unused import by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3571](https://togithub.com/bazelbuild/rules_go/pull/3571) - docs: Mention `use_repo` automation by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3573](https://togithub.com/bazelbuild/rules_go/pull/3573) - Test basic-gazelle example with incompatible flags by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3575](https://togithub.com/bazelbuild/rules_go/pull/3575) - go_sdk extension: create `go_host_compatible_sdk` repository by [@​ylecornec](https://togithub.com/ylecornec) in [https://github.com/bazelbuild/rules_go/pull/3543](https://togithub.com/bazelbuild/rules_go/pull/3543) - docs: Mention that `gazelle:prefix` can be replaced by `go.mod` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3577](https://togithub.com/bazelbuild/rules_go/pull/3577) - go_download_sdk: apply extraction workaround to zips on non-windows OSs by [@​jayconrod](https://togithub.com/jayconrod) in [https://github.com/bazelbuild/rules_go/pull/3563](https://togithub.com/bazelbuild/rules_go/pull/3563) - Fix `go_download_sdk` with Bazel dev versions by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3580](https://togithub.com/bazelbuild/rules_go/pull/3580) - Implement //nolint parsing similar to golangci-lint by [@​patrickmscott](https://togithub.com/patrickmscott) in [https://github.com/bazelbuild/rules_go/pull/3562](https://togithub.com/bazelbuild/rules_go/pull/3562) #### New Contributors - [@​bricedp](https://togithub.com/bricedp) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3512](https://togithub.com/bazelbuild/rules_go/pull/3512) - [@​patrickmscott](https://togithub.com/patrickmscott) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3528](https://togithub.com/bazelbuild/rules_go/pull/3528) - [@​grampelberg](https://togithub.com/grampelberg) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3552](https://togithub.com/bazelbuild/rules_go/pull/3552) - [@​Sovietaced](https://togithub.com/Sovietaced) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3570](https://togithub.com/bazelbuild/rules_go/pull/3570) - [@​ylecornec](https://togithub.com/ylecornec) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3543](https://togithub.com/bazelbuild/rules_go/pull/3543) **Full Changelog**: bazel-contrib/rules_go@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") </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/cgrindel/bazel-starlib). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMzEuMCIsInVwZGF0ZWRJblZlciI6IjM1LjEzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
For more information: https://github.com/bazelbuild/rules_go/releases/tag/v0.40.1 https://github.com/bazelbuild/rules_go/releases/tag/v0.40.0 This should help with buildbuddy-io/buildbuddy-internal#2314 thanks to bazel-contrib/rules_go#3566
For more information: https://github.com/bazelbuild/rules_go/releases/tag/v0.40.1 https://github.com/bazelbuild/rules_go/releases/tag/v0.40.0 This should help with buildbuddy-io/buildbuddy-internal#2314 thanks to bazel-contrib/rules_go#3566
Isolating the empty `.go` files generated for targets without sources and removing them after a build turned out not to solve issues with concurrent unsandboxed builds causing races. Instead, just generate the file in a temporary location, which for a truly empty file does not result in (non-hermetic) source file paths being included in the archive. Along the way fix a potential source of non-hermeticity in `go_bazel_test`.
What type of PR is this?
Bug fix
What does this PR do? Why is it needed?
Isolating the empty
.go
files generated for targets without sourcesand removing them after a build turned out not to solve issues with
concurrent unsandboxed builds causing races. Instead, just generate the
file in a temporary location, which for a truly empty file does not
result in (non-hermetic) source file paths being included in the
archive.
Along the way fix a potential source of non-hermeticity in
go_bazel_test
.Which issues(s) does this PR fix?
Fixes #3558
Other notes for review