Skip to content
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

to_json/to_proto methods on structs are deprecated and will be removed #295

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 3 additions & 1 deletion WORKSPACE
Expand Up @@ -5,13 +5,15 @@ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")

http_archive(
name = "rules_pkg",
sha256 = "352c090cc3d3f9a6b4e676cf42a6047c16824959b438895a76c2989c6d7c246a",
urls = [
"https://github.com/bazelbuild/rules_pkg/releases/download/0.2.5/rules_pkg-0.2.5.tar.gz",
"https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.2.5/rules_pkg-0.2.5.tar.gz",
],
sha256 = "352c090cc3d3f9a6b4e676cf42a6047c16824959b438895a76c2989c6d7c246a",
)

load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")

rules_pkg_dependencies()

maybe(
Expand Down
9 changes: 5 additions & 4 deletions lib/partial.bzl
Expand Up @@ -138,17 +138,18 @@ def _is_instance(v):
Returns:
True if v was created by `make`, False otherwise.
"""

# Note that in bazel 3.7.0 and earlier, type(v.function) is the same
# as the type of a function even if v.function is a rule. But we
# cannot rely on this in later bazels due to breaking change
# https://github.com/bazelbuild/bazel/commit/e379ece1908aafc852f9227175dd3283312b4b82
#
# Since this check is heuristic anyway, we simply check for the
# presence of a "function" attribute without checking its type.
return type(v) == _a_struct_type \
and hasattr(v, "function") \
and hasattr(v, "args") and type(v.args) == _a_tuple_type \
and hasattr(v, "kwargs") and type(v.kwargs) == _a_dict_type
return type(v) == _a_struct_type and \
hasattr(v, "function") and \
hasattr(v, "args") and type(v.args) == _a_tuple_type and \
hasattr(v, "kwargs") and type(v.kwargs) == _a_dict_type

partial = struct(
make = _make,
Expand Down
12 changes: 8 additions & 4 deletions lib/structs.bzl
Expand Up @@ -25,10 +25,14 @@ def _to_dict(s):
transformation is only applied to the struct's fields and not to any
nested values.
"""
attributes = dir(s)
attributes.remove("to_json")
attributes.remove("to_proto")
return {key: getattr(s, key) for key in attributes}

# to_json()/to_proto() are disabled by --incompatible_struct_has_no_methods
# and will be removed entirely in a future Bazel release.
return {
key: getattr(s, key)
for key in dir(s)
if key != "to_json" and key != "to_proto"
}

structs = struct(
to_dict = _to_dict,
Expand Down
7 changes: 3 additions & 4 deletions rules/private/copy_file_private.bzl
Expand Up @@ -65,11 +65,10 @@ def _copy_file_impl(ctx):
target_file = ctx.file.src,
is_executable = ctx.attr.is_executable,
)
elif ctx.attr.is_windows:
copy_cmd(ctx, ctx.file.src, ctx.outputs.out)
else:
if ctx.attr.is_windows:
copy_cmd(ctx, ctx.file.src, ctx.outputs.out)
else:
copy_bash(ctx, ctx.file.src, ctx.outputs.out)
copy_bash(ctx, ctx.file.src, ctx.outputs.out)

files = depset(direct = [ctx.outputs.out])
runfiles = ctx.runfiles(files = [ctx.outputs.out])
Expand Down
6 changes: 3 additions & 3 deletions tests/copy_file/BUILD
Expand Up @@ -80,8 +80,8 @@ genrule(
output_to_bindir = 1,
tools = [
":bin_gen",
":bin_src",
":bin_gen_symlink",
":bin_src",
":bin_src_symlink",
],
)
Expand Down Expand Up @@ -147,8 +147,8 @@ copy_file(
name = "copy_xsrc_symlink",
src = "a_with_exec_bit.txt",
out = "xout/a-out-symlink.sh",
is_executable = True,
allow_symlink = True,
is_executable = True,
)

copy_file(
Expand All @@ -162,8 +162,8 @@ copy_file(
name = "copy_xgen_symlink",
src = ":gen",
out = "xout/gen-out-symlink.sh",
is_executable = True,
allow_symlink = True,
is_executable = True,
)

genrule(
Expand Down