Skip to content

platformio-build.py crash in case of using CONFIG_FLASH and code relocation e.g. on imxrt1xxx MCUs #28

Description

@th-fischer2020

Describe the bug

There are problems when code relocation is needed. In my case scripts/platformio/platformio-build.py crashes when CONFIG_FLASH set enabled on projects with e.g. NXP iMXRT1xxx MCU. The crash is caused by the following line (1133 on current v4.0-branch):

args_pattern = r"COMMAND = [\S\s]*gen_relocate_app\.py\s+-d.*-i\s+\"(?P<args>.*)\"\s+-o[\S\s]*DESC"

For this regex " are mandatory but in zephyr's generated code there are no quotation marks. So this line should look as follows:

args_pattern = r"COMMAND = [\S\s]gen_relocate_app.py\s+-d.-i\s+["]?(?P.*)["]?\s+-o[\S\s]*DESC"

To Reproduce

Any simple Platformio Project build on Board for example "NXP MIMXRT1040-EVK board" and CONFIG_FLASH is enabled in Kconfig.

Expected behavior

Impact

showstopper

Logs and console output

AssertionError: Cannot extract relocation command! Ninja build file is missing!:
  File ".platformio/penv/lib/python3.12/site-packages/platformio/builder/main.py", line 173:
    env.SConscript("$BUILD_SCRIPT")
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 620:
    return _SConscript(self.fs, *files, **subst_kw)
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 280:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File ".piocore/platforms/nxpimxrt/builder/main.py", line 98:
    target_elf = env.BuildProgram()
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Util/envs.py", line 252:
    return self.method(*nargs, **kwargs)
  File ".piocore/packages/framework-zephyr/scripts/platformio/platformio-build-pre.py", line 25:
    env.ProcessProgramDeps()
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Util/envs.py", line 252:
    return self.method(*nargs, **kwargs)
  File ".platformio/penv/lib/python3.12/site-packages/platformio/builder/tools/piobuild.py", line 142:
    env.BuildFrameworks(env.get("PIOFRAMEWORK"))
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Util/envs.py", line 252:
    return self.method(*nargs, **kwargs)
  File ".platformio/penv/lib/python3.12/site-packages/platformio/builder/tools/piobuild.py", line 352:
    SConscript(env.GetFrameworkScript(name), exports="env")
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 684:
    return method(*args, **kw)
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 620:
    return _SConscript(self.fs, *files, **subst_kw)
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 280:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File ".piocore/platforms/nxpimxrt/builder/frameworks/zephyr.py", line 28:
    SConscript(
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 684:
    return method(*args, **kw)
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 620:
    return _SConscript(self.fs, *files, **subst_kw)
  File ".piocore/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 280:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File ".piocore/packages/framework-zephyr/scripts/platformio/platformio-build.py", line 1920:
    relocation_files = generate_relocation_files_cmd()
  File ".piocore/packages/framework-zephyr/scripts/platformio/platformio-build.py", line 1211:
    '"%s"' % _extract_relocations_arg(ninja_buildfile),
  File ".piocore/packages/framework-zephyr/scripts/platformio/platformio-build.py", line 1194:
    regex_match

Environment (please complete the following information):

  • OS: (e.g. Linux, MacOS, Windows)
    Linux
  • Toolchain (e.g Zephyr SDK, ...)
    Zephyr Project with Platformio
  • Commit SHA or Version used

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions