From 9e7f2b68357dc1fbd073244e5a242a8317c8207d Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Tue, 5 Nov 2024 16:27:50 +0100 Subject: Prefer built-in "nub_left" Now that justbuild 1.4 is available, the workaround of defining "nub_left" in terms of "reverse" and "nub_right" is no longer necessary. --- CC/RULES | 18 +++++++----------- CC/proto/RULES | 18 +++++++----------- EXPRESSIONS | 14 -------------- lint/RULES | 22 ++++++++-------------- patch/RULES | 18 +++++++----------- shell/RULES | 44 ++++++++++++++++---------------------------- 6 files changed, 45 insertions(+), 89 deletions(-) diff --git a/CC/RULES b/CC/RULES index 85c7456..0f1b0ff 100644 --- a/CC/RULES +++ b/CC/RULES @@ -99,7 +99,6 @@ , "base-provides-++": "defaults-base-provides-++" , "base-provides-list": "defaults-base-provides-list" , "artifacts_list": ["./", "..", "field_artifacts_list"] - , "nub_left": ["", "nub_left"] , "compile-deps": "compile-deps" , "compile-args-deps": "compile-args-deps" , "link-deps": "link-deps" @@ -180,17 +179,14 @@ ] , ["provider", "PATH"] , [ "PATH" - , { "type": "++" + , { "type": "nub_left" , "$1": - [ {"type": "var", "name": "PATH"} - , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} - ] - } - ] - , [ "PATH" - , { "type": "let*" - , "bindings": [["list", {"type": "var", "name": "PATH"}]] - , "body": {"type": "CALL_EXPRESSION", "name": "nub_left"} + { "type": "++" + , "$1": + [ {"type": "var", "name": "PATH"} + , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} + ] + } } ] , ["provider", "ENV"] diff --git a/CC/proto/RULES b/CC/proto/RULES index 2e4b1d3..07b2dad 100644 --- a/CC/proto/RULES +++ b/CC/proto/RULES @@ -83,7 +83,6 @@ , "base-provides-++": ["./", "..", "defaults-base-provides-++"] , "base-provides-list": ["./", "..", "defaults-base-provides-list"] , "artifacts_list": ["", "field_artifacts_list"] - , "nub_left": ["", "nub_left"] , "compile-deps": ["CC", "compile-deps"] , "compile-args-deps": ["CC", "compile-args-deps"] , "link-deps": ["CC", "link-deps"] @@ -137,17 +136,14 @@ ] , ["provider", "PATH"] , [ "PATH" - , { "type": "++" + , { "type": "nub_left" , "$1": - [ {"type": "var", "name": "PATH"} - , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} - ] - } - ] - , [ "PATH" - , { "type": "let*" - , "bindings": [["list", {"type": "var", "name": "PATH"}]] - , "body": {"type": "CALL_EXPRESSION", "name": "nub_left"} + { "type": "++" + , "$1": + [ {"type": "var", "name": "PATH"} + , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} + ] + } } ] , ["provider", "ENV"] diff --git a/EXPRESSIONS b/EXPRESSIONS index 52a381f..b974026 100644 --- a/EXPRESSIONS +++ b/EXPRESSIONS @@ -226,18 +226,4 @@ } } } -, "nub_left": - { "doc": ["Removes all but the leftmost duplicate from the list."] - , "vars": ["list"] - , "vars_doc": {"list": ["The list to remove duplicates from."]} - , "expression": - { "type": "let*" - , "bindings": - [ ["list", {"type": "reverse", "$1": {"type": "var", "name": "list"}}] - , ["list", {"type": "nub_right", "$1": {"type": "var", "name": "list"}}] - , ["list", {"type": "reverse", "$1": {"type": "var", "name": "list"}}] - ] - , "body": {"type": "var", "name": "list"} - } - } } diff --git a/lint/RULES b/lint/RULES index e1000d9..0fba127 100644 --- a/lint/RULES +++ b/lint/RULES @@ -21,23 +21,17 @@ { "type": "let*" , "bindings": [ [ "PATH" - , { "type": "reverse" + , { "type": "nub_left" , "$1": - { "type": "nub_right" + { "type": "++" , "$1": - { "type": "reverse" - , "$1": - { "type": "++" - , "$1": - [ {"type": "FIELD", "name": "PATH"} - , { "type": "let*" - , "bindings": [["provider", "PATH"]] - , "body": - {"type": "CALL_EXPRESSION", "name": "base-provides-++"} - } - ] + [ {"type": "FIELD", "name": "PATH"} + , { "type": "let*" + , "bindings": [["provider", "PATH"]] + , "body": + {"type": "CALL_EXPRESSION", "name": "base-provides-++"} } - } + ] } } ] diff --git a/patch/RULES b/patch/RULES index c55de58..ea495f0 100644 --- a/patch/RULES +++ b/patch/RULES @@ -32,7 +32,6 @@ , "base-provides-++": ["CC", "defaults-base-provides-++"] , "base-provides-list": ["CC", "defaults-base-provides-list"] , "artifacts_list": ["", "field_artifacts_list"] - , "nub_left": ["", "nub_left"] , "for host": ["transitions", "for host"] } , "config_transitions": @@ -52,17 +51,14 @@ ] , ["provider", "PATH"] , [ "PATH" - , { "type": "++" + , { "type": "nub_left" , "$1": - [ {"type": "var", "name": "PATH"} - , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} - ] - } - ] - , [ "PATH" - , { "type": "let*" - , "bindings": [["list", {"type": "var", "name": "PATH"}]] - , "body": {"type": "CALL_EXPRESSION", "name": "nub_left"} + { "type": "++" + , "$1": + [ {"type": "var", "name": "PATH"} + , {"type": "CALL_EXPRESSION", "name": "base-provides-++"} + ] + } } ] , ["provider", "ENV"] diff --git a/shell/RULES b/shell/RULES index 5ac07e6..b9e91bb 100644 --- a/shell/RULES +++ b/shell/RULES @@ -116,44 +116,32 @@ } ] , [ "PATH" - , { "type": "reverse" + , { "type": "nub_left" , "$1": - { "type": "nub_right" + { "type": "++" , "$1": - { "type": "reverse" - , "$1": - { "type": "++" - , "$1": - [ {"type": "FIELD", "name": "PATH"} - , { "type": "let*" - , "bindings": [["provider", "PATH"]] - , "body": - {"type": "CALL_EXPRESSION", "name": "base-provides-++"} - } - ] + [ {"type": "FIELD", "name": "PATH"} + , { "type": "let*" + , "bindings": [["provider", "PATH"]] + , "body": + {"type": "CALL_EXPRESSION", "name": "base-provides-++"} } - } + ] } } ] , [ "bin dirs" - , { "type": "reverse" + , { "type": "nub_left" , "$1": - { "type": "nub_right" + { "type": "++" , "$1": - { "type": "reverse" - , "$1": - { "type": "++" - , "$1": - [ {"type": "FIELD", "name": "bin dirs"} - , { "type": "let*" - , "bindings": [["provider", "bin dirs"]] - , "body": - {"type": "CALL_EXPRESSION", "name": "base-provides-++"} - } - ] + [ {"type": "FIELD", "name": "bin dirs"} + , { "type": "let*" + , "bindings": [["provider", "bin dirs"]] + , "body": + {"type": "CALL_EXPRESSION", "name": "base-provides-++"} } - } + ] } } ] -- cgit v1.2.3 From ee8a8d511fb5c8d0cbad8a5979759ce853e8d767 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Tue, 5 Nov 2024 16:27:27 +0100 Subject: Use quote and quasi-quote to simplify some expressions --- CC/test/EXPRESSIONS | 17 +++++++---------- EXPRESSIONS | 2 +- lint/RULES | 3 +-- shell/test/RULES | 17 +++++++---------- 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/CC/test/EXPRESSIONS b/CC/test/EXPRESSIONS index b42401b..18028f8 100644 --- a/CC/test/EXPRESSIONS +++ b/CC/test/EXPRESSIONS @@ -348,19 +348,16 @@ } ] , [ "artifacts" - , { "type": "map_union" + , { "type": "`" , "$1": - [ { "type": "singleton_map" - , "key": "pwd" - , "value": {"type": "BLOB", "data": "/summary"} - } - , {"type": "var", "name": "summary"} - , { "type": "singleton_map" - , "key": "work" - , "value": + { "pwd": + {"type": ",", "$1": {"type": "BLOB", "data": "/summary"}} + , "work": + { "type": "," + , "$1": {"type": "TREE", "$1": {"type": "var", "name": "attempts"}} } - ] + } } ] , [ "runfiles" diff --git a/EXPRESSIONS b/EXPRESSIONS index b974026..0c1f611 100644 --- a/EXPRESSIONS +++ b/EXPRESSIONS @@ -126,7 +126,7 @@ , "expression": { "type": "map_union" , "$1": - [ {"type": "singleton_map", "key": "PATH", "value": "/bin:/usr/bin"} + [ {"type": "'", "$1": {"PATH": "/bin:/usr/bin"}} , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} ] } diff --git a/lint/RULES b/lint/RULES index 0fba127..0da42d2 100644 --- a/lint/RULES +++ b/lint/RULES @@ -93,8 +93,7 @@ , "call_lint": ["call_lint"] , "call_summary": ["call_summary"] } - , "config_transitions": - {"targets": [{"type": "singleton_map", "key": "LINT", "value": true}]} + , "config_transitions": {"targets": [{"type": "'", "$1": {"LINT": true}}]} , "anonymous": {"lint": {"target": "targets", "provider": "lint", "rule_map": {}}} , "imports": diff --git a/shell/test/RULES b/shell/test/RULES index 98fdab0..3d49db2 100644 --- a/shell/test/RULES +++ b/shell/test/RULES @@ -310,19 +310,16 @@ } ] , [ "artifacts" - , { "type": "map_union" + , { "type": "`" , "$1": - [ { "type": "singleton_map" - , "key": "pwd" - , "value": {"type": "BLOB", "data": "/summary"} - } - , {"type": "var", "name": "summary"} - , { "type": "singleton_map" - , "key": "work" - , "value": + { "pwd": + {"type": ",", "$1": {"type": "BLOB", "data": "/summary"}} + , "work": + { "type": "," + , "$1": {"type": "TREE", "$1": {"type": "var", "name": "attempts"}} } - ] + } } ] , [ "runfiles" -- cgit v1.2.3 From 1e099fbbb5648177ceded11a7a56e6ca9e9103ac Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Tue, 5 Nov 2024 16:39:30 +0100 Subject: Use "cwd" property of actions ... instead of composing a shell command doing a cd first. --- CC/EXPRESSIONS | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS index 0330e71..ee006da 100644 --- a/CC/EXPRESSIONS +++ b/CC/EXPRESSIONS @@ -1757,16 +1757,8 @@ } ] } - , "cmd": - [ "sh" - , "-c" - , { "type": "join" - , "$1": - [ "cd work && " - , {"type": "join_cmd", "$1": {"type": "var", "name": "cmd"}} - ] - } - ] + , "cmd": {"type": "var", "name": "cmd"} + , "cwd": "work" , "env": {"type": "var", "name": "ENV"} } ] -- cgit v1.2.3