Fix issue regarding non-target deps
Caused by https://github.com/bazelbuild/tulsi/commit/34768639e5bfcadd3ce43a45e35dd91547e76273
Tulsi only cares about deps that are Targets.
PiperOrigin-RevId: 197152199
diff --git a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
index 7767259..3b77fcf 100644
--- a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
+++ b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
@@ -328,6 +328,18 @@
datamodelds.append(_file_metadata_by_replacing_path(f, path, False))
return datamodelds
+def _collect_dependencies(rule_attr, attr_name):
+ """Collects Bazel targets for a dependency attr.
+
+ Args:
+ rule_attr: The Bazel rule.attr whose dependencies should be collected.
+ attr_name: attribute name to inspect for dependencies.
+
+ Returns:
+ A list of the Bazel target dependencies of the given rule.
+ """
+ return [dep for dep in _getattr_as_list(rule_attr, attr_name) if hasattr(dep, "tulsi_info_files")]
+
def _collect_dependency_labels(rule, filter, attr_list):
"""Collects Bazel labels for a list of dependency attributes.
@@ -341,7 +353,10 @@
A list of the Bazel labels of dependencies of the given rule.
"""
attr = rule.attr
- deps = [dep for attribute in attr_list for dep in _filter_deps(filter, _getattr_as_list(attr, attribute)) if hasattr(dep, "tulsi_info_files")]
+ deps = [dep for attribute in attr_list for dep in _filter_deps(
+ filter,
+ _collect_dependencies(attr, attribute),
+ )]
return [dep.label for dep in deps if hasattr(dep, "label")]
def _get_opt_attr(obj, attr_path):
@@ -522,7 +537,7 @@
tulsi_info_files = depset()
transitive_attributes = dict()
for attr_name in _TULSI_COMPILE_DEPS:
- deps = _getattr_as_list(rule_attr, attr_name)
+ deps = _collect_dependencies(rule_attr, attr_name)
for dep in _filter_deps(filter, deps):
if hasattr(dep, "tulsi_info_files"):
tulsi_info_files += dep.tulsi_info_files
@@ -826,7 +841,7 @@
embedded_bundles = depset()
for attr_name in _TULSI_COMPILE_DEPS:
- deps = _getattr_as_list(rule_attr, attr_name)
+ deps = _collect_dependencies(rule_attr, attr_name)
for dep in deps:
if hasattr(dep, "tulsi_generated_files"):
tulsi_generated_files += dep.tulsi_generated_files