Skip to content

Conversation

@fmeum
Copy link
Member

@fmeum fmeum commented Feb 1, 2023

What type of PR is this?

Feature

What does this PR do? Why is it needed?

Improve Bzlmod toolchain registration

Before this commit, users had to do the following in their
MODULE.bazel file to register a custom Go SDK:

go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(name = "my_go", version = "1.19.5")
use_repo(go_sdk, "my_go")
register_toolchains("@my_go_toolchains//:all")

This has several drawbacks:

  • Names can collide with SDKs defined by transitive dependencies as they
    all live in the same namespace.
  • The SDK has to be brought into scope with use_repo.
  • Since the toolchain definitions are separate from the SDK repo, users
    need to know the naming convention for the separate toolchain repo for
    their register_toolchains calls.
  • It encourages using the SDK repo directly, which is almost never
    correct: Toolchain resolution should be used instead, possibly in the
    form of the new convenience target @rules_go//go.

With this commit, Bazel toolchain definitions are emitted into a single
repo and registered by rules_go itself. SDK repo names are mangled and
kept as an implementation detail of rules_go. Module dependencies are no
longer allowed to register SDKs with a non-mangled name, but an
exception is made for the root module for the sake of backwards
compatibility and to address unforeseen use cases.

As a result of this change, SDK registration now looks as follows:

go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.19.5")

Other notes for review

Currently stacked on #3438, #3439 and #3440, only the last commit is new.

@fmeum fmeum force-pushed the bzlmod-no-name-in-sdk branch 5 times, most recently from 777300a to c1087f5 Compare February 2, 2023 07:39
@fmeum fmeum changed the title Bzlmod no name in sdk bzlmod: Improve SDK registration Feb 2, 2023
@fmeum fmeum force-pushed the bzlmod-no-name-in-sdk branch from c1087f5 to 8ef9ea1 Compare February 2, 2023 10:13
@fmeum
Copy link
Member Author

fmeum commented Feb 2, 2023

@Wyverald This is the PR I told you about. Could you review the last commit? Leaving this as draft as it is stacked on other PRs with refactorings that enable this change but that you don't have to look at.

@fmeum fmeum requested a review from Wyverald February 2, 2023 10:13
Copy link
Contributor

@Wyverald Wyverald left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't say I understand everything that's going on, but the basics of generating the SDK hub repo looks good to me. (Only looked at the 4th commit as you asked)

Copy link
Contributor

@tyler-french tyler-french left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few stylistic comments. Logic and flow LGTM!

Before this commit, users had to do the following in their
`MODULE.bazel` file to register a custom Go SDK:

```
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(name = "my_go", version = "1.19.5")
use_repo(go_sdk, "my_go")
register_toolchains("@my_go_toolchains//:all")
```

This has several drawbacks:
* Names can collide with SDKs defined by transitive dependencies as they
  all live in the same namespace.
* The SDK has to be brought into scope with `use_repo`.
* Since the toolchain definitions are separate from the SDK repo, users
  need to know the naming convention for the separate toolchain repo for
  their `register_toolchains` calls.
* It encourages using the SDK repo directly, which is almost never
  correct: Toolchain resolution should be used instead, possibly in the
  form of the new convenience target `@rules_go//go`.

With this commit, Bazel toolchain definitions are emitted into a single
repo and registered by rules_go itself. SDK repo names are mangled and
kept as an implementation detail of rules_go. Module dependencies are no
longer allowed to register SDKs with a non-mangled name, but an
exception is made for the root module for the sake of backwards
compatibility and to address unforeseen use cases.

As a result of this change, SDK registration now looks as follows:

