From 38927e66d384c5fc639dba6d586d50a1ba746163 Mon Sep 17 00:00:00 2001 From: Sascha Roloff Date: Wed, 11 Sep 2024 14:46:09 +0200 Subject: Rules CC: Deduplicate args returned by expressions collecting args from dependencies --- CC/EXPRESSIONS | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS index 4a0e558..e7fb54d 100644 --- a/CC/EXPRESSIONS +++ b/CC/EXPRESSIONS @@ -599,26 +599,29 @@ , "expression": { "type": "nub_right" , "$1": - { "type": "foreach" - , "var": "fieldname" - , "range": {"type": "var", "name": "deps-fieldnames"} - , "body": - { "type": "let*" - , "bindings": - [ ["provider", "run-libs-args"] - , [ "transition" - , { "type": "lookup" - , "map": - { "type": "var" - , "name": "modified-transitions" - , "default": {"type": "empty_map"} + { "type": "++" + , "$1": + { "type": "foreach" + , "var": "fieldname" + , "range": {"type": "var", "name": "deps-fieldnames"} + , "body": + { "type": "let*" + , "bindings": + [ ["provider", "run-libs-args"] + , [ "transition" + , { "type": "lookup" + , "map": + { "type": "var" + , "name": "modified-transitions" + , "default": {"type": "empty_map"} + } + , "key": {"type": "var", "name": "fieldname"} + , "default": {"type": "var", "name": "deps-transition"} } - , "key": {"type": "var", "name": "fieldname"} - , "default": {"type": "var", "name": "deps-transition"} - } + ] ] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} + , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"} + } } } } @@ -1739,9 +1742,7 @@ ] , ["run-libs", {"type": "CALL_EXPRESSION", "name": "run-libs-deps"}] , [ "run-libs-args" - , { "type": "nub_right" - , "$1": {"type": "CALL_EXPRESSION", "name": "run-libs-args-deps"} - } + , {"type": "CALL_EXPRESSION", "name": "run-libs-args-deps"} ] , [ "ldflags-files" , {"type": "CALL_EXPRESSION", "name": "ldflags-files-deps"} -- cgit v1.2.3 From 194d1f0197b2ec99d5dc4d9f623fdb2e7bac7327 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Thu, 26 Sep 2024 12:02:56 +0200 Subject: Do not expand variables in PATH ... as otherwise we will use the same string in two ways: literal and as a value to the expanded, making proper quoting impossible. Moreover, it is not necessary to expand TOOLCHAIN: pointers into the toolchain can be passed through the "bin dirs" part of the toolchain. --- CC/foreign/cmake/EXPRESSIONS | 13 ++----------- CC/foreign/make/EXPRESSIONS | 4 ++-- CC/foreign/shell/EXPRESSIONS | 6 ++---- CC/foreign/shell/RULES | 24 ------------------------ 4 files changed, 6 insertions(+), 41 deletions(-) diff --git a/CC/foreign/cmake/EXPRESSIONS b/CC/foreign/cmake/EXPRESSIONS index bf2385e..c8f6dc1 100644 --- a/CC/foreign/cmake/EXPRESSIONS +++ b/CC/foreign/cmake/EXPRESSIONS @@ -357,20 +357,11 @@ } , { "type": "join" , "$1": - [ "export PATH=\"$(./expand_exec TOOLCHAIN -- echo " + [ "export PATH=" , { "type": "join_cmd" , "$1": [{"type": "var", "name": "PATH"}] } - , ")${PATH:+:}${PATH}\"" - ] - } - , { "type": "join" - , "$1": - [ "export PATH=\"$(./expand_exec TOOLCHAIN -- echo " - , { "type": "join_cmd" - , "$1": [{"type": "var", "name": "PATH"}] - } - , ")${PATH:+:}${PATH}\"" + , "${PATH:+:}\"${PATH}\"" ] } ] diff --git a/CC/foreign/make/EXPRESSIONS b/CC/foreign/make/EXPRESSIONS index bff8205..1707104 100644 --- a/CC/foreign/make/EXPRESSIONS +++ b/CC/foreign/make/EXPRESSIONS @@ -326,11 +326,11 @@ } , { "type": "join" , "$1": - [ "export PATH=\"$(./expand_exec TOOLCHAIN -- echo " + [ "export PATH=" , { "type": "join_cmd" , "$1": [{"type": "var", "name": "PATH"}] } - , ")${PATH:+:}${PATH}\"" + , "${PATH:+:}\"${PATH}\"" ] } ] diff --git a/CC/foreign/shell/EXPRESSIONS b/CC/foreign/shell/EXPRESSIONS index a0a9a00..a1dcd0c 100644 --- a/CC/foreign/shell/EXPRESSIONS +++ b/CC/foreign/shell/EXPRESSIONS @@ -18,7 +18,6 @@ , "PREFIX" , "BUILD_POSITION_INDEPENDENT" , "TIMEOUT_SCALE" - , "expand_exec" , "resolve_symlinks" ] , "imports": @@ -316,11 +315,11 @@ } , { "type": "join" , "$1": - [ "export PATH=\"$(./expand_exec TOOLCHAIN -- echo " + [ "export PATH=" , { "type": "join_cmd" , "$1": [{"type": "var", "name": "PATH"}] } - , ")${PATH:+:}${PATH}\"" + , "${PATH:+:}\"${PATH}\"" ] } ] @@ -349,7 +348,6 @@ , {"type": "var", "name": "work_dir"} , {"type": "var", "name": "localbase"} , {"type": "var", "name": "script"} - , {"type": "var", "name": "expand_exec"} ] } , "cmd": [{"type": "var", "name": "sh"}, "run_cmds.sh"] diff --git a/CC/foreign/shell/RULES b/CC/foreign/shell/RULES index 6a5d8ec..ed96aa3 100644 --- a/CC/foreign/shell/RULES +++ b/CC/foreign/shell/RULES @@ -30,7 +30,6 @@ { "defaults": [["CC", "defaults"]] , "foreign-defaults": [["CC/foreign", "defaults"]] , "shell defaults": [["shell", "defaults"]] - , "expand_exec": [["./", "..", "expand_exec"]] } , "field_doc": { "project": @@ -125,7 +124,6 @@ , "config_transitions": { "defaults": [{"type": "empty_map"}, {"type": "CALL_EXPRESSION", "name": "for host"}] - , "expand_exec": [{"type": "CALL_EXPRESSION", "name": "for host"}] } , "expression": { "type": "let*" @@ -186,16 +184,6 @@ } } ] - , [ "expand_exec" - , { "type": "let*" - , "bindings": - [ ["fieldname", "expand_exec"] - , ["location", "expand_exec"] - , ["transition", {"type": "CALL_EXPRESSION", "name": "for host"}] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "stage_field"} - } - ] , ["resolve_symlinks", {"type": "FIELD", "name": "resolve_symlinks"}] , ["artifacts", {"type": "CALL_EXPRESSION", "name": "shell-build"}] ] @@ -271,7 +259,6 @@ , "foreign-defaults": [["CC/foreign", "defaults"]] , "shell defaults": [["shell", "defaults"]] , "config_reader": [["CC", "prebuilt/read_pkgconfig.py"]] - , "expand_exec": [["./", "..", "expand_exec"]] } , "field_doc": { "project": @@ -419,7 +406,6 @@ , "config_transitions": { "defaults": [{"type": "empty_map"}, {"type": "CALL_EXPRESSION", "name": "for host"}] - , "expand_exec": [{"type": "CALL_EXPRESSION", "name": "for host"}] } , "expression": { "type": "let*" @@ -555,16 +541,6 @@ , ["cmds", {"type": "FIELD", "name": "cmds"}] , ["resolve_symlinks", {"type": "FIELD", "name": "resolve_symlinks"}] , ["defaults-transition", {"type": "empty_map"}] - , [ "expand_exec" - , { "type": "let*" - , "bindings": - [ ["fieldname", "expand_exec"] - , ["location", "expand_exec"] - , ["transition", {"type": "CALL_EXPRESSION", "name": "for host"}] - ] - , "body": {"type": "CALL_EXPRESSION", "name": "stage_field"} - } - ] , ["install_dir", {"type": "CALL_EXPRESSION", "name": "shell-build"}] , [ "hdrs" , { "type": "++" -- cgit v1.2.3