I’m unable to build a simple blink example using the latest ESP32-IDF version. I get the same errors with the development version of platform = https://github.com/platformio/platform-espressif32.git.
Any suggestions as how to fix it? Thanks.
Environment:
PlatformIO Core: 5.1.1
Platform IDE 2.3.2
macOS: 11.4 and 10.14.6
Package framework-espidf
------------------------
Type: framework
Requirements: ~3.40201.0
Installed: Yes
Version: 3.40201.210513
Original version: 4.2.1
Description: Espressif IoT Development Framework. Official development framework for ESP32 chip
Error:
Processing esp32dev (platform: espressif32; board: esp32dev; framework: espidf)
-----------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (3.2.1+sha.4cb0633) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-espidf 3.40201.210513 (4.2.1)
- tool-cmake 3.16.4
- tool-esptoolpy 1.30000.201119 (3.0.0)
- tool-ninja 1.9.0
- toolchain-esp32ulp 1.22851.191205 (2.28.51)
- toolchain-xtensa32 2.80400.210211 (8.4.0)
Reading CMake configuration...
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 0 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/esp32dev/src/main.o
...
...
Compiling .pio/build/esp32dev/bootloader/bootloader_support/src/bootloader_common.o
Archiving .pio/build/esp32dev/bootloader/esp-idf/spi_flash/libspi_flash.a
Indexing .pio/build/esp32dev/bootloader/esp-idf/spi_flash/libspi_flash.a
linker script generation failed for /<user>/.platformio/packages/framework-espidf/components/esp32/ld/esp32.project.ld.in
ERROR: failed to parse /<user>/.platformio/packages/framework-espidf/components/esp_event/linker.lf
Expected end of text, found 'i' (at char 0), (line:1, col:1)
Compiling .pio/build/esp32dev/bootloader/bootloader_support/src/bootloader_flash.o
*** [.pio/build/esp32dev/esp32.project.ld] Error 1
================================================ [FAILED] Took 15.01 seconds ================================================
The terminal process "platformio 'run'" terminated with exit code: 1.
ESP-IDF has a couple of quirks. First, it does not like it when the path to the project contains spaces, or a folder in the chain above it is a git repo. But one of thing at a time. Try to get a fresh ESP-IDF installation first by removing the /<user>/.platformio/packages/framework-espidf/ folder and retry.
Thanks. The ESP32 framework-arduinoespressif32 build work fine and I had not built a framework-espidf build for quite some time.
Anyway, I did a fresh re-install of ESP-IDF after removing the ESP-IDF specific folders from .platformio/packages/ . I get the same error as before.
linker script generation failed for /Users/quark11/.platformio/packages/framework-espidf/components/esp32/ld/esp32.project.ld.in
ERROR: failed to parse /Users/quark11/.platformio/packages/framework-espidf/components/esp_event/linker.lf
Expected end of text, found 'i' (at char 0), (line:1, col:1)
*** [.pio/build/esp32dev/esp32.project.ld] Error 1
On another macOS that has never had PlatformIO, I installed PlatformIO and ESP-IDF. The same ESP-IDF blink example built fine. So, there must be some other environment related conflict (Python?) that may be causing the build failure on my development Mac.
It’s odd that the ESP32 framework-arduinoespressif32 build works fine but not the framework-espidf builds.
First, try to remove the .pio (hidden) folder of the project and rebuild to get a clean build.
If that does not help one can try the suggestions in the comment below that. Execute, in a CLI, the command pio system info to find out what your Python Executable path is. (e.g., c:\users\max\appdata\local\programs\python\python38\python.exe for me).
Under macOS 10.14.6 (Mojave), I noticed that with framework-espidf 4.3, the same ESP32 build broke again.
I had to repeat the above procedure again, i.e. uninstall pyparsing & install pyparsing==2.2.0.
With the framework-espidf 4.3 under macOS 11.5.1 (Big Sur) and macOS 10.13.6 (High Sierra) & pyparsing 2.3.1, the ESP32 builds were fine.
Both macOS 11.5.1 and macOS 10.13.6 have python 3.9, whereas macOS 10.14.6 has python 3.8. On the latter, I’ll check to see if I can run the later version of pyparsing by upgrading to python 3.9.
What does pio system info's “Python Executable” path return? What happens when you execute that executable with --version? You can try and replace the executables at that path, I don’t know of any other method to change PlatformIO’s python version, since it’s managed by itself in that isolated pyenv.
PIO was using the local Python 3.8.x in .platformio/penv/bin. After replacing the folder .platform/penv from another macOS that had PIO local Python 3.9.x, relaunch of PIO forced it to re-install PlatformOI IDE core.
pio system info now displays Python 3.9.2-final.0, like the PlatformIO on two of the other Macs. All works fine.
I have this very issue, and by forcing pyparsing = 2.2.0 the problem is fixed, but right now i do by an horrible hack as pio run will try to update the library to the cached 3.4.0 every time!
i tried to override this behavior adding platform_packages = pyparsing 2.2.0
to platformio.io but this does not seems to be correct as it say pyparsing is not found.
Specifying python packages like that cannot be done. The builder script determines what packages it installs. I was under the impression that installing the correct version once is sufficient. If it tries to reinstall it, it will source the version from C:\Users\<user>\.platformio\platforms\espressif32\builder\frameworksespidf.py. Edit these lines of the file
Change the version string for pyparsing to e.g. ==2.2.0.