From 7ece7d37f7840b27b799fbe36c62034e816829a1 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Thu, 24 Oct 2024 15:16:39 +0200 Subject: lint information: also provide the direct-deps artifacts separately --- CC/EXPRESSIONS | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS index 32022ce..0330e71 100644 --- a/CC/EXPRESSIONS +++ b/CC/EXPRESSIONS @@ -820,12 +820,14 @@ , "cflags-files" , "lint-deps fieldnames" , "deps-transition" + , "deps-fieldnames" , "compile-args" , "defaults-transition" ] , "imports": { "objects": "objects" , "list_provider": ["./", "..", "field_list_provider"] + , "runfiles_list": ["./", "..", "field_runfiles_list"] , "default-TOOLCHAIN": "default-TOOLCHAIN" , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS" , "compiler": "compiler" @@ -870,6 +872,52 @@ ] } ] + , [ "direct-deps hdrs" + , { "type": "to_subdir" + , "subdir": "include" + , "$1": + { "type": "let*" + , "bindings": + [["transition", {"type": "var", "name": "deps-transition"}]] + , "body": + { "type": "map_union" + , "$1": + { "type": "++" + , "$1": + { "type": "foreach" + , "var": "fieldname" + , "range": {"type": "var", "name": "deps-fieldnames"} + , "body": + {"type": "CALL_EXPRESSION", "name": "runfiles_list"} + } + } + } + } + } + ] + , [ "own headers" + , { "type": "to_subdir" + , "subdir": "work" + , "$1": + { "type": "map_union" + , "$1": + [ {"type": "var", "name": "hdrs"} + , {"type": "var", "name": "private-hdrs"} + ] + } + } + ] + , [ "direct hdrs" + , { "type": "map_union" + , "$1": + [ {"type": "var", "name": "own headers"} + , {"type": "var", "name": "direct-deps hdrs"} + ] + } + ] + , [ "direct deps artifact names" + , {"type": "keys", "$1": {"type": "var", "name": "direct hdrs"}} + ] , [ "hdr lint" , { "type": "foreach" , "range": @@ -908,7 +956,10 @@ } ] ] - , "body": {"type": "env", "vars": ["cmd", "src"]} + , "body": + { "type": "env" + , "vars": ["cmd", "src", "direct deps artifact names"] + } } } } @@ -980,7 +1031,10 @@ { "type": "let*" , "bindings": [["src", {"type": "var", "name": "work src_name"}]] - , "body": {"type": "env", "vars": ["cmd", "src"]} + , "body": + { "type": "env" + , "vars": ["cmd", "src", "direct deps artifact names"] + } } } } -- cgit v1.2.3 From ee06e3ec3b3deb0a9bf43165ba477e54f4ccbcc5 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Thu, 24 Oct 2024 16:46:39 +0200 Subject: ["lint", "targets"]: Also have a metadata file ... containing the names of artifacts (files or directories) that are from the target itself of the runfiles of direct dependencies. This allows tools to check some form of strict dependency structure. --- lint/RULES | 23 +++++++++++++++++++++++ lint/call_lint | 1 + 2 files changed, 24 insertions(+) diff --git a/lint/RULES b/lint/RULES index fef578a..04ad230 100644 --- a/lint/RULES +++ b/lint/RULES @@ -63,6 +63,10 @@ , " by the field \"config\", and" , "- OUT pointing to a directory to which files with the lint result" , " can be written." + , "- META pointing to a json file contaning" + , " - at key \"direct deps artifact names\" a list of all input" + , " artifacts that come from the target itself or are runfiles of a" + , " direct dependency." , "It is supposed to indicate by the exit code whether the file to lint" , "complies with the given linting policy, with 0 meaning" , "compliant." @@ -152,6 +156,12 @@ , "dep": {"type": "var", "name": "_"} } ] + , [ "direct deps artifact names" + , { "type": "DEP_PROVIDES" + , "dep": {"type": "var", "name": "_"} + , "provider": "direct deps artifact names" + } + ] ] , "body": { "type": "TREE" @@ -170,6 +180,19 @@ , "subdir": "config" , "$1": {"type": "var", "name": "config"} } + , { "type": "singleton_map" + , "key": "meta.json" + , "value": + { "type": "BLOB" + , "data": + { "type": "json_encode" + , "$1": + { "type": "env" + , "vars": ["direct deps artifact names"] + } + } + } + } ] } , "cmd": diff --git a/lint/call_lint b/lint/call_lint index ab9c2b8..ca7e4ef 100755 --- a/lint/call_lint +++ b/lint/call_lint @@ -23,6 +23,7 @@ echo "${RESULT}" > result export OUT="$(pwd)/out" mkdir -p config export CONFIG="$(pwd)/config" +export META="$(pwd)/meta.json" cd work -- cgit v1.2.3