Commit Graph

37 Commits

Author SHA1 Message Date
Marek Fiala
8c08c75f48 feat(tools): adopt esp-pylib for idf.py logging and errors
Migrate idf.py and its actions to the shared esp-pylib library:
- add esp-pylib (and esp-pylib[ide]) to the core/ide requirements
- base FatalError on esp_pylib.errors.FatalError, keeping the idf.py ctx cleanup
- replace the local raw-ANSI helpers (red_print/yellow_print/print_warning/
  color_print) with esp_pylib.logger.log (warn/err/note/hint) across the
  idf.py actions
- install esp_pylib exception reporting at the idf.py entry point and silence
  the logger during shell completion
- update affected tests for the new prefixes/line wrapping
- add normalize_output() helper and unify terminal env in conftest to handle
  Rich line-wrapping in CI assertions

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 20:19:07 +08:00
Marek Fiala
eb91e45092 feat(tools): Replaced click with rich_click 2026-06-01 20:07:27 +08:00
Roland Dobai
9bea09a081 fix(tools): seed IDF_VERSION before idf.py parses dependencies.lock
Any idf.py invocation could hang indefinitely with no output while
spawning an unbounded chain of "idf.py --version" subprocesses,
eventually exhausting system memory.

During init_cli(), idf.py parses the project's dependencies.lock to
vet trusted component-provided idf_ext.py extensions. If the lock
contains a component whose manifest has an "if: idf_version" clause,
evaluating it calls idf-component-manager's _get_idf_version(). Outside
a CMake build the IDF_VERSION environment variable is not set, so that
function falls back to running "idf.py --version" as a subprocess,
which re-enters init_cli() and recurses without bound.

During a normal CMake build the component manager runs as a subprocess
that already has IDF_VERSION in its environment (see build/config.env),
so the fallback is never reached. The recursion happens only because
idf.py runs component-manager code in-process during its own CLI
startup, outside that context.

Seed IDF_VERSION into os.environ early in init_cli(), before any
dependencies.lock parsing, using the subprocess-free
idf_version_from_cmake() helper. This gives in-process component-manager
code the same IDF_VERSION a CMake build would provide.
2026-05-15 14:06:40 +08:00
Fu Hanxi
a38c7e9242 ci: windows with VM 2026-04-27 12:41:53 +02:00
Fu Hanxi
a3281516c4 test: stop patching env vars by tearDownClass 2026-03-17 21:02:49 +08:00
Jakub Kocka
d860da47c0 ci(tools): Avoiding full rebuilds where not needed to improve performance 2026-03-16 08:53:41 +01:00
Jakub Kocka
229e07bdf6 fix: Improved encoding requirement check
Closes https://github.com/espressif/esp-idf/issues/17542
2025-12-09 21:09:37 +08:00
Peter Dragun
3f0fde84e1 fix(tools/idf.py): Add implicit dependencies to flash targets 2025-12-02 08:45:59 +01:00
Marek Fiala
3c9ad9c091 Revert "fix: Updated locale handling to prevent issues with build tools"
This reverts commit 7e09b471ab.
2025-10-28 04:02:21 +01:00
Jakub Kocka
7e09b471ab fix: Updated locale handling to prevent issues with build tools
Closes https://github.com/espressif/esp-idf/issues/17542
2025-10-17 09:58:44 +02:00
Peter Dragun
9eb07f92ba docs: Update unify and update espefuse command outputs 2025-09-30 15:28:55 +02:00
Peter Dragun
e3198fff3c feat: Update esptool to v5 2025-09-30 15:28:55 +02:00
Jakub Kocka
2affbb9509 refactor(tools): Updated tests to corespond with massage changes 2025-08-26 13:50:45 +02:00
Peter Dragun
eba6b814ba feat: Add support for esptool v5 and keep v4 for now 2025-08-21 15:53:39 +02:00
Ashish Sharma
4c23ba3c1f feat(security): update idf.py extensions to support security feature application 2025-03-17 18:23:14 +08:00
Alexey Lapshin
48a49c8154 feat(debugging): move gdbinit generation to CMake
This feature is useful for 3rd-party software to run GDB with predefined
options that described in project_description.json file

