[Scons-users] Incorrect diagnostics output when calling a Python function as custom action

Mats Wichmann mats at wichmann.us
Tue Mar 21 13:03:28 EDT 2023


On 3/21/23 08:18, Andreas Heyer via Scons-users wrote:
> Hello devs and users of SCons,
> 
> my use of SCons is only through PlatformIO inside of VS Code. I don't 
> have the time to discover how to make a suitable standalone example to 
> show the small error. So please don't be rude because I only copied my 
> bug report for PlatformIO 
> (https://github.com/platformio/platformio-core/issues/4573) over to this 
> project.
> 
> 
> Configuration:
> 
> Operating system: Windows 10 x64
> PlatformIO Version (platformio --version): 3.1.1 (VS Code extension)
> 
> 
> Description of problem:
> 
> There is incorrect diagnostic output during the build process if a 
> custom action is invoked via a custom Python script. This output can 
> lead to false assumptions of the creator of the custom script because 
> claimed action and in reality performed action do not match. In my case 
> I copied the wrong file in my custom action because the diagnostic 
> output showed the wrong order of parameters (source and target 
> interchanged) albeit strictly sticking to the docs I could succeeded 
> from the beginning.
> 
> 
> Steps to Reproduce:
> 
> 1. Add a custom Python script to the project's platformio.ini with 
> "extra_scripts = post:myscript.py" under an environment section
> 2. Create an action function "action_func" with signature 
> "action_func(source, target, env)" in the Python file myscript.py
> 3. Register this function as action for a target 
> "generated_file_to_watch", e.g. 
> "env.AddPostAction("generated_file_to_watch", action_func)"
> 4. Build the project
> 5. Watch for an output line saying 
> "action_func(["generated_file_to_watch"], ["source_file"])".
>     The list of source files (parameter source) depends on your choice 
> of the generated file to watch (parameter target).
> 
> 
> Actual Results:
> 
> Output line of
>      action_func(["generated_file_to_watch"], ["source_file"])
> 
> 
> Expected Results:
> 
> Output line of
>      action_func(["source_file"], ["generated_file_to_watch"])
> 
> Because this is the order the signature of action_func demands according 
> to PlatformIO's advanced scripting documentation. And in fact it's the 
> order the function is called.

Might need some more explanation of what the problem is... you're 
getting information that reflects what you set up in your step 3.  The 
fact that the action is actually a function action rather than a string 
or list action is not reflected in the default output.

You can control how output is printed by supplying your own command 
string, or string function, if you don't like the defaults.  There are 
some details on this here:

https://scons.org/doc/production//HTML/scons-man.html#action_objects

sorry don't know how PlatformIO makes use of this, so those may or may 
not be useful instructions for your case.



More information about the Scons-users mailing list