← index #17953Issue #17666
Related · high · value 2.680
QUERY · ISSUE

ESP32-C6: build error

openby smurfixopened 2025-08-18updated 2025-10-11
bug

Port, board and/or hardware

ESP32-C6

MicroPython version

v1.26.0-51-g020eeba41
esp-idf: 5.4.2 or 5.5

Reproduction

$ cd ports/esp32
$ make BOARD=ESP32_GENERIC_C6

Expected behaviour

no build error

Observed behaviour

[281/290] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/__/__/frozen_content.c.obj
FAILED: esp-idf/main/CMakeFiles/__idf_main.dir/__/__/frozen_content.c.obj
/home/smurf/.espressif/tools/riscv32-esp-elf/esp-14.2.0_20241119/riscv32-esp-elf/bin/riscv32-esp-elf-gcc … -c /src/moat/ext/micropython/ports/esp32/build-ESP32_GENERIC_C6/frozen_content.c
/src/moat/ext/micropython/ports/esp32/build-ESP32_GENERIC_C6/frozen_content.c:375:5: error: redeclaration of enumerator 'MP_QSTR_put'
  375 |     MP_QSTR_put,
      |     ^~~~~~~~~~~
In file included from /src/moat/ext/micropython/py/obj.h:33,
                 from /src/moat/ext/micropython/py/objint.h:30,
                 from /src/moat/ext/micropython/ports/esp32/build-ESP32_GENERIC_C6/frozen_content.c:16:
/src/moat/ext/micropython/ports/esp32/build-ESP32_GENERIC_C6/genhdr/qstrdefs.generated.h:955:7: note: previous definition of 'MP_QSTR_put' with type 'enum <anonymous>'
  955 | QDEF1(MP_QSTR_put, 28788, 3, "put")
      |       ^~~~~~~~~~~
/src/moat/ext/micropython/py/qstr.h:52:35: note: in definition of macro 'QDEF1'
   52 | #define QDEF1(id, hash, len, str) id,
      |                                   ^~
[283/290] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/__/modespnow.c.obj
ninja: build stopped: subcommand failed.

Additional Information

This build should probably be included in the CI script. Apparently right now it is not.

I ran some test builds:

Fails on 1.25.0 (esp-idf v5.4.2) due to

/var/cache/smurf/dot-espressif/tools/riscv32-esp-elf/esp-14.2.0_20241119/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/14.2.0/../../../../riscv32-esp-elf/bin/ld: esp-idf/main/libmain.a(panichandler.c.obj): in function `__wrap_esp_panic_handler':
/src/moat/ext/micropython/ports/esp32/panichandler.c:49:(.text.__wrap_esp_panic_handler+0xc): undefined reference to `esp_panic_handler_reconfigure_wdts'

Works on 1.25.0 (esp-idf v5.3.3).

Fails on 1.26.0 and master 020eeba41 (esp-idf 5.3.3) due to

/src/moat/ext/micropython/ports/esp32/machine_timer.c: In function 'machine_timer_enable':
/src/moat/ext/micropython/ports/esp32/machine_timer.c:183:5: error: implicit declaration of function 'esp_clk_tree_enable_src' [-Werror=implicit-function-declaration]
  183 |     esp_clk_tree_enable_src(TIMER_CLK_SRC, true);
      |     ^~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors

but builds when I remove that line.

Fails on 1.26.0 (esp-idf 5.4.2) due to

-- Configuring done (11.4s)
CMake Error at /src/esp-idf/tools/cmake/ldgen.cmake:159 (file):
  Error evaluating generator expression:

    $<TARGET_FILE:micropy_extmod_btree>

  Target "micropy_extmod_btree" is not an executable or library.
Call Stack (most recent call first):
  /src/esp-idf/tools/cmake/build.cmake:734 (__ldgen_create_target)
  /src/esp-idf/tools/cmake/project.cmake:972 (idf_build_executable)
  CMakeLists.txt:65 (project)

then with the same error as master when I disable the btree module.

Code of Conduct

Yes, I agree

CANDIDATE · ISSUE

Argument list too long compile error [ESP32}

closedby kdschlosseropened 2025-07-12updated 2025-12-01
bug

Port, board and/or hardware

ESP32-S3

MicroPython version

1.25.0

Reproduction

compile Micropython for the ESP32-S3 generic and once it is done compiling navigate to ports/esp32/build_ESP32_GENERIC_S3/esp-idf/main/CMakeFiles and edit the qstr.i.last-*.sh script in that folder. CMake builds this file and calls it as part of the build system. What is in this file is the shell command to run makeqstrdefs.py. If you look you will see repeated parameters, ones that start with -I

When compiling MicroPython it will compile fine but if you add a few user_c_modules is when the error happens. The error is because of the added includes from the user c modules.

Expected behaviour

to compile without any errors

Observed behaviour

make[3]: /bin/sh: Argument list too long
make[3]: *** [esp-idf/main/CMakeFiles/BUILD_FROZEN_CONTENT.dir/build.make:799: genhdr/qstr.i.last] Error 127

Additional Information

The fix should be pretty simple. adding list(REMOVE_DUPLICATES MICROPY_CPP_FLAGS) to the py/mkrules.cmake file right above where it says # Generate qstrs in the file.

That will remove all of the duplicate entries.

I do also suggest possibly adding some code that will turn all of the include paths into relative paths instead of absolute ones. It will trim down the length of the arguments as well.

Code of Conduct

Yes, I agree

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied