aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <arostovtsev@google.com>2021-05-03 12:27:40 -0400
committerGitHub <noreply@github.com>2021-05-03 12:27:40 -0400
commit7b859037a673db6f606661323e74c5d4751595e6 (patch)
treed6e6729705001521ee89a6fbeafc07fc36fe2c12
parent398f3122891b9b711f5aab1adc7597d9fce09085 (diff)
downloadbazel-skylib-7b859037a673db6f606661323e74c5d4751595e6.tar.gz
to_json/to_proto methods on structs are deprecated and will be removed (#295)
-rw-r--r--WORKSPACE4
-rw-r--r--lib/partial.bzl9
-rw-r--r--lib/structs.bzl12
-rw-r--r--rules/private/copy_file_private.bzl7
-rw-r--r--tests/copy_file/BUILD6
5 files changed, 22 insertions, 16 deletions
diff --git a/WORKSPACE b/WORKSPACE
index d78cfad..e8e042e 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -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(
diff --git a/lib/partial.bzl b/lib/partial.bzl
index 8bfba7f..a9c88d6 100644
--- a/lib/partial.bzl
+++ b/lib/partial.bzl
@@ -138,6 +138,7 @@ 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
@@ -145,10 +146,10 @@ def _is_instance(v):
#
# 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,
diff --git a/lib/structs.bzl b/lib/structs.bzl
index f291152..78066ad 100644
--- a/lib/structs.bzl
+++ b/lib/structs.bzl
@@ -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,
diff --git a/rules/private/copy_file_private.bzl b/rules/private/copy_file_private.bzl
index 75cb027..44f133a 100644
--- a/rules/private/copy_file_private.bzl
+++ b/rules/private/copy_file_private.bzl
@@ -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])
diff --git a/tests/copy_file/BUILD b/tests/copy_file/BUILD
index 79ab7ba..cacb5b1 100644
--- a/tests/copy_file/BUILD
+++ b/tests/copy_file/BUILD
@@ -80,8 +80,8 @@ genrule(
output_to_bindir = 1,
tools = [
":bin_gen",
- ":bin_src",
":bin_gen_symlink",
+ ":bin_src",
":bin_src_symlink",
],
)
@@ -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(
@@ -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(