```
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.19.5")
```
@fmeum fmeum force-pushed the bzlmod-no-name-in-sdk branch from 7fe9edb to 73ce796 Compare February 26, 2023 22:39
@fmeum fmeum force-pushed the bzlmod-no-name-in-sdk branch 2 times, most recently from 0df694a to b6be5da Compare March 8, 2023 20:57
@fmeum fmeum force-pushed the bzlmod-no-name-in-sdk branch from b6be5da to ba478ce Compare March 8, 2023 21:03
@fmeum fmeum merged commit 89e3296 into master Mar 8, 2023
@fmeum fmeum deleted the bzlmod-no-name-in-sdk branch March 8, 2023 21:31
renovate bot referenced this pull request in cgrindel/bazel-starlib Mar 29, 2023
[![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.38.1` -> `v0.39.0` |

---

### Release Notes

<details>
<summary>bazelbuild/rules_go</summary>

###
[`v0.39.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.39.0)

[Compare
Source](https://togithub.com/bazelbuild/rules_go/compare/v0.38.1...v0.39.0)

#### `WORKSPACE` code

load("@&#8203;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("@&#8203;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 `go` binary available as a target by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3429](https://togithub.com/bazelbuild/rules_go/pull/3429)
- add bazel test rule for excluded packages in popular_repos by
[@&#8203;uberzzr](https://togithub.com/uberzzr) in
[https://github.com/bazelbuild/rules_go/pull/3447](https://togithub.com/bazelbuild/rules_go/pull/3447)
- change build test name from 'need_test' to 'build_only' by
[@&#8203;uberzzr](https://togithub.com/uberzzr) in
[https://github.com/bazelbuild/rules_go/pull/3449](https://togithub.com/bazelbuild/rules_go/pull/3449)
- fix a grammer issue by
[@&#8203;Longchuanzheng](https://togithub.com/Longchuanzheng) in
[https://github.com/bazelbuild/rules_go/pull/3451](https://togithub.com/bazelbuild/rules_go/pull/3451)
- go: support "all:" prefix for "go:embed" directives by
[@&#8203;malt3](https://togithub.com/malt3) in
[https://github.com/bazelbuild/rules_go/pull/3455](https://togithub.com/bazelbuild/rules_go/pull/3455)
- Remove `filter_transition_label` workaround by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3438](https://togithub.com/bazelbuild/rules_go/pull/3438)
- Extract generated code from BUILD.toolchains.bazel into a macro by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3439](https://togithub.com/bazelbuild/rules_go/pull/3439)
- bzlmod: Prohibit undesirable SDK registrations in non-root modules by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3440](https://togithub.com/bazelbuild/rules_go/pull/3440)
- update links to gazelle docs by
[@&#8203;garymm](https://togithub.com/garymm) in
[https://github.com/bazelbuild/rules_go/pull/3464](https://togithub.com/bazelbuild/rules_go/pull/3464)
- bzlmod: Improve SDK registration by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3443](https://togithub.com/bazelbuild/rules_go/pull/3443)
- Expand locations in `x_defs` values by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3473](https://togithub.com/bazelbuild/rules_go/pull/3473)
- Make `//go` usable in scripts run with `bazel run` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3474](https://togithub.com/bazelbuild/rules_go/pull/3474)
- Avoid repository rule restarts in go_sdk by
[@&#8203;jfirebaugh](https://togithub.com/jfirebaugh) in
[https://github.com/bazelbuild/rules_go/pull/3478](https://togithub.com/bazelbuild/rules_go/pull/3478)
- bzlmod: Test BCR test module on all platforms by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3479](https://togithub.com/bazelbuild/rules_go/pull/3479)
- Improve error when linkmode requires cgo by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3482](https://togithub.com/bazelbuild/rules_go/pull/3482)
- Rename `error` script in `go_cross_binary` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3481](https://togithub.com/bazelbuild/rules_go/pull/3481)
- Only infer platforms from crosstool/cpu if at default by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3485](https://togithub.com/bazelbuild/rules_go/pull/3485)
- Add missing darwin CPUs to apple matcher by
[@&#8203;keith](https://togithub.com/keith) in
[https://github.com/bazelbuild/rules_go/pull/3461](https://togithub.com/bazelbuild/rules_go/pull/3461)
- Canonicalize tags before transitioning by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3484](https://togithub.com/bazelbuild/rules_go/pull/3484)
- Keep build tags that affect the stdlib build by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3488](https://togithub.com/bazelbuild/rules_go/pull/3488)
- Quote `CC` if it contains whitespace by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3491](https://togithub.com/bazelbuild/rules_go/pull/3491)
- Disable cgo by default with unsupported compilers by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3493](https://togithub.com/bazelbuild/rules_go/pull/3493)
- Only install `runtime/cgo` with `pure = False` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3492](https://togithub.com/bazelbuild/rules_go/pull/3492)
- Use `ctx.readdir` instead of `ls` for SDK platform detection by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3497](https://togithub.com/bazelbuild/rules_go/pull/3497)

#### New Contributors

- [@&#8203;uberzzr](https://togithub.com/uberzzr) made their first
contribution in
[https://github.com/bazelbuild/rules_go/pull/3447](https://togithub.com/bazelbuild/rules_go/pull/3447)
- [@&#8203;Longchuanzheng](https://togithub.com/Longchuanzheng) made
their first contribution in
[https://github.com/bazelbuild/rules_go/pull/3451](https://togithub.com/bazelbuild/rules_go/pull/3451)
- [@&#8203;malt3](https://togithub.com/malt3) made their first
contribution in
[https://github.com/bazelbuild/rules_go/pull/3455](https://togithub.com/bazelbuild/rules_go/pull/3455)
- [@&#8203;tyler-french](https://togithub.com/tyler-french) made their
first contribution in
[https://github.com/bazelbuild/rules_go/pull/3495](https://togithub.com/bazelbuild/rules_go/pull/3495)

**Full Changelog**:
bazel-contrib/rules_go@v0.38.0...v0.39.0

</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://app.renovatebot.com/dashboard#github/cgrindel/bazel-starlib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yMi4xIiwidXBkYXRlZEluVmVyIjoiMzUuMjIuMSJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot referenced this pull request in cgrindel/rules_swift_package_manager Mar 29, 2023
[![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.38.1` -> `v0.39.0` |

---

### Release Notes

<details>
<summary>bazelbuild/rules_go</summary>

###
[`v0.39.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.39.0)

[Compare
Source](https://togithub.com/bazelbuild/rules_go/compare/v0.38.1...v0.39.0)

#### `WORKSPACE` code

load("@&#8203;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("@&#8203;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 `go` binary available as a target by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3429](https://togithub.com/bazelbuild/rules_go/pull/3429)
- add bazel test rule for excluded packages in popular_repos by
[@&#8203;uberzzr](https://togithub.com/uberzzr) in
[https://github.com/bazelbuild/rules_go/pull/3447](https://togithub.com/bazelbuild/rules_go/pull/3447)
- change build test name from 'need_test' to 'build_only' by
[@&#8203;uberzzr](https://togithub.com/uberzzr) in
[https://github.com/bazelbuild/rules_go/pull/3449](https://togithub.com/bazelbuild/rules_go/pull/3449)
- fix a grammer issue by
[@&#8203;Longchuanzheng](https://togithub.com/Longchuanzheng) in
[https://github.com/bazelbuild/rules_go/pull/3451](https://togithub.com/bazelbuild/rules_go/pull/3451)
- go: support "all:" prefix for "go:embed" directives by
[@&#8203;malt3](https://togithub.com/malt3) in
[https://github.com/bazelbuild/rules_go/pull/3455](https://togithub.com/bazelbuild/rules_go/pull/3455)
- Remove `filter_transition_label` workaround by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3438](https://togithub.com/bazelbuild/rules_go/pull/3438)
- Extract generated code from BUILD.toolchains.bazel into a macro by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3439](https://togithub.com/bazelbuild/rules_go/pull/3439)
- bzlmod: Prohibit undesirable SDK registrations in non-root modules by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3440](https://togithub.com/bazelbuild/rules_go/pull/3440)
- update links to gazelle docs by
[@&#8203;garymm](https://togithub.com/garymm) in
[https://github.com/bazelbuild/rules_go/pull/3464](https://togithub.com/bazelbuild/rules_go/pull/3464)
- bzlmod: Improve SDK registration by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3443](https://togithub.com/bazelbuild/rules_go/pull/3443)
- Expand locations in `x_defs` values by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3473](https://togithub.com/bazelbuild/rules_go/pull/3473)
- Make `//go` usable in scripts run with `bazel run` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3474](https://togithub.com/bazelbuild/rules_go/pull/3474)
- Avoid repository rule restarts in go_sdk by
[@&#8203;jfirebaugh](https://togithub.com/jfirebaugh) in
[https://github.com/bazelbuild/rules_go/pull/3478](https://togithub.com/bazelbuild/rules_go/pull/3478)
- bzlmod: Test BCR test module on all platforms by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3479](https://togithub.com/bazelbuild/rules_go/pull/3479)
- Improve error when linkmode requires cgo by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3482](https://togithub.com/bazelbuild/rules_go/pull/3482)
- Rename `error` script in `go_cross_binary` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3481](https://togithub.com/bazelbuild/rules_go/pull/3481)
- Only infer platforms from crosstool/cpu if at default by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3485](https://togithub.com/bazelbuild/rules_go/pull/3485)
- Add missing darwin CPUs to apple matcher by
[@&#8203;keith](https://togithub.com/keith) in
[https://github.com/bazelbuild/rules_go/pull/3461](https://togithub.com/bazelbuild/rules_go/pull/3461)
- Canonicalize tags before transitioning by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3484](https://togithub.com/bazelbuild/rules_go/pull/3484)
- Keep build tags that affect the stdlib build by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3488](https://togithub.com/bazelbuild/rules_go/pull/3488)
- Quote `CC` if it contains whitespace by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3491](https://togithub.com/bazelbuild/rules_go/pull/3491)
- Disable cgo by default with unsupported compilers by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3493](https://togithub.com/bazelbuild/rules_go/pull/3493)
- Only install `runtime/cgo` with `pure = False` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3492](https://togithub.com/bazelbuild/rules_go/pull/3492)
- Use `ctx.readdir` instead of `ls` for SDK platform detection by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3497](https://togithub.com/bazelbuild/rules_go/pull/3497)

#### New Contributors

- [@&#8203;uberzzr](https://togithub.com/uberzzr) made their first
contribution in
[https://github.com/bazelbuild/rules_go/pull/3447](https://togithub.com/bazelbuild/rules_go/pull/3447)
- [@&#8203;Longchuanzheng](https://togithub.com/Longchuanzheng) made
their first contribution in
[https://github.com/bazelbuild/rules_go/pull/3451](https://togithub.com/bazelbuild/rules_go/pull/3451)
- [@&#8203;malt3](https://togithub.com/malt3) made their first
contribution in
[https://github.com/bazelbuild/rules_go/pull/3455](https://togithub.com/bazelbuild/rules_go/pull/3455)
- [@&#8203;tyler-french](https://togithub.com/tyler-french) made their
first contribution in
[https://github.com/bazelbuild/rules_go/pull/3495](https://togithub.com/bazelbuild/rules_go/pull/3495)

**Full Changelog**:
bazel-contrib/rules_go@v0.38.0...v0.39.0

</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://app.renovatebot.com/dashboard#github/cgrindel/swift_bazel).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yMi4xIiwidXBkYXRlZEluVmVyIjoiMzUuMjIuMSJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot referenced this pull request in kreempuff/rules_unreal_engine Apr 15, 2023
[![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.38.1` -> `v0.39.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.39.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.39.0)

[Compare
Source](https://togithub.com/bazelbuild/rules_go/compare/v0.38.1...v0.39.0)

#### `WORKSPACE` code

load("@&#8203;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("@&#8203;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 `go` binary available as a target by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3429](https://togithub.com/bazelbuild/rules_go/pull/3429)
- add bazel test rule for excluded packages in popular_repos by
[@&#8203;uberzzr](https://togithub.com/uberzzr) in
[https://github.com/bazelbuild/rules_go/pull/3447](https://togithub.com/bazelbuild/rules_go/pull/3447)
- change build test name from 'need_test' to 'build_only' by
[@&#8203;uberzzr](https://togithub.com/uberzzr) in
[https://github.com/bazelbuild/rules_go/pull/3449](https://togithub.com/bazelbuild/rules_go/pull/3449)
- fix a grammer issue by
[@&#8203;Longchuanzheng](https://togithub.com/Longchuanzheng) in
[https://github.com/bazelbuild/rules_go/pull/3451](https://togithub.com/bazelbuild/rules_go/pull/3451)
- go: support "all:" prefix for "go:embed" directives by
[@&#8203;malt3](https://togithub.com/malt3) in
[https://github.com/bazelbuild/rules_go/pull/3455](https://togithub.com/bazelbuild/rules_go/pull/3455)
- Remove `filter_transition_label` workaround by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3438](https://togithub.com/bazelbuild/rules_go/pull/3438)
- Extract generated code from BUILD.toolchains.bazel into a macro by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3439](https://togithub.com/bazelbuild/rules_go/pull/3439)
- bzlmod: Prohibit undesirable SDK registrations in non-root modules by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3440](https://togithub.com/bazelbuild/rules_go/pull/3440)
- update links to gazelle docs by
[@&#8203;garymm](https://togithub.com/garymm) in
[https://github.com/bazelbuild/rules_go/pull/3464](https://togithub.com/bazelbuild/rules_go/pull/3464)
- bzlmod: Improve SDK registration by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3443](https://togithub.com/bazelbuild/rules_go/pull/3443)
- Expand locations in `x_defs` values by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3473](https://togithub.com/bazelbuild/rules_go/pull/3473)
- Make `//go` usable in scripts run with `bazel run` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3474](https://togithub.com/bazelbuild/rules_go/pull/3474)
- Avoid repository rule restarts in go_sdk by
[@&#8203;jfirebaugh](https://togithub.com/jfirebaugh) in
[https://github.com/bazelbuild/rules_go/pull/3478](https://togithub.com/bazelbuild/rules_go/pull/3478)
- bzlmod: Test BCR test module on all platforms by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3479](https://togithub.com/bazelbuild/rules_go/pull/3479)
- Improve error when linkmode requires cgo by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3482](https://togithub.com/bazelbuild/rules_go/pull/3482)
- Rename `error` script in `go_cross_binary` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3481](https://togithub.com/bazelbuild/rules_go/pull/3481)
- Only infer platforms from crosstool/cpu if at default by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3485](https://togithub.com/bazelbuild/rules_go/pull/3485)
- Add missing darwin CPUs to apple matcher by
[@&#8203;keith](https://togithub.com/keith) in
[https://github.com/bazelbuild/rules_go/pull/3461](https://togithub.com/bazelbuild/rules_go/pull/3461)
- Canonicalize tags before transitioning by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3484](https://togithub.com/bazelbuild/rules_go/pull/3484)
- Keep build tags that affect the stdlib build by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3488](https://togithub.com/bazelbuild/rules_go/pull/3488)
- Quote `CC` if it contains whitespace by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3491](https://togithub.com/bazelbuild/rules_go/pull/3491)
- Disable cgo by default with unsupported compilers by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3493](https://togithub.com/bazelbuild/rules_go/pull/3493)
- Only install `runtime/cgo` with `pure = False` by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3492](https://togithub.com/bazelbuild/rules_go/pull/3492)
- Use `ctx.readdir` instead of `ls` for SDK platform detection by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_go/pull/3497](https://togithub.com/bazelbuild/rules_go/pull/3497)

#### New Contributors

- [@&#8203;uberzzr](https://togithub.com/uberzzr) made their first
contribution in
[https://github.com/bazelbuild/rules_go/pull/3447](https://togithub.com/bazelbuild/rules_go/pull/3447)
- [@&#8203;Longchuanzheng](https://togithub.com/Longchuanzheng) made
their first contribution in
[https://github.com/bazelbuild/rules_go/pull/3451](https://togithub.com/bazelbuild/rules_go/pull/3451)
- [@&#8203;malt3](https://togithub.com/malt3) made their first
contribution in
[https://github.com/bazelbuild/rules_go/pull/3455](https://togithub.com/bazelbuild/rules_go/pull/3455)
- [@&#8203;tyler-french](https://togithub.com/tyler-french) made their
first contribution in
[https://github.com/bazelbuild/rules_go/pull/3495](https://togithub.com/bazelbuild/rules_go/pull/3495)

**Full Changelog**:
bazel-contrib/rules_go@v0.38.0...v0.39.0

</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://app.renovatebot.com/dashboard#github/kreempuff/rules_unreal_engine).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yMi4xIiwidXBkYXRlZEluVmVyIjoiMzUuNDAuMCJ9-->
tingilee pushed a commit to tingilee/rules_go that referenced this pull request Jul 19, 2023
Before this commit, users had to do the following in their
`MODULE.bazel` file to register a custom Go SDK:

```
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(name = "my_go", version = "1.19.5")
use_repo(go_sdk, "my_go")
register_toolchains("@my_go_toolchains//:all")
```

This has several drawbacks:
* Names can collide with SDKs defined by transitive dependencies as they
  all live in the same namespace.
* The SDK has to be brought into scope with `use_repo`.
* Since the toolchain definitions are separate from the SDK repo, users
  need to know the naming convention for the separate toolchain repo for
  their `register_toolchains` calls.
* It encourages using the SDK repo directly, which is almost never
  correct: Toolchain resolution should be used instead, possibly in the
  form of the new convenience target `@rules_go//go`.

With this commit, Bazel toolchain definitions are emitted into a single
repo and registered by rules_go itself. SDK repo names are mangled and
kept as an implementation detail of rules_go. Module dependencies are no
longer allowed to register SDKs with a non-mangled name, but an
exception is made for the root module for the sake of backwards
compatibility and to address unforeseen use cases.

As a result of this change, SDK registration now looks as follows:

```
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.19.5")
```
@sluongng
Copy link
Contributor

sluongng commented Nov 6, 2023

Reading the source today and goos plural being gees cracked me up. 🤣

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants