Unverified Commit 3bd60c6b authored by Cristian Maglie's avatar Cristian Maglie Committed by GitHub

[skip-changelog] regression: Fix property expansion of "recipe.preproc.macros" (#2268)

Previously the undefined template placeholders in "recipe.preproc.macros"
were silently replaced the empty string. This changed after a
refactoring in 0585435f.

Previously it was:

https://github.com/arduino/arduino-cli/commit/0585435f8b1d05e0117606f69bea42d3f3dfec79#diff-371f93465ca5a66f01cbe876348f67990750091d27a827781c8633456b93ef3bL62
-       cmd, err := builder_utils.PrepareCommandForRecipe(buildProperties, "recipe.preproc.macros", true, ctx.PackageManager.GetEnvVarsForSpawnedProcess())

The `true` parameter in the call to `builder_utils.PrepareCommandForRecipe` is the parameter `removeUnsetProperties`.

This behaviour has not been ported over after the "refactoring":
https://github.com/arduino/arduino-cli/commit/0585435f8b1d05e0117606f69bea42d3f3dfec79#diff-733dda6759fe968eb8a8d7305c37c7a320a8df52764ca0cba8e88a6f1d077eb5R44-R65

+       const gccPreprocRecipeProperty = "recipe.preproc.macros"
+       if gccBuildProperties.Get(gccPreprocRecipeProperty) == "" {
+               // autogenerate preprocess macros recipe from compile recipe
+               preprocPattern := gccBuildProperties.Get("recipe.cpp.o.pattern")
+               // add {preproc.macros.flags} to {compiler.cpp.flags}
+               preprocPattern = strings.Replace(preprocPattern, "{compiler.cpp.flags}", "{compiler.cpp.flags} {preproc.macros.flags}", 1)
+               // replace "{object_file}" with "{preprocessed_file_path}"
+               preprocPattern = strings.Replace(preprocPattern, "{object_file}", "{preprocessed_file_path}", 1)
+
+               gccBuildProperties.Set(gccPreprocRecipeProperty, preprocPattern)
+       }
+
+       pattern := gccBuildProperties.Get(gccPreprocRecipeProperty)
+       if pattern == "" {
+               return nil, nil, errors.Errorf(tr("%s pattern is missing"), gccPreprocRecipeProperty)
+       }
+
+       commandLine := gccBuildProperties.ExpandPropsInString(pattern)
+       args, err := properties.SplitQuotedString(commandLine, `"'`, false)
+       if err != nil {
+               return nil, nil, err
+       }

that is missing the call to `properties.DeleteUnexpandedPropsFromString`.
parent 9510d615
......@@ -59,6 +59,7 @@ func GCC(sourceFilePath *paths.Path, targetFilePath *paths.Path, includes paths.
}
commandLine := gccBuildProperties.ExpandPropsInString(pattern)
commandLine = properties.DeleteUnexpandedPropsFromString(commandLine)
args, err := properties.SplitQuotedString(commandLine, `"'`, false)
if err != nil {
return nil, nil, err
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment