1*9bb1b549SSpandan Das# Copyright 2014 The Bazel Authors. All rights reserved. 2*9bb1b549SSpandan Das# 3*9bb1b549SSpandan Das# Licensed under the Apache License, Version 2.0 (the "License"); 4*9bb1b549SSpandan Das# you may not use this file except in compliance with the License. 5*9bb1b549SSpandan Das# You may obtain a copy of the License at 6*9bb1b549SSpandan Das# 7*9bb1b549SSpandan Das# http://www.apache.org/licenses/LICENSE-2.0 8*9bb1b549SSpandan Das# 9*9bb1b549SSpandan Das# Unless required by applicable law or agreed to in writing, software 10*9bb1b549SSpandan Das# distributed under the License is distributed on an "AS IS" BASIS, 11*9bb1b549SSpandan Das# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*9bb1b549SSpandan Das# See the License for the specific language governing permissions and 13*9bb1b549SSpandan Das# limitations under the License. 14*9bb1b549SSpandan Das 15*9bb1b549SSpandan Das# Once nested repositories work, this file should cease to exist. 16*9bb1b549SSpandan Das 17*9bb1b549SSpandan Dasload("//go/private:common.bzl", "MINIMUM_BAZEL_VERSION") 18*9bb1b549SSpandan Dasload("//go/private/skylib/lib:versions.bzl", "versions") 19*9bb1b549SSpandan Dasload("//go/private:nogo.bzl", "DEFAULT_NOGO", "go_register_nogo") 20*9bb1b549SSpandan Dasload("//proto:gogo.bzl", "gogo_special_proto") 21*9bb1b549SSpandan Dasload("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") 22*9bb1b549SSpandan Das 23*9bb1b549SSpandan Dasdef go_rules_dependencies(force = False): 24*9bb1b549SSpandan Das """Declares workspaces the Go rules depend on. Workspaces that use 25*9bb1b549SSpandan Das rules_go should call this. 26*9bb1b549SSpandan Das 27*9bb1b549SSpandan Das See https://github.com/bazelbuild/rules_go/blob/master/go/dependencies.rst#overriding-dependencies 28*9bb1b549SSpandan Das for information on each dependency. 29*9bb1b549SSpandan Das 30*9bb1b549SSpandan Das Instructions for updating this file are in 31*9bb1b549SSpandan Das https://github.com/bazelbuild/rules_go/wiki/Updating-dependencies. 32*9bb1b549SSpandan Das 33*9bb1b549SSpandan Das PRs updating dependencies are NOT ACCEPTED. See 34*9bb1b549SSpandan Das https://github.com/bazelbuild/rules_go/blob/master/go/dependencies.rst#overriding-dependencies 35*9bb1b549SSpandan Das for information on choosing different versions of these repositories 36*9bb1b549SSpandan Das in your own project. 37*9bb1b549SSpandan Das """ 38*9bb1b549SSpandan Das if getattr(native, "bazel_version", None): 39*9bb1b549SSpandan Das versions.check(MINIMUM_BAZEL_VERSION, bazel_version = native.bazel_version) 40*9bb1b549SSpandan Das 41*9bb1b549SSpandan Das if force: 42*9bb1b549SSpandan Das wrapper = _always 43*9bb1b549SSpandan Das else: 44*9bb1b549SSpandan Das wrapper = _maybe 45*9bb1b549SSpandan Das 46*9bb1b549SSpandan Das # Needed by rules_go implementation and tests. 47*9bb1b549SSpandan Das # We can't call bazel_skylib_workspace from here. At the moment, it's only 48*9bb1b549SSpandan Das # used to register unittest toolchains, which rules_go does not need. 49*9bb1b549SSpandan Das # releaser:upgrade-dep bazelbuild bazel-skylib 50*9bb1b549SSpandan Das wrapper( 51*9bb1b549SSpandan Das http_archive, 52*9bb1b549SSpandan Das name = "bazel_skylib", 53*9bb1b549SSpandan Das # 1.4.1, latest as of 2023-03-27 54*9bb1b549SSpandan Das urls = [ 55*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz", 56*9bb1b549SSpandan Das "https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz", 57*9bb1b549SSpandan Das ], 58*9bb1b549SSpandan Das sha256 = "b8a1527901774180afc798aeb28c4634bdccf19c4d98e7bdd1ce79d1fe9aaad7", 59*9bb1b549SSpandan Das strip_prefix = "", 60*9bb1b549SSpandan Das ) 61*9bb1b549SSpandan Das 62*9bb1b549SSpandan Das # Needed for nogo vet checks and go/packages. 63*9bb1b549SSpandan Das # releaser:upgrade-dep golang tools 64*9bb1b549SSpandan Das wrapper( 65*9bb1b549SSpandan Das http_archive, 66*9bb1b549SSpandan Das name = "org_golang_x_tools", 67*9bb1b549SSpandan Das # v0.7.0, latest as of 2023-03-27 68*9bb1b549SSpandan Das urls = [ 69*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/golang/tools/archive/refs/tags/v0.7.0.zip", 70*9bb1b549SSpandan Das "https://github.com/golang/tools/archive/refs/tags/v0.7.0.zip", 71*9bb1b549SSpandan Das ], 72*9bb1b549SSpandan Das sha256 = "9f20a20f29f4008d797a8be882ef82b69cf8f7f2b96dbdfe3814c57d8280fa4b", 73*9bb1b549SSpandan Das strip_prefix = "tools-0.7.0", 74*9bb1b549SSpandan Das patches = [ 75*9bb1b549SSpandan Das # deletegopls removes the gopls subdirectory. It contains a nested 76*9bb1b549SSpandan Das # module with additional dependencies. It's not needed by rules_go. 77*9bb1b549SSpandan Das # releaser:patch-cmd rm -rf gopls 78*9bb1b549SSpandan Das Label("//third_party:org_golang_x_tools-deletegopls.patch"), 79*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . -go_prefix golang.org/x/tools -go_naming_convention import_alias 80*9bb1b549SSpandan Das Label("//third_party:org_golang_x_tools-gazelle.patch"), 81*9bb1b549SSpandan Das ], 82*9bb1b549SSpandan Das patch_args = ["-p1"], 83*9bb1b549SSpandan Das ) 84*9bb1b549SSpandan Das 85*9bb1b549SSpandan Das # releaser:upgrade-dep golang sys 86*9bb1b549SSpandan Das wrapper( 87*9bb1b549SSpandan Das http_archive, 88*9bb1b549SSpandan Das name = "org_golang_x_sys", 89*9bb1b549SSpandan Das # v0.6.0, latest as of 2023-03-27 90*9bb1b549SSpandan Das urls = [ 91*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/golang/sys/archive/refs/tags/v0.6.0.zip", 92*9bb1b549SSpandan Das "https://github.com/golang/sys/archive/refs/tags/v0.6.0.zip", 93*9bb1b549SSpandan Das ], 94*9bb1b549SSpandan Das sha256 = "7f2399398b2eb4f1f495cc754d6353566e0ad934ee0eb46505e55162e0def56d", 95*9bb1b549SSpandan Das strip_prefix = "sys-0.6.0", 96*9bb1b549SSpandan Das patches = [ 97*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . -go_prefix golang.org/x/sys -go_naming_convention import_alias 98*9bb1b549SSpandan Das Label("//third_party:org_golang_x_sys-gazelle.patch"), 99*9bb1b549SSpandan Das ], 100*9bb1b549SSpandan Das patch_args = ["-p1"], 101*9bb1b549SSpandan Das ) 102*9bb1b549SSpandan Das 103*9bb1b549SSpandan Das # Needed by golang.org/x/tools/go/packages 104*9bb1b549SSpandan Das # releaser:upgrade-dep golang xerrors 105*9bb1b549SSpandan Das wrapper( 106*9bb1b549SSpandan Das http_archive, 107*9bb1b549SSpandan Das name = "org_golang_x_xerrors", 108*9bb1b549SSpandan Das # master, as of 2023-03-27 109*9bb1b549SSpandan Das urls = [ 110*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/golang/xerrors/archive/04be3eba64a22a838cdb17b8dca15a52871c08b4.zip", 111*9bb1b549SSpandan Das "https://github.com/golang/xerrors/archive/04be3eba64a22a838cdb17b8dca15a52871c08b4.zip", 112*9bb1b549SSpandan Das ], 113*9bb1b549SSpandan Das sha256 = "ffad2b06ef2e09d040da2ff08077865e99ab95d4d0451737fc8e33706bb01634", 114*9bb1b549SSpandan Das strip_prefix = "xerrors-04be3eba64a22a838cdb17b8dca15a52871c08b4", 115*9bb1b549SSpandan Das patches = [ 116*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . -go_prefix golang.org/x/xerrors -go_naming_convention import_alias 117*9bb1b549SSpandan Das Label("//third_party:org_golang_x_xerrors-gazelle.patch"), 118*9bb1b549SSpandan Das ], 119*9bb1b549SSpandan Das patch_args = ["-p1"], 120*9bb1b549SSpandan Das ) 121*9bb1b549SSpandan Das 122*9bb1b549SSpandan Das # Proto dependencies 123*9bb1b549SSpandan Das # These are limited as much as possible. In most cases, users need to 124*9bb1b549SSpandan Das # declare these on their own (probably via go_repository rules generated 125*9bb1b549SSpandan Das # with 'gazelle update-repos -from_file=go.mod). There are several 126*9bb1b549SSpandan Das # reasons for this: 127*9bb1b549SSpandan Das # 128*9bb1b549SSpandan Das # * com_google_protobuf has its own dependency macro. We can't load 129*9bb1b549SSpandan Das # the macro here. 130*9bb1b549SSpandan Das # * rules_proto also has a dependency macro. It's only needed by tests and 131*9bb1b549SSpandan Das # by gogo_special_proto. Users will need to declare it anyway. 132*9bb1b549SSpandan Das # * org_golang_google_grpc has too many dependencies for us to maintain. 133*9bb1b549SSpandan Das # * In general, declaring dependencies here confuses users when they 134*9bb1b549SSpandan Das # declare their own dependencies later. Bazel ignores these. 135*9bb1b549SSpandan Das # * Most proto repos are updated more frequently than rules_go, and 136*9bb1b549SSpandan Das # we can't keep up. 137*9bb1b549SSpandan Das 138*9bb1b549SSpandan Das # Go protobuf runtime library and utilities. 139*9bb1b549SSpandan Das # releaser:upgrade-dep protocolbuffers protobuf-go 140*9bb1b549SSpandan Das wrapper( 141*9bb1b549SSpandan Das http_archive, 142*9bb1b549SSpandan Das name = "org_golang_google_protobuf", 143*9bb1b549SSpandan Das sha256 = "cb1a05581c33b3705ede6c08edf9b9c1dbc579559ba30f532704c324e42bf801", 144*9bb1b549SSpandan Das # v1.30.0, latest as of 2023-03-27 145*9bb1b549SSpandan Das urls = [ 146*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/protocolbuffers/protobuf-go/archive/refs/tags/v1.30.0.zip", 147*9bb1b549SSpandan Das "https://github.com/protocolbuffers/protobuf-go/archive/refs/tags/v1.30.0.zip", 148*9bb1b549SSpandan Das ], 149*9bb1b549SSpandan Das strip_prefix = "protobuf-go-1.30.0", 150*9bb1b549SSpandan Das patches = [ 151*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . -go_prefix google.golang.org/protobuf -go_naming_convention import_alias -proto disable_global 152*9bb1b549SSpandan Das Label("//third_party:org_golang_google_protobuf-gazelle.patch"), 153*9bb1b549SSpandan Das ], 154*9bb1b549SSpandan Das patch_args = ["-p1"], 155*9bb1b549SSpandan Das ) 156*9bb1b549SSpandan Das 157*9bb1b549SSpandan Das # Legacy protobuf compiler, runtime, and utilities. 158*9bb1b549SSpandan Das # We still use protoc-gen-go because the new one doesn't support gRPC, and 159*9bb1b549SSpandan Das # the gRPC compiler doesn't exist yet. 160*9bb1b549SSpandan Das # We need to apply a patch to enable both go_proto_library and 161*9bb1b549SSpandan Das # go_library with pre-generated sources. 162*9bb1b549SSpandan Das # releaser:upgrade-dep golang protobuf 163*9bb1b549SSpandan Das wrapper( 164*9bb1b549SSpandan Das http_archive, 165*9bb1b549SSpandan Das name = "com_github_golang_protobuf", 166*9bb1b549SSpandan Das # v1.5.3, latest as of 2023-03-27 167*9bb1b549SSpandan Das urls = [ 168*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/golang/protobuf/archive/refs/tags/v1.5.3.zip", 169*9bb1b549SSpandan Das "https://github.com/golang/protobuf/archive/refs/tags/v1.5.3.zip", 170*9bb1b549SSpandan Das ], 171*9bb1b549SSpandan Das sha256 = "2dced4544ae5372281e20f1e48ca76368355a01b31353724718c4d6e3dcbb430", 172*9bb1b549SSpandan Das strip_prefix = "protobuf-1.5.3", 173*9bb1b549SSpandan Das patches = [ 174*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . -go_prefix github.com/golang/protobuf -go_naming_convention import_alias -proto disable_global 175*9bb1b549SSpandan Das Label("//third_party:com_github_golang_protobuf-gazelle.patch"), 176*9bb1b549SSpandan Das ], 177*9bb1b549SSpandan Das patch_args = ["-p1"], 178*9bb1b549SSpandan Das ) 179*9bb1b549SSpandan Das 180*9bb1b549SSpandan Das # Extra protoc plugins and libraries. 181*9bb1b549SSpandan Das # Doesn't belong here, but low maintenance. 182*9bb1b549SSpandan Das # releaser:upgrade-dep mwitkow go-proto-validators 183*9bb1b549SSpandan Das wrapper( 184*9bb1b549SSpandan Das http_archive, 185*9bb1b549SSpandan Das name = "com_github_mwitkow_go_proto_validators", 186*9bb1b549SSpandan Das # v0.3.2, latest as of 2023-03-27 187*9bb1b549SSpandan Das urls = [ 188*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/mwitkow/go-proto-validators/archive/refs/tags/v0.3.2.zip", 189*9bb1b549SSpandan Das "https://github.com/mwitkow/go-proto-validators/archive/refs/tags/v0.3.2.zip", 190*9bb1b549SSpandan Das ], 191*9bb1b549SSpandan Das sha256 = "d8697f05a2f0eaeb65261b480e1e6035301892d9fc07ed945622f41b12a68142", 192*9bb1b549SSpandan Das strip_prefix = "go-proto-validators-0.3.2", 193*9bb1b549SSpandan Das # Bazel support added in v0.3.0, so no patches needed. 194*9bb1b549SSpandan Das ) 195*9bb1b549SSpandan Das 196*9bb1b549SSpandan Das # releaser:upgrade-dep gogo protobuf 197*9bb1b549SSpandan Das wrapper( 198*9bb1b549SSpandan Das http_archive, 199*9bb1b549SSpandan Das name = "com_github_gogo_protobuf", 200*9bb1b549SSpandan Das # v1.3.2, latest as of 2023-03-27 201*9bb1b549SSpandan Das urls = [ 202*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/gogo/protobuf/archive/refs/tags/v1.3.2.zip", 203*9bb1b549SSpandan Das "https://github.com/gogo/protobuf/archive/refs/tags/v1.3.2.zip", 204*9bb1b549SSpandan Das ], 205*9bb1b549SSpandan Das sha256 = "f89f8241af909ce3226562d135c25b28e656ae173337b3e58ede917aa26e1e3c", 206*9bb1b549SSpandan Das strip_prefix = "protobuf-1.3.2", 207*9bb1b549SSpandan Das patches = [ 208*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . -go_prefix github.com/gogo/protobuf -go_naming_convention import_alias -proto legacy 209*9bb1b549SSpandan Das Label("//third_party:com_github_gogo_protobuf-gazelle.patch"), 210*9bb1b549SSpandan Das ], 211*9bb1b549SSpandan Das patch_args = ["-p1"], 212*9bb1b549SSpandan Das ) 213*9bb1b549SSpandan Das 214*9bb1b549SSpandan Das wrapper( 215*9bb1b549SSpandan Das gogo_special_proto, 216*9bb1b549SSpandan Das name = "gogo_special_proto", 217*9bb1b549SSpandan Das ) 218*9bb1b549SSpandan Das 219*9bb1b549SSpandan Das # go_library targets with pre-generated sources for Well Known Types 220*9bb1b549SSpandan Das # and Google APIs. 221*9bb1b549SSpandan Das # Doesn't belong here, but it would be an annoying source of errors if 222*9bb1b549SSpandan Das # this weren't generated with -proto disable_global. 223*9bb1b549SSpandan Das # releaser:upgrade-dep googleapis go-genproto 224*9bb1b549SSpandan Das wrapper( 225*9bb1b549SSpandan Das http_archive, 226*9bb1b549SSpandan Das name = "org_golang_google_genproto", 227*9bb1b549SSpandan Das # main, as of 2023-03-27 228*9bb1b549SSpandan Das urls = [ 229*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/googleapis/go-genproto/archive/6ac7f18bb9d5eeeb13a9f1ae4f21e4374a1952f8.zip", 230*9bb1b549SSpandan Das "https://github.com/googleapis/go-genproto/archive/6ac7f18bb9d5eeeb13a9f1ae4f21e4374a1952f8.zip", 231*9bb1b549SSpandan Das ], 232*9bb1b549SSpandan Das sha256 = "3470e7a89b24971b20c4bb8900a668df25279e4b741f72bc09418c1f22543215", 233*9bb1b549SSpandan Das strip_prefix = "go-genproto-6ac7f18bb9d5eeeb13a9f1ae4f21e4374a1952f8", 234*9bb1b549SSpandan Das patches = [ 235*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . -go_prefix google.golang.org/genproto -go_naming_convention import_alias -proto disable_global 236*9bb1b549SSpandan Das Label("//third_party:org_golang_google_genproto-gazelle.patch"), 237*9bb1b549SSpandan Das ], 238*9bb1b549SSpandan Das patch_args = ["-p1"], 239*9bb1b549SSpandan Das ) 240*9bb1b549SSpandan Das 241*9bb1b549SSpandan Das # go_proto_library targets for gRPC and Google APIs. 242*9bb1b549SSpandan Das # TODO(#1986): migrate to com_google_googleapis. This workspace was added 243*9bb1b549SSpandan Das # before the real workspace supported Bazel. Gazelle resolves dependencies 244*9bb1b549SSpandan Das # here. Gazelle should resolve dependencies to com_google_googleapis 245*9bb1b549SSpandan Das # instead, and we should remove this. 246*9bb1b549SSpandan Das # releaser:upgrade-dep googleapis googleapis 247*9bb1b549SSpandan Das wrapper( 248*9bb1b549SSpandan Das http_archive, 249*9bb1b549SSpandan Das name = "go_googleapis", 250*9bb1b549SSpandan Das # master, as of 2022-12-05 251*9bb1b549SSpandan Das urls = [ 252*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/googleapis/googleapis/archive/83c3605afb5a39952bf0a0809875d41cf2a558ca.zip", 253*9bb1b549SSpandan Das "https://github.com/googleapis/googleapis/archive/83c3605afb5a39952bf0a0809875d41cf2a558ca.zip", 254*9bb1b549SSpandan Das ], 255*9bb1b549SSpandan Das sha256 = "ba694861340e792fd31cb77274eacaf6e4ca8bda97707898f41d8bebfd8a4984", 256*9bb1b549SSpandan Das strip_prefix = "googleapis-83c3605afb5a39952bf0a0809875d41cf2a558ca", 257*9bb1b549SSpandan Das patches = [ 258*9bb1b549SSpandan Das # releaser:patch-cmd find . -name BUILD.bazel -delete 259*9bb1b549SSpandan Das Label("//third_party:go_googleapis-deletebuild.patch"), 260*9bb1b549SSpandan Das # set gazelle directives; change workspace name 261*9bb1b549SSpandan Das Label("//third_party:go_googleapis-directives.patch"), 262*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . 263*9bb1b549SSpandan Das Label("//third_party:go_googleapis-gazelle.patch"), 264*9bb1b549SSpandan Das ], 265*9bb1b549SSpandan Das patch_args = ["-E", "-p1"], 266*9bb1b549SSpandan Das ) 267*9bb1b549SSpandan Das 268*9bb1b549SSpandan Das # releaser:upgrade-dep golang mock 269*9bb1b549SSpandan Das _maybe( 270*9bb1b549SSpandan Das http_archive, 271*9bb1b549SSpandan Das name = "com_github_golang_mock", 272*9bb1b549SSpandan Das # v1.7.0-rc.1, latest as of 2023-03-27 273*9bb1b549SSpandan Das urls = [ 274*9bb1b549SSpandan Das "https://mirror.bazel.build/github.com/golang/mock/archive/refs/tags/v1.7.0-rc.1.zip", 275*9bb1b549SSpandan Das "https://github.com/golang/mock/archive/refs/tags/v1.7.0-rc.1.zip", 276*9bb1b549SSpandan Das ], 277*9bb1b549SSpandan Das patches = [ 278*9bb1b549SSpandan Das # releaser:patch-cmd gazelle -repo_root . -go_prefix github.com/golang/mock -go_naming_convention import_alias 279*9bb1b549SSpandan Das Label("//third_party:com_github_golang_mock-gazelle.patch"), 280*9bb1b549SSpandan Das ], 281*9bb1b549SSpandan Das patch_args = ["-p1"], 282*9bb1b549SSpandan Das sha256 = "5359c78b0c1649cf7beb3b48ff8b1d1aaf0243b22ea4789aba94805280075d8e", 283*9bb1b549SSpandan Das strip_prefix = "mock-1.7.0-rc.1", 284*9bb1b549SSpandan Das ) 285*9bb1b549SSpandan Das 286*9bb1b549SSpandan Das # This may be overridden by go_register_toolchains, but it's not mandatory 287*9bb1b549SSpandan Das # for users to call that function (they may declare their own @go_sdk and 288*9bb1b549SSpandan Das # register their own toolchains). 289*9bb1b549SSpandan Das wrapper( 290*9bb1b549SSpandan Das go_register_nogo, 291*9bb1b549SSpandan Das name = "io_bazel_rules_nogo", 292*9bb1b549SSpandan Das nogo = DEFAULT_NOGO, 293*9bb1b549SSpandan Das ) 294*9bb1b549SSpandan Das 295*9bb1b549SSpandan Dasdef _maybe(repo_rule, name, **kwargs): 296*9bb1b549SSpandan Das if name not in native.existing_rules(): 297*9bb1b549SSpandan Das repo_rule(name = name, **kwargs) 298*9bb1b549SSpandan Das 299*9bb1b549SSpandan Dasdef _always(repo_rule, name, **kwargs): 300*9bb1b549SSpandan Das repo_rule(name = name, **kwargs) 301