allow to pass custom options to "idf.py gdb":

  --gdb-commands: command line arguments for gdb. (without changes)
  -ex: pass command to gdb.
  -x: pass gdbinit file to gdb. Alias for old --gdbinit command
2024-11-19 16:41:38 +07:00
Jan Beran
d77d1f5a95 fix(uf2): Ignore ESPBAUD, ESPPORT when calling idf.py uf2[-app] 2024-09-23 15:48:59 +02:00
harshal.patil
e5f22521da docs(secure_boot_v2): Mention idf.py and openssl commands to generate and verify signatures
- Adds support for verify_signature command in idf.py

Closes https://github.com/espressif/esptool/issues/942
2024-08-27 15:44:05 +05:30
Radim Karniš
4ccdc51b07 ci(espefuse_test): Comply with esptool v4.8 2024-08-22 16:12:16 +02:00
Jan Beran
832c3f265a fix: Generate secure keys in project dir instead of build dir 2024-06-28 12:36:49 +02:00
Jan Beran
b286105d5f feat: Add unit tests for new wrapper commands 2024-06-24 10:56:10 +02:00
Marek Fiala
a97e355e74 feat(tools): Run Tools related host tests on Win 2024-02-02 14:58:04 +01:00
Marek Fiala
076779f419 feat(tools): idf.py adding arguments from file via @filename.txt
- moved test inputs to one directory
- removed `-` from test arguments

Closes https://github.com/espressif/esp-idf/pull/11821
Closes https://github.com/espressif/esp-idf/issues/11783
2023-07-25 10:29:09 +02:00
Nebojsa Cvetkovic
4c1f574c3d feat(idf.py): Allow adding arguments from file via @filename.txt 2023-07-21 06:42:23 +01:00
Alexey Lapshin
29655fe22a tools: fixed elf symbols load if gdbinit specified
ROM and bootloader symbols add to use in GDB (via 'idf.py gdb')
2022-09-21 22:39:03 +04:00
Marek Fiala
9c0969b512 Tools: Export selected target actions
Added option --json to action help, for export selected target actions
2022-07-19 20:02:55 +02:00
Sergei Silnov
360183dd8d Tools: Make idf.py tests independent on extra extensions 2022-05-27 10:45:27 +02:00
simon.chupin
1c5e596633 idf.py: Change copyright in tools dir 2022-05-24 14:01:50 +02:00
Fu Hanxi
0146f258d7 style: format python files with isort and double-quote-string-fixer 2021-01-26 10:49:01 +08:00
martin.gano
304cff9f75 Redirect warning to stderr and unset temporary shell procedure 2020-11-11 15:12:58 +01:00
Renz Christian Bagaporo
a5d49d4db5 tools: fix double builds with idf.py 2020-03-02 07:18:22 +05:00
Sergei Silnov
506c46fddc idf.py: add exit_with_error for deprecation 2019-12-02 10:41:23 +01:00
Sergei Silnov
262ed0e72b idf.py: Fix regression ignorance of --verbose flag 2019-11-25 11:47:55 +01:00
Sergei Silnov
2dbad4fe7b idf.py: add support for subcommands hidden from help 2019-11-08 17:54:10 +01:00
Sergei Silnov
5e6aae3e04 Fix typo and naming format for extensions 2019-10-30 10:34:17 +01:00
Sergei Silnov
1c798393e2 Add idf.py extensions and move core actions to separate files 2019-10-30 10:34:17 +01:00
Sergei Silnov
1faa69a01b idf.py: Fix execution order for dependent tasks
Closes https://github.com/espressif/esp-idf/issues/3948

Add tests for idf.py
Move param check from cmake to idf_py test
Refactor task processing for idf.py
Add code comments
Fix an issue when options for dependent tasks are ignored
Add check for dupes in command list
2019-09-16 22:48:57 +08:00