From 8b8294b6359a9c0a89af968fb7092f6e7194f420 Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Wed, 18 Sep 2024 23:34:46 +0200 Subject: [PATCH] Update Go SDK to 1.23.1 (#4105) **What type of PR is this?** Feature **What does this PR do? Why is it needed?** The default Go SDK with Bzlmod is kept at 1.22.7 as 1.23 is breaking in a number of ways and we don't want to force this onto every module as the default just yet. Requires an update to golang.org/x/tools to avoid nogo silently failing to generate facts files with the new SDK. **Which issues(s) does this PR fix?** **Other notes for review** --- MODULE.bazel | 3 +- README.rst | 6 ++-- WORKSPACE | 12 ++++---- docs/go/core/bzlmod.md | 4 +-- go.mod | 10 +++---- go.sum | 28 +++++++++---------- go/nogo.rst | 2 +- go/toolchains.rst | 2 +- tests/bcr/MODULE.bazel | 2 +- tests/bcr/test_go_sdk.patch | 4 +-- tests/grpc_repos.bzl | 12 ++++---- .../popular_repos/popular_repos.bzl | 2 +- tests/runfiles/fs_test.go | 7 +---- 13 files changed, 46 insertions(+), 48 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index bc7eb86bdd..05f8125fa8 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -16,7 +16,7 @@ bazel_dep(name = "protobuf", version = "3.19.2", repo_name = "com_google_protobu go_sdk = use_extension("//go:extensions.bzl", "go_sdk") go_sdk.download( name = "go_default_sdk", - version = "1.21.8", + version = "1.22.7", ) use_repo( go_sdk, @@ -24,6 +24,7 @@ use_repo( # This name is ugly on purpose to avoid a conflict with a user-named SDK. "io_bazel_rules_nogo", ) + register_toolchains("@go_toolchains//:all") bazel_dep(name = "gazelle", version = "0.36.0") diff --git a/README.rst b/README.rst index 100e1d9a6b..3337cb7b21 100644 --- a/README.rst +++ b/README.rst @@ -333,7 +333,7 @@ Go toolchain and register it for use. go_rules_dependencies() - go_register_toolchains(version = "1.22.4") + go_register_toolchains(version = "1.23.1") You can use rules_go at ``master`` by using `git_repository`_ instead of `http_archive`_ and pointing to a recent commit. @@ -390,7 +390,7 @@ Add the ``bazel_gazelle`` repository and its dependencies to your go_rules_dependencies() - go_register_toolchains(version = "1.22.4") + go_register_toolchains(version = "1.23.1") gazelle_dependencies() @@ -527,7 +527,7 @@ automatically from a go.mod or Gopkg.lock file. # Declare indirect dependencies and register toolchains. go_rules_dependencies() - go_register_toolchains(version = "1.22.4") + go_register_toolchains(version = "1.23.1") gazelle_dependencies() diff --git a/WORKSPACE b/WORKSPACE index 850484526f..e44ca0c3e1 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -27,7 +27,7 @@ bazel_features_deps() go_rules_dependencies() -go_register_toolchains(version = "1.21.8") +go_register_toolchains(version = "1.23.1") http_archive( name = "rules_proto", @@ -129,6 +129,12 @@ http_archive( ], ) +# TODO: Move this back to the end after Gazelle updates golang.org/x/net to at least v0.26.0. +# See https://github.com/bettercap/bettercap/issues/1106 for how this breaks Go 1.23 compatibility. +load("@io_bazel_rules_go//tests:grpc_repos.bzl", "grpc_dependencies") + +grpc_dependencies() + load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") gazelle_dependencies() @@ -207,10 +213,6 @@ load("@io_bazel_rules_go//tests/integration/popular_repos:popular_repos.bzl", "p popular_repos() -load("@io_bazel_rules_go//tests:grpc_repos.bzl", "grpc_dependencies") - -grpc_dependencies() - local_repository( name = "runfiles_remote_test", path = "tests/core/runfiles/runfiles_remote_test", diff --git a/docs/go/core/bzlmod.md b/docs/go/core/bzlmod.md index 3e2cba0833..adc6c4e042 100644 --- a/docs/go/core/bzlmod.md +++ b/docs/go/core/bzlmod.md @@ -31,11 +31,11 @@ To register a particular version of the Go SDK, use the `go_sdk` module extensio go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk") # Download an SDK for the host OS & architecture as well as common remote execution platforms. -go_sdk.download(version = "1.20.3") +go_sdk.download(version = "1.23.1") # Alternately, download an SDK for a fixed OS/architecture. go_sdk.download( - version = "1.20.3", + version = "1.23.1", goarch = "amd64", goos = "linux", ) diff --git a/go.mod b/go.mod index 776305bc18..4a29f87973 100644 --- a/go.mod +++ b/go.mod @@ -6,8 +6,8 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golang/mock v1.7.0-rc.1 github.com/golang/protobuf v1.5.3 - golang.org/x/net v0.18.0 - golang.org/x/tools v0.15.0 + golang.org/x/net v0.26.0 + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 google.golang.org/grpc v1.40.1 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 @@ -15,7 +15,7 @@ require ( ) require ( - golang.org/x/mod v0.14.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect ) diff --git a/go.sum b/go.sum index 629573b4ee..46841e9c80 100644 --- a/go.sum +++ b/go.sum @@ -42,8 +42,9 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -68,8 +69,8 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -81,8 +82,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -92,8 +93,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -102,15 +103,15 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -120,12 +121,11 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/go/nogo.rst b/go/nogo.rst index c1a815ecd8..e27eca87f8 100644 --- a/go/nogo.rst +++ b/go/nogo.rst @@ -75,7 +75,7 @@ instead. load("@io_bazel_rules_go//go:deps.bzl", "go_rules_dependencies", "go_register_nogo") go_rules_dependencies() - go_register_toolchains(version = "1.20.7") + go_register_toolchains(version = "1.23.1") go_register_nogo( nogo = "@//:my_nogo" # my_nogo is in the top-level BUILD file of this workspace includes = ["@//:__subpackages__"], # Labels to lint. By default only lints code in workspace. diff --git a/go/toolchains.rst b/go/toolchains.rst index 6bb2c15fb2..71aeef1752 100644 --- a/go/toolchains.rst +++ b/go/toolchains.rst @@ -129,7 +129,7 @@ platform. go_rules_dependencies() - go_register_toolchains(version = "1.22.4") + go_register_toolchains(version = "1.23.1") Using the installed Go SDK diff --git a/tests/bcr/MODULE.bazel b/tests/bcr/MODULE.bazel index 0944cc6425..eee6234a25 100644 --- a/tests/bcr/MODULE.bazel +++ b/tests/bcr/MODULE.bazel @@ -31,7 +31,7 @@ go_sdk.download( patches = [ "//:test_go_sdk.patch", ], - version = "1.21.1", + version = "1.23.1", ) # Request an invalid SDK to verify that it isn't fetched since the first tag takes precedence. diff --git a/tests/bcr/test_go_sdk.patch b/tests/bcr/test_go_sdk.patch index 83beb83b5f..520ea2a7b3 100644 --- a/tests/bcr/test_go_sdk.patch +++ b/tests/bcr/test_go_sdk.patch @@ -9,5 +9,5 @@ index 5306bcb..d110a19 100644 +const SayHello = "Hello" + // Readdir reads the contents of the directory associated with file and - // returns a slice of up to n FileInfo values, as would be returned - // by Lstat, in directory order. Subsequent calls on the same file will yield + // returns a slice of up to n [FileInfo] values, as would be returned + // by [Lstat], in directory order. Subsequent calls on the same file will yield diff --git a/tests/grpc_repos.bzl b/tests/grpc_repos.bzl index e3ca8ae3f0..c5717e0055 100644 --- a/tests/grpc_repos.bzl +++ b/tests/grpc_repos.bzl @@ -19,20 +19,20 @@ def grpc_dependencies(): name = "org_golang_google_grpc", build_file_proto_mode = "disable", importpath = "google.golang.org/grpc", - sum = "h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk=", - version = "v1.27.1", + sum = "h1:pnP7OclFFFgFi4VHQDQDaoXUVauOFyktqTsqqgzFKbc=", + version = "v1.40.1", ) go_repository( name = "org_golang_x_net", importpath = "golang.org/x/net", - sum = "h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=", - version = "v0.0.0-20190311183353-d8887717615a", + sum = "h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=", + version = "v0.26.0", ) go_repository( name = "org_golang_x_text", importpath = "golang.org/x/text", - sum = "h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=", - version = "v0.3.0", + sum = "h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=", + version = "v0.16.0", ) diff --git a/tests/integration/popular_repos/popular_repos.bzl b/tests/integration/popular_repos/popular_repos.bzl index ba53778cb0..85e9ce5736 100644 --- a/tests/integration/popular_repos/popular_repos.bzl +++ b/tests/integration/popular_repos/popular_repos.bzl @@ -33,7 +33,7 @@ def popular_repos(): go_repository, name = "org_golang_x_net", importpath = "golang.org/x/net", - commit = "e18ecbb051101a46fc263334b127c89bc7bff7ea", + commit = "3c333c0c5288a7cf127e427ddda5b1b54020a2b4", ) _maybe( go_repository, diff --git a/tests/runfiles/fs_test.go b/tests/runfiles/fs_test.go index 5b5875e193..1b09255770 100644 --- a/tests/runfiles/fs_test.go +++ b/tests/runfiles/fs_test.go @@ -87,12 +87,7 @@ func TestFS_directory(t *testing.T) { t.Fatal(err) } for _, source := range append(mainRepoRunfiles(true), commonRunfiles...) { - targetSymlink, err := runfiles.Rlocation(source) - if err != nil { - t.Fatal(err) - } - // Runfiles directories created by Bazel consist of symlinks to the real files. - target, err := filepath.EvalSymlinks(targetSymlink) + target, err := runfiles.Rlocation(source) if err != nil { t.Fatal(err) }