-
-
Notifications
You must be signed in to change notification settings - Fork 662
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
feat(mode): add purego
tag when pure
#3901
Conversation
For what it's worth: this works with cloudflare/circl#492 |
610327f
to
8d0ad1e
Compare
This branch updates Gazelle to 0.36.0 to get the
That would come from the I can reproduce that locally:
That is a a bug with Bazel 6.0.0, 6.1.0, 6.2.0. Fixed in 6.3.0. We may have to update to 6.3.0 in the CI. FYI: @tyler-french, @fmeum |
4d1e036
to
c273e90
Compare
I think it's fine to require 6.3.0+ and make the according change to CI. Minor updates are assumed to be backwards compatible anyway. |
OK. Updated to |
@mattyclarkson Thanks! @tyler-french Could you test this on the Über codebase? |
b1536ac
to
c08a320
Compare
@tyler-french / @fmeum if you have time in the next release cycle: it'd be great to get this in. It would allow cloudflare/circl#492 to build without modification to the generated Gazelle build files (and possibly other modules). Thanks. |
The community has agreed[1] that "pure" builds of Go code should use the `purego` build tag. This change adds that de-facto tag. The minimum version of Gazelle is bumped to `0.36.0` which includes a patch[2] for ignoring the `purego` tag so that the source flies are passed to the compiler for conditional compilation decisions. [1]: golang/go#23172 [2]: bazel-contrib/bazel-gazelle#1767
Yes. I was blocked on something else but I will get this tested this week. |
I tested this and its compatible with all existing rules, but I'm trying to remove Are there other changes needed to fix this build? |
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.
Tested at Uber
You need cloudflare/circl#492 which switches all their build tags to Gazelle learnt to understand With those two things and this patch, you should be able to generate working build files direcly with Gazelle. If you have a Go module that depends on |
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io_bazel_rules_go](https://togithub.com/bazelbuild/rules_go) | http_archive | minor | `v0.47.1` -> `v0.48.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_go (io_bazel_rules_go)</summary> ### [`v0.48.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.48.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.47.1...v0.48.0) #### Important Changes! `--incompatible_enable_proto_toolchain_resolution` is now supported in `rules_go`. This means that protoc should now be supplied as a toolchain. `protoc` can be registered using https://github.com/aspect-build/toolchains_protoc, or a local proto toolchain can be added. #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "33acc4ae0f70502db4b893c9fc1dd7a9bf998c23e7ff2c4517741d4049a976f8", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.22.3") #### What's Changed - Update docs to cover new FilePath ReplaceDirective Support by [@​stefanpenner](https://togithub.com/stefanpenner) in [https://github.com/bazelbuild/rules_go/pull/3931](https://togithub.com/bazelbuild/rules_go/pull/3931) - go_test: use different mnemonic for compilation by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3936](https://togithub.com/bazelbuild/rules_go/pull/3936) - Add go.work support to the documentation by [@​stefanpenner](https://togithub.com/stefanpenner) in [https://github.com/bazelbuild/rules_go/pull/3932](https://togithub.com/bazelbuild/rules_go/pull/3932) - feat(mode): add `purego` tag when `pure` by [@​mattyclarkson](https://togithub.com/mattyclarkson) in [https://github.com/bazelbuild/rules_go/pull/3901](https://togithub.com/bazelbuild/rules_go/pull/3901) - generate_test_main: Move timeout handling back to bzltestutil by [@​DolceTriade](https://togithub.com/DolceTriade) in [https://github.com/bazelbuild/rules_go/pull/3939](https://togithub.com/bazelbuild/rules_go/pull/3939) - Add support for `--incompatible_enable_proto_toolchain_resolution` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3919](https://togithub.com/bazelbuild/rules_go/pull/3919) - Add exec_compatible_with to @​go_sdk//:builder by [@​EdSchouten](https://togithub.com/EdSchouten) in [https://github.com/bazelbuild/rules_go/pull/3943](https://togithub.com/bazelbuild/rules_go/pull/3943) - prepare v0.48.0 release by [@​tyler-french](https://togithub.com/tyler-french) in [https://github.com/bazelbuild/rules_go/pull/3946](https://togithub.com/bazelbuild/rules_go/pull/3946) #### New Contributors - [@​stefanpenner](https://togithub.com/stefanpenner) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3931](https://togithub.com/bazelbuild/rules_go/pull/3931) **Full Changelog**: bazel-contrib/rules_go@v0.47.1...v0.48.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. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDkuNCIsInVwZGF0ZWRJblZlciI6IjM2LjEwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: Self-hosted Renovate Bot <361546+cgrindel-self-hosted-renovate[bot]@users.noreply.github.enterprise.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.47.1` -> `v0.48.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>bazelbuild/rules_go (io_bazel_rules_go)</summary> ### [`v0.48.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.48.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.47.1...v0.48.0) #### Important Changes! `--incompatible_enable_proto_toolchain_resolution` is now supported in `rules_go`. This means that protoc should now be supplied as a toolchain. `protoc` can be registered using https://github.com/aspect-build/toolchains_protoc, or a local proto toolchain can be added. #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "33acc4ae0f70502db4b893c9fc1dd7a9bf998c23e7ff2c4517741d4049a976f8", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.22.3") #### What's Changed - Update docs to cover new FilePath ReplaceDirective Support by [@​stefanpenner](https://togithub.com/stefanpenner) in [https://github.com/bazelbuild/rules_go/pull/3931](https://togithub.com/bazelbuild/rules_go/pull/3931) - go_test: use different mnemonic for compilation by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3936](https://togithub.com/bazelbuild/rules_go/pull/3936) - Add go.work support to the documentation by [@​stefanpenner](https://togithub.com/stefanpenner) in [https://github.com/bazelbuild/rules_go/pull/3932](https://togithub.com/bazelbuild/rules_go/pull/3932) - feat(mode): add `purego` tag when `pure` by [@​mattyclarkson](https://togithub.com/mattyclarkson) in [https://github.com/bazelbuild/rules_go/pull/3901](https://togithub.com/bazelbuild/rules_go/pull/3901) - generate_test_main: Move timeout handling back to bzltestutil by [@​DolceTriade](https://togithub.com/DolceTriade) in [https://github.com/bazelbuild/rules_go/pull/3939](https://togithub.com/bazelbuild/rules_go/pull/3939) - Add support for `--incompatible_enable_proto_toolchain_resolution` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3919](https://togithub.com/bazelbuild/rules_go/pull/3919) - Add exec_compatible_with to @​go_sdk//:builder by [@​EdSchouten](https://togithub.com/EdSchouten) in [https://github.com/bazelbuild/rules_go/pull/3943](https://togithub.com/bazelbuild/rules_go/pull/3943) - prepare v0.48.0 release by [@​tyler-french](https://togithub.com/tyler-french) in [https://github.com/bazelbuild/rules_go/pull/3946](https://togithub.com/bazelbuild/rules_go/pull/3946) #### New Contributors - [@​stefanpenner](https://togithub.com/stefanpenner) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3931](https://togithub.com/bazelbuild/rules_go/pull/3931) **Full Changelog**: bazel-contrib/rules_go@v0.47.1...v0.48.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://developer.mend.io/github/kreempuff/rules_unreal_engine). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNjguMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNjguMTAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->
[![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.47.1` -> `v0.48.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_go (io_bazel_rules_go)</summary> ### [`v0.48.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.48.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.47.1...v0.48.0) #### Important Changes! `--incompatible_enable_proto_toolchain_resolution` is now supported in `rules_go`. This means that protoc should now be supplied as a toolchain. `protoc` can be registered using https://github.com/aspect-build/toolchains_protoc, or a local proto toolchain can be added. #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "33acc4ae0f70502db4b893c9fc1dd7a9bf998c23e7ff2c4517741d4049a976f8", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.22.3") #### What's Changed - Update docs to cover new FilePath ReplaceDirective Support by [@​stefanpenner](https://togithub.com/stefanpenner) in [https://github.com/bazelbuild/rules_go/pull/3931](https://togithub.com/bazelbuild/rules_go/pull/3931) - go_test: use different mnemonic for compilation by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3936](https://togithub.com/bazelbuild/rules_go/pull/3936) - Add go.work support to the documentation by [@​stefanpenner](https://togithub.com/stefanpenner) in [https://github.com/bazelbuild/rules_go/pull/3932](https://togithub.com/bazelbuild/rules_go/pull/3932) - feat(mode): add `purego` tag when `pure` by [@​mattyclarkson](https://togithub.com/mattyclarkson) in [https://github.com/bazelbuild/rules_go/pull/3901](https://togithub.com/bazelbuild/rules_go/pull/3901) - generate_test_main: Move timeout handling back to bzltestutil by [@​DolceTriade](https://togithub.com/DolceTriade) in [https://github.com/bazelbuild/rules_go/pull/3939](https://togithub.com/bazelbuild/rules_go/pull/3939) - Add support for `--incompatible_enable_proto_toolchain_resolution` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3919](https://togithub.com/bazelbuild/rules_go/pull/3919) - Add exec_compatible_with to @​go_sdk//:builder by [@​EdSchouten](https://togithub.com/EdSchouten) in [https://github.com/bazelbuild/rules_go/pull/3943](https://togithub.com/bazelbuild/rules_go/pull/3943) - prepare v0.48.0 release by [@​tyler-french](https://togithub.com/tyler-french) in [https://github.com/bazelbuild/rules_go/pull/3946](https://togithub.com/bazelbuild/rules_go/pull/3946) #### New Contributors - [@​stefanpenner](https://togithub.com/stefanpenner) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3931](https://togithub.com/bazelbuild/rules_go/pull/3931) **Full Changelog**: bazel-contrib/rules_go@v0.47.1...v0.48.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **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/bazel-contrib/toolchains_llvm). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNjguMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNjguMTAiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This change causes a significant performance (from ms to seconds) impact when handling protobuf. I would like to continue using pure binaries and allow unsafe/pointer arithmetic when compiling protobuf. |
The performance regression discussion is continuing in #3959 |
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io_bazel_rules_go](https://togithub.com/bazelbuild/rules_go) | http_archive | minor | `v0.47.0` -> `v0.48.1` | --- ### Release Notes <details> <summary>bazelbuild/rules_go (io_bazel_rules_go)</summary> ### [`v0.48.1`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.48.1) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.48.0...v0.48.1) #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "b2038e2de2cace18f032249cb4bb0048abf583a36369fa98f687af1b3f880b26", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.1/rules_go-v0.48.1.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.48.1/rules_go-v0.48.1.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.22.4") **Full Changelog**: bazel-contrib/rules_go@v0.48.0...v0.48.1 ### [`v0.48.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.48.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.47.1...v0.48.0) #### Important Changes! `--incompatible_enable_proto_toolchain_resolution` is now supported in `rules_go`. This means that protoc should now be supplied as a toolchain. `protoc` can be registered using https://github.com/aspect-build/toolchains_protoc, or a local proto toolchain can be added. [`rules_proto`](https://togithub.com/bazelbuild/rules_proto) 6.0.0 is required to use Go proto rules. #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "33acc4ae0f70502db4b893c9fc1dd7a9bf998c23e7ff2c4517741d4049a976f8", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.22.3") #### What's Changed - Update docs to cover new FilePath ReplaceDirective Support by [@​stefanpenner](https://togithub.com/stefanpenner) in [https://github.com/bazelbuild/rules_go/pull/3931](https://togithub.com/bazelbuild/rules_go/pull/3931) - go_test: use different mnemonic for compilation by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3936](https://togithub.com/bazelbuild/rules_go/pull/3936) - Add go.work support to the documentation by [@​stefanpenner](https://togithub.com/stefanpenner) in [https://github.com/bazelbuild/rules_go/pull/3932](https://togithub.com/bazelbuild/rules_go/pull/3932) - feat(mode): add `purego` tag when `pure` by [@​mattyclarkson](https://togithub.com/mattyclarkson) in [https://github.com/bazelbuild/rules_go/pull/3901](https://togithub.com/bazelbuild/rules_go/pull/3901) - generate_test_main: Move timeout handling back to bzltestutil by [@​DolceTriade](https://togithub.com/DolceTriade) in [https://github.com/bazelbuild/rules_go/pull/3939](https://togithub.com/bazelbuild/rules_go/pull/3939) - Add support for `--incompatible_enable_proto_toolchain_resolution` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3919](https://togithub.com/bazelbuild/rules_go/pull/3919) - Add exec_compatible_with to @​go_sdk//:builder by [@​EdSchouten](https://togithub.com/EdSchouten) in [https://github.com/bazelbuild/rules_go/pull/3943](https://togithub.com/bazelbuild/rules_go/pull/3943) - prepare v0.48.0 release by [@​tyler-french](https://togithub.com/tyler-french) in [https://github.com/bazelbuild/rules_go/pull/3946](https://togithub.com/bazelbuild/rules_go/pull/3946) #### New Contributors - [@​stefanpenner](https://togithub.com/stefanpenner) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3931](https://togithub.com/bazelbuild/rules_go/pull/3931) **Full Changelog**: bazel-contrib/rules_go@v0.47.1...v0.48.0 ### [`v0.47.1`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.47.1) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.47.0...v0.47.1) #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "f74c98d6df55217a36859c74b460e774abc0410a47cc100d822be34d5f990f16", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.47.1/rules_go-v0.47.1.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.47.1/rules_go-v0.47.1.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.22.2") #### What's Changed - bzltestutil: restore timeout signal handler by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3929](https://togithub.com/bazelbuild/rules_go/pull/3929) - feat: support syso files in srcs. by [@​connyay](https://togithub.com/connyay) in [https://github.com/bazelbuild/rules_go/pull/3763](https://togithub.com/bazelbuild/rules_go/pull/3763) - prepare patch release 0.47.1 by [@​tyler-french](https://togithub.com/tyler-french) in [https://github.com/bazelbuild/rules_go/pull/3933](https://togithub.com/bazelbuild/rules_go/pull/3933) #### New Contributors - [@​connyay](https://togithub.com/connyay) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3763](https://togithub.com/bazelbuild/rules_go/pull/3763) **Full Changelog**: bazel-contrib/rules_go@v0.47.0...v0.47.1 </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. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDkuNCIsInVwZGF0ZWRJblZlciI6IjM2LjEwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: Self-hosted Renovate Bot <361546+cgrindel-self-hosted-renovate[bot]@users.noreply.github.enterprise.com>
The community has agreed1 that "pure" builds of Go code should use the
purego
build tag.This change adds that de-facto tag.
Spun out from bazelbuild/bazel-central-registry#1629 to solve building of
circl
.