Skip to content

Commit

Permalink
Use repo-relative labels wherever possible (protocolbuffers#9187)
Browse files Browse the repository at this point in the history
* Use repo-relative labels wherever possible

The label `@com_google_protobuf//:foo` within the protobuf repo is often synonymous with just `//:foo`. We should prefer the latter as it allows us to use a shorter name for the module in the Bazel Central Registry (so just "protobuf" instead of "com_google_protobuf").

Note that the semantics can be subtle: in a macro, plain strings are anchored to the *calling* repo, so if we just use `//:foo` as the default value of a macro argument, it will be resolved to `@myrepo//:foo` if the macro is called from the repo `@myrepo`. In this case, it's necessary to directly call the `Label()` constructor to anchor the string label to the repo where the .bzl file lives.

See bazelbuild/bazel-central-registry#28 (comment) for a bit more context.

* fix protobuf_deps.bzl
  • Loading branch information
Wyverald committed Nov 4, 2021
1 parent d88c8d5 commit 11de748
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
10 changes: 5 additions & 5 deletions protobuf.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -259,9 +259,9 @@ def cc_proto_library(
deps = [],
cc_libs = [],
include = None,
protoc = "@com_google_protobuf//:protoc",
protoc = Label("//:protoc"),
use_grpc_plugin = False,
default_runtime = "@com_google_protobuf//:protobuf",
default_runtime = Label("//:protobuf"),
**kargs):
"""Bazel rule to create a C++ protobuf library from proto source files
Expand Down Expand Up @@ -379,7 +379,7 @@ internal_gen_well_known_protos_java = rule(
"_protoc": attr.label(
executable = True,
cfg = "exec",
default = "@com_google_protobuf//:protoc",
default = "//:protoc",
),
},
)
Expand Down Expand Up @@ -422,8 +422,8 @@ def py_proto_library(
py_libs = [],
py_extra_srcs = [],
include = None,
default_runtime = "@com_google_protobuf//:protobuf_python",
protoc = "@com_google_protobuf//:protoc",
default_runtime = Label("//:protobuf_python"),
protoc = Label("//:protoc"),
use_grpc_plugin = False,
**kargs):
"""Bazel rule to create a Python protobuf library from proto source files
Expand Down
2 changes: 1 addition & 1 deletion protobuf_deps.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def protobuf_deps():
if not native.existing_rule("zlib"):
http_archive(
name = "zlib",
build_file = "@com_google_protobuf//:third_party/zlib.BUILD",
build_file = Label("//:third_party/zlib.BUILD"),
sha256 = "629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff",
strip_prefix = "zlib-1.2.11",
urls = ["https://github.com/madler/zlib/archive/v1.2.11.tar.gz"],
Expand Down

0 comments on commit 11de748

Please sign in to comment.