From 987bf12af02d8a401cfd0a3158ca1a4158503396 Mon Sep 17 00:00:00 2001 From: Googler Date: Fri, 18 Mar 2022 15:48:41 -0700 Subject: [PATCH] Update cc_binary_wrapper to account for select statements Previously, cc_binary would fail if dynamic_deps was specified and a select statement RELNOTES: none PiperOrigin-RevId: 435754932 --- .../builtins_bzl/common/cc/cc_binary_wrapper.bzl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/starlark/builtins_bzl/common/cc/cc_binary_wrapper.bzl b/src/main/starlark/builtins_bzl/common/cc/cc_binary_wrapper.bzl index 15fdfefe20affe..96d9cbf3cb8001 100644 --- a/src/main/starlark/builtins_bzl/common/cc/cc_binary_wrapper.bzl +++ b/src/main/starlark/builtins_bzl/common/cc/cc_binary_wrapper.bzl @@ -21,9 +21,17 @@ dynamic_deps attribute is not specified. load(":common/cc/cc_binary_with_aspects.bzl", cc_binary_with_aspects = "cc_binary") load(":common/cc/cc_binary_without_aspects.bzl", cc_binary_without_aspects = "cc_binary") +def _is_non_empty_list_or_select(value, attr): + if type(value) == "list": + return len(value) > 0 + elif type(value) == "select": + return True + else: + fail("Only select or list is valid for {} attr".format(attr)) + def cc_binary(**kwargs): # Propagate an aspect if dynamic_deps attribute is specified. - if "dynamic_deps" in kwargs and len(kwargs["dynamic_deps"]) > 0: + if "dynamic_deps" in kwargs and _is_non_empty_list_or_select(kwargs["dynamic_deps"], "dynamic_deps"): cc_binary_with_aspects(**kwargs) else: cc_binary_without_aspects(**kwargs)