Skip to content

Commit f786255

Browse files
committed
fix include parser error
1 parent 20e5f55 commit f786255

1 file changed

Lines changed: 24 additions & 12 deletions

File tree

cpp/libclang/cpp_parser.bzl

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,34 @@ def _extract_files_from_attr(attr, attr_name):
2020
files.extend(src.files.to_list())
2121
return files
2222

23-
SourceFilesInfo = provider(fields = ["files"])
23+
SourceFilesInfo = provider(fields = ["files", "inputs"])
2424

2525
def _cc_sources_aspect_impl(target, ctx):
26-
files = []
26+
direct_srcs = _extract_files_from_attr(ctx.rule.attr, "srcs")
27+
direct_hdrs = _extract_files_from_attr(ctx.rule.attr, "hdrs")
28+
direct_textual_hdrs = _extract_files_from_attr(ctx.rule.attr, "textual_hdrs")
2729

28-
files.extend(_extract_files_from_attr(ctx.rule.attr, "srcs"))
30+
transitive_inputs = []
31+
for dep in getattr(ctx.rule.attr, "deps", []):
32+
if SourceFilesInfo in dep:
33+
transitive_inputs.append(dep[SourceFilesInfo].inputs)
2934

30-
transitive = []
35+
if direct_srcs:
36+
files = direct_srcs
37+
else:
38+
files = []
39+
files.extend(direct_hdrs)
40+
files.extend(direct_textual_hdrs)
3141

32-
if CcInfo in target:
33-
cc_info = target[CcInfo]
34-
if hasattr(cc_info, "compilation_context"):
35-
cc_ctx = cc_info.compilation_context
36-
transitive = cc_ctx.headers
42+
direct_inputs = []
43+
direct_inputs.extend(direct_srcs)
44+
direct_inputs.extend(direct_hdrs)
45+
direct_inputs.extend(direct_textual_hdrs)
3746

3847
return [
3948
SourceFilesInfo(
40-
files = depset(files, transitive = [transitive]),
49+
files = depset(files),
50+
inputs = depset(direct_inputs, transitive = transitive_inputs),
4151
),
4252
]
4353

@@ -207,15 +217,17 @@ def _cpp_parser_impl(ctx):
207217
for ea in extra_args:
208218
args += ["--extra-arg", ea]
209219

210-
target_source_files_list = ctx.attr.target[SourceFilesInfo].files.to_list()
220+
target_source_files_info = ctx.attr.target[SourceFilesInfo]
221+
target_source_files_list = target_source_files_info.files.to_list()
222+
target_source_inputs_list = target_source_files_info.inputs.to_list()
211223

212224
# extend args with input sources
213225
if SourceFilesInfo in ctx.attr.target:
214226
args += [file.path for file in target_source_files_list]
215227

216228
inputs = [
217229
libclang,
218-
] + target_source_files_list + cxx_builtin_include_files + extra_config_site_files
230+
] + target_source_inputs_list + cxx_builtin_include_files + extra_config_site_files
219231

220232
ctx.actions.run(
221233
inputs = inputs,

0 commit comments

Comments
 (0)