Failed to build ESP32 after updating from older version

I went to upgrade my espidf framework from ;platform = espressif32@1.11.1 to the latest version. i think its 4.1.0 now and after sorting out the cmakelist.txt I thought everything would be ok. till i went to build my project.

I get when i press build … also same with test

The command line is too long.
*** [.pio\build\esp32dev\firmware.elf] Error 1

from

Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (2.0.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (olimex-arm-usb-ocd-h) 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.40100.200827 (4.1.0)
 - tool-cmake 3.16.4
 - tool-esptoolpy 1.20600.0 (2.6.0)
 - tool-idf 1.0.1
 - tool-mconf 1.4060000.20190628 (406.0.0)
 - tool-ninja 1.9.0
 - toolchain-esp32ulp 1.22851.191205 (2.28.51)
 - toolchain-xtensa32 2.80200.200827 (8.2.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
Linking .pio\build\esp32dev\firmware.elf
The command line is too long.
*** [.pio\build\esp32dev\firmware.elf] Error 1

Any ideas what could of caused this. ?

PS C:\projects\mspcc63198\src\ext\mspAutoClockESP> pio run -v
Processing esp32dev (platform: espressif32; framework: espidf; board: esp32dev; monitor_speed: 115200; monitor_filters: log2file, time, default; board_build.partitions: 
partitions_custom.csv; board_build.embed_txtfiles: website/jquery-3.2.1.min.js
website/mspAutoClockUI.css
website/mspAutoClockUI.html
website/mspAutoClockUI.js
website/res/autoclock_favicon.ico
website/res/ind_wifi-on_large.png
website/res/logo_ac_large.png
website/res/label_ac_large.png
website/res/logo_msp_large.png
website/res/logo_msp_regular.png
website/res/ind_processing1_large.png
website/res/ind_play_large.png
website/res/ind_ok_regular.png
website/res/ind_ok_large.png
website/res/ind_offset-zero_large.png
website/res/ind_offset-pos_large.png
website/res/ind_offset-neg_large.png
website/res/ind_nok_regular.png
website/res/ind_nok_large.png
website/res/ind_expand_regular.png
website/res/ind_add_regular.png
website/res/btn_z_regular.png
website/res/btn_shutdown_regular.png
website/res/btn_shutdown_large.png
website/res/btn_settings_large.png
website/res/btn_prev-res_regular.png
website/res/btn_home-pos_regular.png
website/res/btn_home_large.png
website/res/btn_debug_regular.png
website/res/btn_contact_regular.png
website/res/btn_config_regular.png
website/res/btn_axis_regular.png
website/res/AutoClock192x192.png
website/res/AutoClock180x180.png
website/res/AutoClock32x32.png
website/res/AutoClock16x16.png
website/res/ind_power-off_large.png
website/res/ind_power-on_large.png
website/res/ind_power-low_large.png
website/res/ind_power-high_large.png
website/res/invert_pos_neg_blue.png
website/res/ins.png
website/res/mm.png
website/res/ac_calibration_icon.png
website/res/log_icon.png
website/res/share_icon.png; build_type: release; debug_tool: olimex-arm-usb-ocd-h; test_build_project_src: True; build_flags: -D PIO_FRAMEWORK_ESP_IDF_ENABLE_EXCEPTIONS)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (2.0.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (olimex-arm-usb-ocd-h) 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.40100.200827 (4.1.0)
 - tool-cmake 3.16.4
 - tool-esptoolpy 1.20600.0 (2.6.0)
 - tool-idf 1.0.1
 - tool-mconf 1.4060000.20190628 (406.0.0)
 - tool-ninja 1.9.0
 - toolchain-esp32ulp 1.22851.191205 (2.28.51) 
 - toolchain-xtensa32 2.80200.200827 (8.2.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
xtensa-esp32-elf-g++ -o .pio\build\esp32dev\firmware.elf -T esp32_out.ld -u esp_app_desc -u pthread_include_pthread_impl -u pthread_include_pthread_cond_impl -u pthread_include_pthread_local_storage_impl -u app_main -T esp32.project.ld -T esp32.peripherals.ld -u call_user_start_cpu0 -u ld_include_panic_highint_hdl -T esp32.rom.newlib-time.ld -T esp32.rom.ld -T esp32.rom.libgcc.ld -T esp32.rom.newlib-data.ld -T esp32.rom.syscalls.ld -T esp32.rom.newlib-funcs.ld -u vfs_include_syscalls_impl -u newlib_include_locks_impl -u newlib_include_heap_impl -u newlib_include_syscalls_impl -u newlib_include_pthread_impl -u __cxa_guard_dummy -Wl,--Map=C:/projects/mspcc63198/src/ext/mspAutoClockESP/.pio/build/esp32dev/mspAutoClockESP.map -Wl,--cref -Wl,--gc-sections -Wl,--undefined=uxTopUsedPriority -Wno-frame-address -fno-lto -fno-rtti -mlongcalls 
.pio\build\esp32dev\jquery-3.2.1.min.js.o .pio\build\esp32dev\mspAutoClockUI.css.o .pio\build\esp32dev\mspAutoClockUI.html.o .pio\build\esp32dev\mspAutoClockUI.js.o .pio\build\esp32dev\autoclock_favicon.ico.o .pio\build\esp32dev\ind_wifi-on_large.png.o .pio\build\esp32dev\logo_ac_large.png.o .pio\build\esp32dev\label_ac_large.png.o .pio\build\esp32dev\logo_msp_large.png.o .pio\build\esp32dev\logo_msp_regular.png.o .pio\build\esp32dev\ind_processing1_large.png.o .pio\build\esp32dev\ind_play_large.png.o 
.pio\build\esp32dev\ind_ok_regular.png.o .pio\build\esp32dev\ind_ok_large.png.o .pio\build\esp32dev\ind_offset-zero_large.png.o .pio\build\esp32dev\ind_offset-pos_large.png.o .pio\build\esp32dev\ind_offset-neg_large.png.o .pio\build\esp32dev\ind_nok_regular.png.o .pio\build\esp32dev\ind_nok_large.png.o .pio\build\esp32dev\ind_expand_regular.png.o .pio\build\esp32dev\ind_add_regular.png.o .pio\build\esp32dev\btn_z_regular.png.o .pio\build\esp32dev\btn_shutdown_regular.png.o .pio\build\esp32dev\btn_shutdown_large.png.o .pio\build\esp32dev\btn_settings_large.png.o .pio\build\esp32dev\btn_prev-res_regular.png.o .pio\build\esp32dev\btn_home-pos_regular.png.o .pio\build\esp32dev\btn_home_large.png.o .pio\build\esp32dev\btn_debug_regular.png.o .pio\build\esp32dev\btn_contact_regular.png.o .pio\build\esp32dev\btn_config_regular.png.o .pio\build\esp32dev\btn_axis_regular.png.o .pio\build\esp32dev\AutoClock192x192.png.o .pio\build\esp32dev\AutoClock180x180.png.o .pio\build\esp32dev\AutoClock32x32.png.o .pio\build\esp32dev\AutoClock16x16.png.o .pio\build\esp32dev\ind_power-off_large.png.o .pio\build\esp32dev\ind_power-on_large.png.o .pio\build\esp32dev\ind_power-low_large.png.o .pio\build\esp32dev\ind_power-high_large.png.o .pio\build\esp32dev\invert_pos_neg_blue.png.o .pio\build\esp32dev\ins.png.o .pio\build\esp32dev\mm.png.o .pio\build\esp32dev\ac_calibration_icon.png.o .pio\build\esp32dev\log_icon.png.o .pio\build\esp32dev\share_icon.png.o .pio\build\esp32dev\esp-idf\src\FreeRTOS.cpp.o .pio\build\esp32dev\esp-idf\src\GeneralUtils.cpp.o .pio\build\esp32dev\esp-idf\src\espHTTPServer.cpp.o .pio\build\esp32dev\esp-idf\src\main.cpp.o .pio\build\esp32dev\esp-idf\src\mspACBatteryMonitor.cpp.o .pio\build\esp32dev\esp-idf\src\mspACCalibrate.cpp.o .pio\build\esp32dev\esp-idf\src\mspACCalibration.cpp.o .pio\build\esp32dev\esp-idf\src\mspACConfig.cpp.o .pio\build\esp32dev\esp-idf\src\mspACErrorLogs.cpp.o .pio\build\esp32dev\esp-idf\src\mspACLinace.cpp.o .pio\build\esp32dev\esp-idf\src\mspACListener.cpp.o .pio\build\esp32dev\esp-idf\src\mspACMemory.cpp.o .pio\build\esp32dev\esp-idf\src\mspACMonitor.cpp.o .pio\build\esp32dev\esp-idf\src\mspACProcessACListener.cpp.o .pio\build\esp32dev\esp-idf\src\mspACProcessLED.cpp.o .pio\build\esp32dev\esp-idf\src\mspACProcessLinace.cpp.o .pio\build\esp32dev\esp-idf\src\mspACProcessMonitor.cpp.o .pio\build\esp32dev\esp-idf\src\mspACProcessShutdown.cpp.o .pio\build\esp32dev\esp-idf\src\mspACProcesses.cpp.o .pio\build\esp32dev\esp-idf\src\mspACResults.cpp.o .pio\build\esp32dev\esp-idf\src\mspACShutdown.cpp.o .pio\build\esp32dev\esp-idf\src\mspACTransducer.cpp.o .pio\build\esp32dev\esp-idf\src\mspACTransducerSim.cpp.o .pio\build\esp32dev\esp-idf\src\mspACUserLogs.cpp.o .pio\build\esp32dev\esp-idf\src\mspACWifi.cpp.o .pio\build\esp32dev\esp-idf\src\mspNVS.cpp.o .pio\build\esp32dev\esp-idf\src\mspRGBLED.cpp.o .pio\build\esp32dev\esp-idf\src\mspTCPClient.cpp.o .pio\build\esp32dev\esp-idf\src\mspTCPServer.cpp.o .pio\build\esp32dev\esp-idf\src\mspURLParser.cpp.o .pio\build\esp32dev\esp-idf\src\mspUtils.cpp.o -L.pio\build\esp32dev -LC:\users\jtd.mspdomain\.platformio\packages\framework-espidf\components\esp_wifi\lib\esp32 -LC:\users\jtd.mspdomain\.platformio\packages\framework-espidf\components\xtensa\esp32 -L.pio\build\esp32dev\esp-idf\esp32 -L.pio\build\esp32dev\esp-idf\esp32\ld -LC:\users\jtd.mspdomain\.platformio\packages\framework-espidf\components\esp32\ld -LC:\users\jtd.mspdomain\.platformio\packages\framework-espidf\components\esp_rom\esp32\ld -LC:\users\jtd.mspdomain\.platformio\packages\framework-espidf\components\esp_wifi\lib\esp32 -Wl,--start-group .pio\build\esp32dev\esp-idf\xtensa\libxtensa.a .pio\build\esp32dev\esp-idf\asio\libasio.a .pio\build\esp32dev\esp-idf\cbor\libcbor.a .pio\build\esp32dev\esp-idf\coap\libcoap.a .pio\build\esp32dev\esp-idf\esp_adc_cal\libesp_adc_cal.a .pio\build\esp32dev\esp-idf\console\libconsole.a .pio\build\esp32dev\esp-idf\esp_gdbstub\libesp_gdbstub.a .pio\build\esp32dev\esp-idf\esp_https_ota\libesp_https_ota.a .pio\build\esp32dev\esp-idf\esp_local_ctrl\libesp_local_ctrl.a .pio\build\esp32dev\esp-idf\mdns\libmdns.a .pio\build\esp32dev\esp-idf\protobuf-c\libprotobuf-c.a .pio\build\esp32dev\esp-idf\protocomm\libprotocomm.a .pio\build\esp32dev\esp-idf\sdmmc\libsdmmc.a .pio\build\esp32dev\esp-idf\esp_serial_slave_link\libesp_serial_slave_link.a .pio\build\esp32dev\esp-idf\esp_websocket_client\libesp_websocket_client.a .pio\build\esp32dev\esp-idf\spiffs\libspiffs.a .pio\build\esp32dev\esp-idf\openssl\libopenssl.a .pio\build\esp32dev\esp-idf\unity\libunity.a .pio\build\esp32dev\esp-idf\wifi_provisioning\libwifi_provisioning.a .pio\build\esp32dev\esp-idf\fatfs\libfatfs.a .pio\build\esp32dev\esp-idf\freemodbus\libfreemodbus.a .pio\build\esp32dev\esp-idf\jsmn\libjsmn.a .pio\build\esp32dev\esp-idf\wear_levelling\libwear_levelling.a .pio\build\esp32dev\esp-idf\expat\libexpat.a .pio\build\esp32dev\esp-idf\json\libjson.a .pio\build\esp32dev\esp-idf\mqtt\libmqtt.a .pio\build\esp32dev\esp-idf\libsodium\liblibsodium.a .pio\build\esp32dev\esp-idf\app_trace\libapp_trace.a .pio\build\esp32dev\esp-idf\app_update\libapp_update.a .pio\build\esp32dev\esp-idf\bootloader_support\libbootloader_support.a .pio\build\esp32dev\esp-idf\cxx\libcxx.a .pio\build\esp32dev\esp-idf\driver\libdriver.a .pio\build\esp32dev\esp-idf\efuse\libefuse.a .pio\build\esp32dev\esp-idf\esp-tls\libesp-tls.a .pio\build\esp32dev\esp-idf\esp32\libesp32.a .pio\build\esp32dev\esp-idf\esp_common\libesp_common.a .pio\build\esp32dev\esp-idf\esp_eth\libesp_eth.a .pio\build\esp32dev\esp-idf\esp_event\libesp_event.a .pio\build\esp32dev\esp-idf\esp_http_client\libesp_http_client.a .pio\build\esp32dev\esp-idf\esp_http_server\libesp_http_server.a .pio\build\esp32dev\esp-idf\esp_netif\libesp_netif.a .pio\build\esp32dev\esp-idf\esp_ringbuf\libesp_ringbuf.a .pio\build\esp32dev\esp-idf\esp_wifi\libesp_wifi.a .pio\build\esp32dev\esp-idf\espcoredump\libespcoredump.a .pio\build\esp32dev\esp-idf\freertos\libfreertos.a .pio\build\esp32dev\esp-idf\heap\libheap.a .pio\build\esp32dev\esp-idf\log\liblog.a .pio\build\esp32dev\esp-idf\lwip\liblwip.a .pio\build\esp32dev\esp-idf\newlib\libnewlib.a .pio\build\esp32dev\esp-idf\nghttp\libnghttp.a .pio\build\esp32dev\esp-idf\nvs_flash\libnvs_flash.a .pio\build\esp32dev\esp-idf\perfmon\libperfmon.a .pio\build\esp32dev\esp-idf\pthread\libpthread.a .pio\build\esp32dev\esp-idf\soc\libsoc.a .pio\build\esp32dev\esp-idf\spi_flash\libspi_flash.a .pio\build\esp32dev\esp-idf\tcp_transport\libtcp_transport.a .pio\build\esp32dev\esp-idf\tcpip_adapter\libtcpip_adapter.a .pio\build\esp32dev\esp-idf\ulp\libulp.a .pio\build\esp32dev\esp-idf\vfs\libvfs.a .pio\build\esp32dev\esp-idf\wpa_supplicant\libwpa_supplicant.a .pio\build\esp32dev\esp-idf\mbedtls\mbedtls\library\libmbedcrypto.a .pio\build\esp32dev\esp-idf\mbedtls\mbedtls\library\libmbedtls.a .pio\build\esp32dev\esp-idf\mbedtls\mbedtls\library\libmbedx509.a -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lrtc -lsmartconfig -lphy -lhal -lm -lgcc -lstdc++ -lgcov -lc -Wl,--end-group
The command line is too long.
*** [.pio\build\esp32dev\firmware.elf] Error 1

I think this could be linked to Linker "The command line is too long" (ESP32)

but i cant see any fix in the post

Have you tried a workaround per Build error (Windows): The command line is too long. · Issue #41 · sharandac/My-TTGO-Watch · GitHub?

Also you can reduce the linker command length significantly if you use the filesystem (SPIFFS or LitteFS) for all the website files. Right now, from each one of them, a .o object is created that contains the content in binary form, and the length of these filenames add up. That would implicate a refactor of the firmware though.

Also, you can try to compile the project in a Linux virtual machine. Linux doesn’t have some legacy command length restrictions as Windows does.

I had a feeling it could be my long list of embed_txtfiles.

I had large text files over 4k in length. so i just embedded them. and used the same code for image files.
I will look at moving the files from emded to spiffs. just need to find some code which sends them in chunks correctly over http

wonder if i could wildcard the embed_txtfiles = website/res/*.png or even just give it a folder

Hm actually I gave another though about this. The commandline here is 8417 characters long. That violates Windows’s restriction for the maximum length of a command entered into cmd.exe of 8191 characters (see post).

However, the maximum length of a CreateProcess() call is 32KB, and you’re factor 4 away from that. GCC has an option to execute commands via longcmd commands, but somehow that is not being done there. Not sure if that’s not possible for linker commands or if it’s not being done here correctly, maybe @valeros can have a look at that special case if embdedd textfiles are involved.

that would be great. ive had to postpone my firmware update for now. and back using

-DCOMPONENT_EMBED_TXTFILES=website/jquery-3.2.1.min.js:website/mspAutoClockUI.css:website/mspAutoClockUI.html:website/mspAutoClockUI.js:website/res/autoclock_favicon.ico:website/res/ind_wifi-off_large.png:website/res/ind_wifi-on_large.png:website/res/logo_ac_large.png:website/res/label_ac_large.png:website/res/logo_msp_large.png:website/res/logo_msp_regular.png:website/res/ind_processing1_large.png:website/res/ind_play_large.png:website/res/ind_ok_regular.png:website/res/ind_ok_large.png:website/res/ind_offset-zero_large.png:website/res/ind_offset-pos_large.png:website/res/ind_offset-neg_large.png:website/res/ind_nok_regular.png:website/res/ind_nok_large.png:website/res/ind_expand_regular.png:website/res/ind_add_regular.png:website/res/btn_z_regular.png:website/res/btn_shutdown_regular.png:website/res/btn_shutdown_large.png:website/res/btn_settings_large.png:website/res/btn_prev-res_regular.png:website/res/btn_home-pos_regular.png:website/res/btn_home_large.png:website/res/btn_debug_regular.png:website/res/btn_contact_regular.png:website/res/btn_config_regular.png:website/res/btn_axis_regular.png:website/res/AutoClock192x192.png:website/res/AutoClock180x180.png:website/res/AutoClock32x32.png:website/res/AutoClock16x16.png:website/res/ind_power-off_large.png:website/res/ind_power-on_large.png:website/res/ind_power-low_large.png:website/res/ind_power-high_large.png:website/res/minus_icon.png:website/res/plus_icon.png:website/res/ins.png:website/res/mm.png:website/res/ac_calibration_icon.png:website/res/log_icon.png:website/res/share_icon.png

Thank you, now this is became much so clear for me!