Build error platformIO init

The following compilation errors occur when I create a new PIO (PlatformIO) project for the first time in VSCode:

and the .ini

I am using ESP32 to communicate through microROS with ROS2 in an Ubuntu 20 virtual machine. The first time, following the tutorial, I encountered this issue after configuring dependencies and compiling.
Any ideas?

The stack trace definitely shows that the micro_ros_platformio/extra_script.py script from that library is causing issues. Specifically, it seems to think that clean_microros is already registered as a custom target (__PIO_TARGETS), and PlatformIO doesn’t allow double-registering.

I’ll take a look.

For future reference though: It’s preferable to text the stack traces and platformio.ini as text so that it’s easily copy-pastable for other people’s reproduction.

AssertionError: :
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/main.py", line 173:
    env.SConscript("$BUILD_SCRIPT")
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 598:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/home/sou/.platformio/platforms/espressif32/builder/main.py", line 312:
    target_elf = env.BuildProgram()
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piobuild.py", line 62:
    env.ProcessProjectDeps()
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piobuild.py", line 147:
    plb = env.ConfigureProjectLibBuilder()
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 1180:
    project.install_dependencies()
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 965:
    if _is_builtin(spec):
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 957:
    for lb in self.env.GetLibBuilders():
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 1093:
    lb = LibBuilderFactory.new(env, lib_dir)
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 60:
    obj = globals()[clsname](env, path, verbose=verbose)
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 153:
    self.process_extra_options()
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piolib.py", line 301:
    self.env.SConscript(
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 598:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/home/sou/Documents/PlatformIO/Projects/test/.pio/libdeps/upesy_wroom/micro_ros_platformio/extra_script.py", line 64:
    global_env.AddCustomTarget("clean_microros", None, clean_microros_callback, title="Clean Micro-ROS", description="Clean Micro-ROS build environment")
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piotarget.py", line 91:
    return env.AddTarget(group="Custom", *args, **kwargs)
  File "/home/sou/.platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/home/sou/.platformio/penv/lib/python3.10/site-packages/platformio/builder/tools/piotarget.py", line 76:
    assert name not in env["__PIO_TARGETS"]
========================= [FAILED] Took 25.37 seconds =========================
[env:upesy_wroom]
platform = espressif32
board = upesy_wroom
framework = espidf
lib_deps = https://gitee.com/ohhuo/micro_ros_platformio.git
  1. Are you sure you want to use ESP-IDF with this library? The library.json explicitly says Arduino, not ESP-IDF.
  2. The quickes way to move forward would be to edit
.pio/libdeps/upesy_wroom/micro_ros_platformio/extra_script.py

the line

global_env.AddCustomTarget("clean_microros", None, clean_microros_callback, title="Clean Micro-ROS", description="Clean Micro-ROS build environment")

to instead

if "clean_microros" not in global_env["__PIO_TARGETS"]:
   global_env.AddCustomTarget("clean_microros", None, clean_microros_callback, title="Clean Micro-ROS", description="Clean Micro-ROS build environment")

Edit: The project https://gitee.com/ohhuo/micro_ros_platformio/tree/main/examples/micro-ros_publisher builds just fine for me. Code also looks very Arduino focused.

1 Like

The problem has been resolved.
Thanks.