pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
py-esptool: Update to 5.0.1
Module Name: pkgsrc-wip
Committed By: Frédéric Fauberteau <frederic%fauberteau.org@localhost>
Pushed By: frederic
Date: Mon Jul 21 09:53:35 2025 +0200
Changeset: e9c467a7b795904a84f25299080bde0a0720e73e
Added Files:
py-esptool/COMMIT_MSG
py-esptool/DESCR
py-esptool/Makefile
py-esptool/PLIST
py-esptool/distinfo
py-esptool/patches/patch-esptool_cli__util.py
Log Message:
py-esptool: Update to 5.0.1
Packaged in wip by Frédéric Fauberteau
pkgsrc changes:
---------------
* Add patch to break the upstream dependency requirement for click<8.2.0
since devel/py-click is at 8.2.1
(https://github.com/espressif/esptool/pull/1104).
upstream changes:
-----------------
v5.0.1 (2025-07-15)
Bug Fixes
* elf2image: validate ELF section types and addresses before processing
(Jaroslav Burian - 97a1546)
* elf2image: handle PREINIT_ARRAY section type in ESP32-P4 elf file properly
(Jaroslav Burian - ec84a75)
* elf2image: Fix incorrect logger call (Marek Matej - 637f0e6)
v5.0.0 (2025-07-02)
Breaking changes
* The .py suffix is deprecated for the following scripts:
o esptool
o espefuse
o espsecure
o esp_rfc2217_server (Peter Dragun - 635cde1)
* execute-scripts command is removed (Peter Dragun - ff72b26)
New Features
* espefuse: Use the esptool logger, more concise messages (Radim Karniš - 983338f)
* espefuse: Replace execute-scripts with public API (Peter Dragun - ff72b26)
* espefuse: Add public API for espefuse (Peter Dragun - d7da0f8)
* espefuse: Rename all commands to use dashes and add tests for deprecated commands (Peter Dragun - ade3088)
* espefuse: Add support for chaining commands with click parser (Peter Dragun - 0a2ea69)
* espefuse: Refactor CLI and use click for parsing arguments (Peter Dragun - aa80001)
* espefuse: Adds efuse calculation fields for ESP32-C5 (Konstantin Kondrashov - 9104038)
* espefuse: Adds 3-bit field for wafer major version in ESP32-P4 (Konstantin Kondrashov - c102510)
* verbosity: Allow setting silent or verbose output levels (Radim Karniš - 90e3770)
* efuse: Adds efuses for ESP32-C61 ECO3 (Konstantin Kondrashov - 6146410)
* espefuse: Support efuse for ESP32-C5 ECO2 (v1.0) (Konstantin Kondrashov - 3726726)
* espsecure: Use esptool logger, unify output format of messages (Radim Karniš - 905249c)
* stub_flasher: Support for >16MB flash on P4 and >16MB encrypted writes on S3 (Radim Karniš - 4e6803e)
* espsecure: Drop ecdsa module, use cryptography instead (Radim Karniš - e132f6f)
* espsecure: Unify all commands and options to use dash instead of underscore (Peter Dragun - 36325fd)
* espsecure: Use rich click for CLI parsing (Peter Dragun - 9c7ddc1)
* targets: Update chip features lists with more info (Radim Karniš - 3c776aa)
* logging: Add collapsible output stages and ASCII progress bars (Radim Karniš - f3cf107)
* trace: Update --trace with more info and more readable formatting (Radim Karniš - 0beee77)
* cli: Commands and options use dashes instead of underscores for uniformity (Peter Dragun - 3cecd6d)
* cmds: Expand input of all functions to file paths, bytes, or file-like objects (Radim Karniš - 46a9e31)
* cmds: Allow all functions to both return bytes and write to files (Radim Karniš - 03b84a1)
* cmds: Polish the public API, unify arg names, pack some args (Radim Karniš - 37a13a9)
* cmds: Encapsulate logic for running the stub flasher in run_stub (Radim Karniš - 063d9d5)
* cli: Add click-based CLI interface (Peter Dragun - d40fefa)
* cmds: Allow commands to output bytes, as well as write to a file (Radim Karniš - 0153b79)
* cmds: Rework the public API to work as a Python module (Radim Karniš - ba36933)
* flash_attach: Encapsulate logic for flash attaching and configuration (Radim Karniš - 6e959ef)
* esp32h4: update the ESP32H4StubLoader (Chen Jichang - f7c78f8)
* espefuse: Updates esp32h4 efuse table and fixes tests (Konstantin Kondrashov - 3da8c57)
* esp32h4: add ESP32H4 esptool support (Chen Jichang - bcf5c6e)
* esp32h21: Add Microsoft UF2 family ID (Radim Karniš - cb0d334)
* errors: Print errors to STDERR, catch KeyboardInterrupt (Radim Karniš - 0864e17)
* write_flash: Remove the superfluous --verify option (Radim Karniš - dbf3d1c)
* logger: Add a custom logger, allow output redirection (Radim Karniš - 1ce02db)
* image_info: Deprecate the --version 1 output format (Radim Karniš - 3f625c3)
* Remove .py suffix from scripts (Peter Dragun - 635cde1)
* detect flash size of Adesto flash chips (Jaroslav Burian - 0b56f85)
* Add support for k, M suffix for flash size (Peter Dragun - 6f0d779)
* Rename reset modes to use dash instead of underscore (Peter Dragun - 851919f)
Bug Fixes
* logger: Turn on smart features in more cases (Jason2866 - 5d5eafb)
* elf2image: Multiple fixes from 3rd party frameworks (Sylvio Alves - cbd4e9b)
* stub_flasher: Fix USB-Serial/JTAG mode on C5 ECO2 and C61 ECO3 (Radim Karniš - 1decf86)
* write_flash: Detect more cases of unresponsive flash, fix failing flash_size check (Radim Karniš - e6bfc3b)
* stub_flasher: Fix ESP32-C5 ECO2 flashing (Radim Karniš - 3a4c15c)
* espefuse: Fix output messages for set_flash_voltage (Peter Dragun - daaedf8)
* espefuse: JTAG_SEL_ENABLE has GPIO34 strapping pin for ESP32P4 (Jan Beran - 78535e4)
* esp32c5: fix bootloader address (Jaroslav Burian - ec12073)
* autodetection: Remove the Unsupported detection protocol stage (Radim Karniš - 05553a4)
* logging: Unify output messages, notes, and warning formatting (Radim Karniš - 07879eb)
* elf2image: fix elf2image for ram app when sha256 offset not specified (Jaroslav Burian - 6f8ff39)
* esp32h4: fix h4 chip feature (Chen Jichang - 955943a)
* image_info: Sanitize app and bootloader info of null bytes (Radim Karniš - 8016455)
* lint: Correct type annotations issues reported by mypy (Radim Karniš - 0bca550)
* esptool: Fix efuse base address for esp32h21 (Konstantin Kondrashov - c3d28ee)
* elf2image: support --flash-mmu-page-config for all chips (Jaroslav Burian - 8be617c)
* elf2image: Try to correct MMU page size if not specified (Jaroslav Burian - f4fabc5)
* elf2image: Print correct MMU page size in error message (Jaroslav Burian - 9da4948)
* logging: Avoid crashes when flushing if sys.stdout is not available (Radim Karniš - 5176b67)
* enable auto-detection of ESP32-S2 in secure download mode (Jaroslav Burian - c2f5d21)
* enable ESP32-P4 ECO5 chip detection (Jaroslav Burian - 0b3460f)
* Do not use padding for merged IntelHex files (Peter Dragun - 08c170b)
* lock upper version of click to <8.2.0 (Peter Dragun - 5241cba)
* Add timeout to read_flash to avoid infinite loops (Peter Dragun - f26a7bb)
* Close the data file after reading the data (Stevan Stevic - 807d02b)
Documentation
* elf2image: Link an article with Simple Boot explanation (Radim Karniš - 202dfad)
* logger: Fix custom logger example code (Radim Karniš - 26e86e9)
* logger: Fix custom logger example code (Radim Karniš - eaaa6b3)
* Clarify versions in documentation (Peter Dragun - 4586e4b)
* Remove .py suffix from tool names (Peter Dragun - e9f03ae)
* Remove espefuse and espsecure migration guide for esp8266 (Peter Dragun - b6e08a3)
* Update migration guide for espefuse with click parser (Peter Dragun - faf3e22)
* Add missing esp32-p4 target to supported targets (Peter Dragun - 8b5a5d9)
* fix targets dropdown in production (Peter Dragun - 2643101)
* Update autocomplete docs for click-based CLI (Peter Dragun - 89cfa52)
* fix minor issues and improve vague statements (Peter Dragun - 6d04155)
Code Refactoring
* cli_mode: Improve CLI mode workflow code (Radim Karniš - 0671d35)
* stub_class: Make into a mixin to avoid code repetition (Radim Karniš - 83613c8)
Removals
* make_image: Remove the make_image command in favor of other workflows (Radim Karniš - 955a7c8)
* beta_targets: Removed support for beta chip targets (Radim Karniš - 8f1c206)
* Deprecate Python versions 3.7, 3.8 and 3.9 (Peter Dragun - 19f1bee)
v4.9.0 (2025-06-19)
New Features
* espefuse: Add eFuses for ESP32-C61 ECO3 (Radim Karniš - 98688ab)
* espefuse: Support efuse for ESP32-C5 ECO2 (v1.0) (Konstantin Kondrashov - ce16054)
* stub_flasher: Support for >16MB flash on P4 and >16MB encrypted writes on S3 (Radim Karniš - 0110514)
* espefuse: Updates esp32h4 efuse table and fixes tests (Konstantin Kondrashov - 777c505)
* esp32h4: add ESP32H4 esptool support (Chen Jichang - edb99bd)
* esp32h21: Add Microsoft UF2 family ID (Radim Karniš - 74d27ae)
* watchdog_reset: Add a new watchdog_reset option working even in USB modes (Radim Karniš - d37c38a)
* espsecure: Improves an error message for encrypt_flash_data and decrypt_flash_data (Konstantin Kondrashov - ef407ed)
* espefuse: Clean up efuse code for ESP32H2 (Konstantin Kondrashov - 4e922fe)
* espefuse: Support different efuse table versions for ESP32H2 (Konstantin Kondrashov - d51ecbe)
* espefuse: Adds efuses for esp32h2 eco5 (Konstantin Kondrashov - 9b74df6)
* esp32h21: add ESP32H21 esptool support (gaoxu - 92ceff2)
* esp32-p4: add support for flasher stub in USB OTG mode (Peter Dragun - 804f2db)
* esp32-c5: Add ECO1 magic number (Radim Karniš - 6cc002c)
* esp_rfc2217: Improved the logger message format (Jakub Kocka - 39a12a4)
* espefuse: Adds 3 bit for PSRAM_CAP efuse field (Konstantin Kondrashov - ab2e0bf)
* espefuse: Adds API for getting block and wafer versions (Konstantin Kondrashov - 111c6c0)
* espefuse: Adds ADC calibration data for ESP32-C61 (Konstantin Kondrashov - 36d9735)
* espefuse: Adds ADC calibration data for ESP32-C5 (Konstantin Kondrashov - a903812)
* espefuse: Adds ADC calibration data for ESP32-P4 (Konstantin Kondrashov - 215e4b8)
* erase_region: Enable erasing in ROM bootloader and SDM (Radim Karniš - e0deeac)
* hard_reset: Support custom hard reset sequence configuration (Radim Karniš - 1b15738)
* print usb mode when output chip info (Jan Beran - 749d1ad)
* Add new app description segments (Jaroslav Burian - b23e60f)
* add filtering based on serial number (Jaroslav Burian - 88319db)
* Add support for Python 3.13 (Radim Karniš - 6abd05d)
Bug Fixes
* stub_flasher: Fix USB-Serial/JTAG mode on C5 ECO2 and C61 ECO3 (Radim Karniš - 4382f14)
* write_flash: Detect more cases of unresponsive flash, fix failing flash_size check (Radim Karniš - f83d598)
* stub_flasher: Fix ESP32-C5 ECO2 flashing (Radim Karniš - bb237bc)
* espefuse: Fix output messages for set_flash_voltage (Peter Dragun - 759bcc6)
* espefuse: JTAG_SEL_ENABLE has GPIO34 strapping pin for ESP32P4 (Jan Beran - f6d1833)
* esp32c5: fix bootloader address (Jaroslav Burian - 83e0973)
* elf2image: fix elf2image for ram app when sha256 offset not specified (Radim Karniš - 9fd7b7a)
* esp32h4: Correct ESP32-H4 chip features (Radim Karniš - 5520963)
* esp32h21: Fix eFuse base address (Radim Karniš - dc05792)
* elf2image: support --flash-mmu-page-config for all chips (Jaroslav Burian - 54fdc75)
* elf2image: Try to correct MMU page size if not specified (Jaroslav Burian - d9afa9c)
* elf2image: Print correct MMU page size in error message (Jaroslav Burian - 447de60)
* test: Expect the correct module name for Python's 3.14 argparse (Karolina Surma - 98001b7)
* write_flash: Skip flash_size checks if we can't read flash size (Radim Karniš - 12095b2)
* save_segment: Adds segment len check the same as bootloader does (Konstantin Kondrashov - a6bceb7)
* chip_type_verification: Enable in SDM, do not rely on magic numbers (Radim Karniš - 598e07b)
* esp32-c6: Disable RTC WDT reset to prevent port disappearing (Radim Karniš - d47004e)
* esp_rfc2217: Fixed keyboard interrupt on Windows and added info for command (Jakub Kocka - 5569aa5)
* detect_chip: Select correct loader before further operations to avoid silent failures (Jan Beran - 8897ff8)
* usb_resets: Fix resetting in USB-OTG and USB-Serial/JTAG modes (Radim Karniš - 8298cdc)
* Do not use padding for merged IntelHex files (Peter Dragun - 739669f)
* close port when connect fails (Jaroslav Burian - d99c972)
* Hide missing app info based on IDF version (Jaroslav Burian - d2bca1e)
* add delay after WDT reset for better stability (Peter Dragun - 188c162)
* Not reading app description for some SoCs (Jaroslav Burian - 3555fe1)
* Fix missing newline in output (Jan Beran - 26b676b)
Documentation
* esptool: Fix reset sequences in documentation (Jan Beran - 92160eb)
* flash_modes: Correct QIO GPIO pins for all chips (Radim Karniš - 23f11f0)
* espefuse: Fixed JTAG strapping pin for ESP32-S3 in the help and documentation (Roland Dobai - de1d1ce)
* scripting: Add example of usage as a Python module (Radim Karniš - d54e59f)
* esp8266: change boot select pin to IO0 (ChromaLock - c06ce1e)
* read_flash_sfdp: Fix command formatting (Radim Karniš - ec309bb)
* spi_connection: Explain which flash chips are supported (Radim Karniš - 6d37e30)
* fix targets dropdown in production (Peter Dragun - 9201ccd)
* Point directly to the datasheet for given target (Jan Beran - a32988e)
* Add ESP32-C5 and ESP32-C61 docs (Radim Karniš - f52c723)
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=e9c467a7b795904a84f25299080bde0a0720e73e
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
py-esptool/COMMIT_MSG | 181 +++++++++++++
py-esptool/DESCR | 1 +
py-esptool/Makefile | 31 +++
py-esptool/PLIST | 367 ++++++++++++++++++++++++++
py-esptool/distinfo | 6 +
py-esptool/patches/patch-esptool_cli__util.py | 24 ++
6 files changed, 610 insertions(+)
diffs:
diff --git a/py-esptool/COMMIT_MSG b/py-esptool/COMMIT_MSG
new file mode 100644
index 0000000000..36f312d7fb
--- /dev/null
+++ b/py-esptool/COMMIT_MSG
@@ -0,0 +1,181 @@
+py-esptool: Update to 5.0.1
+
+Packaged in wip by Frédéric Fauberteau
+
+pkgsrc changes:
+---------------
+ * Add patch to break the upstream dependency requirement for click<8.2.0
+ since devel/py-click is at 8.2.1
+ (https://github.com/espressif/esptool/pull/1104).
+
+upstream changes:
+-----------------
+v5.0.1 (2025-07-15)
+Bug Fixes
+ * elf2image: validate ELF section types and addresses before processing
+ (Jaroslav Burian - 97a1546)
+ * elf2image: handle PREINIT_ARRAY section type in ESP32-P4 elf file properly
+ (Jaroslav Burian - ec84a75)
+ * elf2image: Fix incorrect logger call (Marek Matej - 637f0e6)
+
+v5.0.0 (2025-07-02)
+Breaking changes
+ * The .py suffix is deprecated for the following scripts:
+ o esptool
+ o espefuse
+ o espsecure
+ o esp_rfc2217_server (Peter Dragun - 635cde1)
+ * execute-scripts command is removed (Peter Dragun - ff72b26)
+New Features
+ * espefuse: Use the esptool logger, more concise messages (Radim Karniš - 983338f)
+ * espefuse: Replace execute-scripts with public API (Peter Dragun - ff72b26)
+ * espefuse: Add public API for espefuse (Peter Dragun - d7da0f8)
+ * espefuse: Rename all commands to use dashes and add tests for deprecated commands (Peter Dragun - ade3088)
+ * espefuse: Add support for chaining commands with click parser (Peter Dragun - 0a2ea69)
+ * espefuse: Refactor CLI and use click for parsing arguments (Peter Dragun - aa80001)
+ * espefuse: Adds efuse calculation fields for ESP32-C5 (Konstantin Kondrashov - 9104038)
+ * espefuse: Adds 3-bit field for wafer major version in ESP32-P4 (Konstantin Kondrashov - c102510)
+ * verbosity: Allow setting silent or verbose output levels (Radim Karniš - 90e3770)
+ * efuse: Adds efuses for ESP32-C61 ECO3 (Konstantin Kondrashov - 6146410)
+ * espefuse: Support efuse for ESP32-C5 ECO2 (v1.0) (Konstantin Kondrashov - 3726726)
+ * espsecure: Use esptool logger, unify output format of messages (Radim Karniš - 905249c)
+ * stub_flasher: Support for >16MB flash on P4 and >16MB encrypted writes on S3 (Radim Karniš - 4e6803e)
+ * espsecure: Drop ecdsa module, use cryptography instead (Radim Karniš - e132f6f)
+ * espsecure: Unify all commands and options to use dash instead of underscore (Peter Dragun - 36325fd)
+ * espsecure: Use rich click for CLI parsing (Peter Dragun - 9c7ddc1)
+ * targets: Update chip features lists with more info (Radim Karniš - 3c776aa)
+ * logging: Add collapsible output stages and ASCII progress bars (Radim Karniš - f3cf107)
+ * trace: Update --trace with more info and more readable formatting (Radim Karniš - 0beee77)
+ * cli: Commands and options use dashes instead of underscores for uniformity (Peter Dragun - 3cecd6d)
+ * cmds: Expand input of all functions to file paths, bytes, or file-like objects (Radim Karniš - 46a9e31)
+ * cmds: Allow all functions to both return bytes and write to files (Radim Karniš - 03b84a1)
+ * cmds: Polish the public API, unify arg names, pack some args (Radim Karniš - 37a13a9)
+ * cmds: Encapsulate logic for running the stub flasher in run_stub (Radim Karniš - 063d9d5)
+ * cli: Add click-based CLI interface (Peter Dragun - d40fefa)
+ * cmds: Allow commands to output bytes, as well as write to a file (Radim Karniš - 0153b79)
+ * cmds: Rework the public API to work as a Python module (Radim Karniš - ba36933)
+ * flash_attach: Encapsulate logic for flash attaching and configuration (Radim Karniš - 6e959ef)
+ * esp32h4: update the ESP32H4StubLoader (Chen Jichang - f7c78f8)
+ * espefuse: Updates esp32h4 efuse table and fixes tests (Konstantin Kondrashov - 3da8c57)
+ * esp32h4: add ESP32H4 esptool support (Chen Jichang - bcf5c6e)
+ * esp32h21: Add Microsoft UF2 family ID (Radim Karniš - cb0d334)
+ * errors: Print errors to STDERR, catch KeyboardInterrupt (Radim Karniš - 0864e17)
+ * write_flash: Remove the superfluous --verify option (Radim Karniš - dbf3d1c)
+ * logger: Add a custom logger, allow output redirection (Radim Karniš - 1ce02db)
+ * image_info: Deprecate the --version 1 output format (Radim Karniš - 3f625c3)
+ * Remove .py suffix from scripts (Peter Dragun - 635cde1)
+ * detect flash size of Adesto flash chips (Jaroslav Burian - 0b56f85)
+ * Add support for k, M suffix for flash size (Peter Dragun - 6f0d779)
+ * Rename reset modes to use dash instead of underscore (Peter Dragun - 851919f)
+Bug Fixes
+ * logger: Turn on smart features in more cases (Jason2866 - 5d5eafb)
+ * elf2image: Multiple fixes from 3rd party frameworks (Sylvio Alves - cbd4e9b)
+ * stub_flasher: Fix USB-Serial/JTAG mode on C5 ECO2 and C61 ECO3 (Radim Karniš - 1decf86)
+ * write_flash: Detect more cases of unresponsive flash, fix failing flash_size check (Radim Karniš - e6bfc3b)
+ * stub_flasher: Fix ESP32-C5 ECO2 flashing (Radim Karniš - 3a4c15c)
+ * espefuse: Fix output messages for set_flash_voltage (Peter Dragun - daaedf8)
+ * espefuse: JTAG_SEL_ENABLE has GPIO34 strapping pin for ESP32P4 (Jan Beran - 78535e4)
+ * esp32c5: fix bootloader address (Jaroslav Burian - ec12073)
+ * autodetection: Remove the Unsupported detection protocol stage (Radim Karniš - 05553a4)
+ * logging: Unify output messages, notes, and warning formatting (Radim Karniš - 07879eb)
+ * elf2image: fix elf2image for ram app when sha256 offset not specified (Jaroslav Burian - 6f8ff39)
+ * esp32h4: fix h4 chip feature (Chen Jichang - 955943a)
+ * image_info: Sanitize app and bootloader info of null bytes (Radim Karniš - 8016455)
+ * lint: Correct type annotations issues reported by mypy (Radim Karniš - 0bca550)
+ * esptool: Fix efuse base address for esp32h21 (Konstantin Kondrashov - c3d28ee)
+ * elf2image: support --flash-mmu-page-config for all chips (Jaroslav Burian - 8be617c)
+ * elf2image: Try to correct MMU page size if not specified (Jaroslav Burian - f4fabc5)
+ * elf2image: Print correct MMU page size in error message (Jaroslav Burian - 9da4948)
+ * logging: Avoid crashes when flushing if sys.stdout is not available (Radim Karniš - 5176b67)
+ * enable auto-detection of ESP32-S2 in secure download mode (Jaroslav Burian - c2f5d21)
+ * enable ESP32-P4 ECO5 chip detection (Jaroslav Burian - 0b3460f)
+ * Do not use padding for merged IntelHex files (Peter Dragun - 08c170b)
+ * lock upper version of click to <8.2.0 (Peter Dragun - 5241cba)
+ * Add timeout to read_flash to avoid infinite loops (Peter Dragun - f26a7bb)
+ * Close the data file after reading the data (Stevan Stevic - 807d02b)
+Documentation
+ * elf2image: Link an article with Simple Boot explanation (Radim Karniš - 202dfad)
+ * logger: Fix custom logger example code (Radim Karniš - 26e86e9)
+ * logger: Fix custom logger example code (Radim Karniš - eaaa6b3)
+ * Clarify versions in documentation (Peter Dragun - 4586e4b)
+ * Remove .py suffix from tool names (Peter Dragun - e9f03ae)
+ * Remove espefuse and espsecure migration guide for esp8266 (Peter Dragun - b6e08a3)
+ * Update migration guide for espefuse with click parser (Peter Dragun - faf3e22)
+ * Add missing esp32-p4 target to supported targets (Peter Dragun - 8b5a5d9)
+ * fix targets dropdown in production (Peter Dragun - 2643101)
+ * Update autocomplete docs for click-based CLI (Peter Dragun - 89cfa52)
+ * fix minor issues and improve vague statements (Peter Dragun - 6d04155)
+Code Refactoring
+ * cli_mode: Improve CLI mode workflow code (Radim Karniš - 0671d35)
+ * stub_class: Make into a mixin to avoid code repetition (Radim Karniš - 83613c8)
+Removals
+ * make_image: Remove the make_image command in favor of other workflows (Radim Karniš - 955a7c8)
+ * beta_targets: Removed support for beta chip targets (Radim Karniš - 8f1c206)
+ * Deprecate Python versions 3.7, 3.8 and 3.9 (Peter Dragun - 19f1bee)
+
+v4.9.0 (2025-06-19)
+New Features
+ * espefuse: Add eFuses for ESP32-C61 ECO3 (Radim Karniš - 98688ab)
+ * espefuse: Support efuse for ESP32-C5 ECO2 (v1.0) (Konstantin Kondrashov - ce16054)
+ * stub_flasher: Support for >16MB flash on P4 and >16MB encrypted writes on S3 (Radim Karniš - 0110514)
+ * espefuse: Updates esp32h4 efuse table and fixes tests (Konstantin Kondrashov - 777c505)
+ * esp32h4: add ESP32H4 esptool support (Chen Jichang - edb99bd)
+ * esp32h21: Add Microsoft UF2 family ID (Radim Karniš - 74d27ae)
+ * watchdog_reset: Add a new watchdog_reset option working even in USB modes (Radim Karniš - d37c38a)
+ * espsecure: Improves an error message for encrypt_flash_data and decrypt_flash_data (Konstantin Kondrashov - ef407ed)
+ * espefuse: Clean up efuse code for ESP32H2 (Konstantin Kondrashov - 4e922fe)
+ * espefuse: Support different efuse table versions for ESP32H2 (Konstantin Kondrashov - d51ecbe)
+ * espefuse: Adds efuses for esp32h2 eco5 (Konstantin Kondrashov - 9b74df6)
+ * esp32h21: add ESP32H21 esptool support (gaoxu - 92ceff2)
+ * esp32-p4: add support for flasher stub in USB OTG mode (Peter Dragun - 804f2db)
+ * esp32-c5: Add ECO1 magic number (Radim Karniš - 6cc002c)
+ * esp_rfc2217: Improved the logger message format (Jakub Kocka - 39a12a4)
+ * espefuse: Adds 3 bit for PSRAM_CAP efuse field (Konstantin Kondrashov - ab2e0bf)
+ * espefuse: Adds API for getting block and wafer versions (Konstantin Kondrashov - 111c6c0)
+ * espefuse: Adds ADC calibration data for ESP32-C61 (Konstantin Kondrashov - 36d9735)
+ * espefuse: Adds ADC calibration data for ESP32-C5 (Konstantin Kondrashov - a903812)
+ * espefuse: Adds ADC calibration data for ESP32-P4 (Konstantin Kondrashov - 215e4b8)
+ * erase_region: Enable erasing in ROM bootloader and SDM (Radim Karniš - e0deeac)
+ * hard_reset: Support custom hard reset sequence configuration (Radim Karniš - 1b15738)
+ * print usb mode when output chip info (Jan Beran - 749d1ad)
+ * Add new app description segments (Jaroslav Burian - b23e60f)
+ * add filtering based on serial number (Jaroslav Burian - 88319db)
+ * Add support for Python 3.13 (Radim Karniš - 6abd05d)
+Bug Fixes
+ * stub_flasher: Fix USB-Serial/JTAG mode on C5 ECO2 and C61 ECO3 (Radim Karniš - 4382f14)
+ * write_flash: Detect more cases of unresponsive flash, fix failing flash_size check (Radim Karniš - f83d598)
+ * stub_flasher: Fix ESP32-C5 ECO2 flashing (Radim Karniš - bb237bc)
+ * espefuse: Fix output messages for set_flash_voltage (Peter Dragun - 759bcc6)
+ * espefuse: JTAG_SEL_ENABLE has GPIO34 strapping pin for ESP32P4 (Jan Beran - f6d1833)
+ * esp32c5: fix bootloader address (Jaroslav Burian - 83e0973)
+ * elf2image: fix elf2image for ram app when sha256 offset not specified (Radim Karniš - 9fd7b7a)
+ * esp32h4: Correct ESP32-H4 chip features (Radim Karniš - 5520963)
+ * esp32h21: Fix eFuse base address (Radim Karniš - dc05792)
+ * elf2image: support --flash-mmu-page-config for all chips (Jaroslav Burian - 54fdc75)
+ * elf2image: Try to correct MMU page size if not specified (Jaroslav Burian - d9afa9c)
+ * elf2image: Print correct MMU page size in error message (Jaroslav Burian - 447de60)
+ * test: Expect the correct module name for Python's 3.14 argparse (Karolina Surma - 98001b7)
+ * write_flash: Skip flash_size checks if we can't read flash size (Radim Karniš - 12095b2)
+ * save_segment: Adds segment len check the same as bootloader does (Konstantin Kondrashov - a6bceb7)
+ * chip_type_verification: Enable in SDM, do not rely on magic numbers (Radim Karniš - 598e07b)
+ * esp32-c6: Disable RTC WDT reset to prevent port disappearing (Radim Karniš - d47004e)
+ * esp_rfc2217: Fixed keyboard interrupt on Windows and added info for command (Jakub Kocka - 5569aa5)
+ * detect_chip: Select correct loader before further operations to avoid silent failures (Jan Beran - 8897ff8)
+ * usb_resets: Fix resetting in USB-OTG and USB-Serial/JTAG modes (Radim Karniš - 8298cdc)
+ * Do not use padding for merged IntelHex files (Peter Dragun - 739669f)
+ * close port when connect fails (Jaroslav Burian - d99c972)
+ * Hide missing app info based on IDF version (Jaroslav Burian - d2bca1e)
+ * add delay after WDT reset for better stability (Peter Dragun - 188c162)
+ * Not reading app description for some SoCs (Jaroslav Burian - 3555fe1)
+ * Fix missing newline in output (Jan Beran - 26b676b)
+Documentation
+ * esptool: Fix reset sequences in documentation (Jan Beran - 92160eb)
+ * flash_modes: Correct QIO GPIO pins for all chips (Radim Karniš - 23f11f0)
+ * espefuse: Fixed JTAG strapping pin for ESP32-S3 in the help and documentation (Roland Dobai - de1d1ce)
+ * scripting: Add example of usage as a Python module (Radim Karniš - d54e59f)
+ * esp8266: change boot select pin to IO0 (ChromaLock - c06ce1e)
+ * read_flash_sfdp: Fix command formatting (Radim Karniš - ec309bb)
+ * spi_connection: Explain which flash chips are supported (Radim Karniš - 6d37e30)
+ * fix targets dropdown in production (Peter Dragun - 9201ccd)
+ * Point directly to the datasheet for given target (Jan Beran - a32988e)
+ * Add ESP32-C5 and ESP32-C61 docs (Radim Karniš - f52c723)
diff --git a/py-esptool/DESCR b/py-esptool/DESCR
new file mode 100644
index 0000000000..59e7cf46fd
--- /dev/null
+++ b/py-esptool/DESCR
@@ -0,0 +1 @@
+This package contains a utility to load firmware into ESP8266 and ESP32 chips.
diff --git a/py-esptool/Makefile b/py-esptool/Makefile
new file mode 100644
index 0000000000..12b7f19441
--- /dev/null
+++ b/py-esptool/Makefile
@@ -0,0 +1,31 @@
+# $NetBSD: Makefile,v 1.19 2025/07/05 11:44:09 wiz Exp $
+
+DISTNAME= esptool-5.0.1
+PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
+CATEGORIES= comms python
+MASTER_SITES= ${MASTER_SITE_PYPI:=e/esptool/}
+
+MAINTAINER= gdt%NetBSD.org@localhost
+HOMEPAGE= https://github.com/espressif/esptool
+COMMENT= Firmware tool for ESP8266/ESP32
+LICENSE= gnu-gpl-v2
+
+TOOL_DEPENDS+= ${PYPKGPREFIX}-setuptools>=78:../../devel/py-setuptools
+DEPENDS+= ${PYPKGPREFIX}-bitstring>=4.2.1:../../devel/py-bitstring
+DEPENDS+= ${PYPKGPREFIX}-click-[0-9]*:../../devel/py-click
+DEPENDS+= ${PYPKGPREFIX}-intelhex-[0-9]*:../../devel/py-intelhex
+DEPENDS+= ${PYPKGPREFIX}-reedsolo>=1.5.3:../../converters/py-reedsolo
+DEPENDS+= ${PYPKGPREFIX}-rich-click-[0-9]*:../../devel/py-rich-click
+DEPENDS+= ${PYPKGPREFIX}-serial>=3.3:../../comms/py-serial
+DEPENDS+= ${PYPKGPREFIX}-yaml>=5.1:../../textproc/py-yaml
+
+USE_LANGUAGES= # none
+
+PYTHON_SELF_CONFLICT= yes
+
+PYTHON_VERSIONS_INCOMPATIBLE= 39
+
+PYTHON_VERSIONED_DEPENDENCIES+= cryptography
+.include "../../lang/python/versioned_dependencies.mk"
+.include "../../lang/python/wheel.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/py-esptool/PLIST b/py-esptool/PLIST
new file mode 100644
index 0000000000..efdd766904
--- /dev/null
+++ b/py-esptool/PLIST
@@ -0,0 +1,367 @@
+@comment $NetBSD$
+bin/esp_rfc2217_server
+bin/esp_rfc2217_server.py
+bin/espefuse
+bin/espefuse.py
+bin/espsecure
+bin/espsecure.py
+bin/esptool
+bin/esptool.py
+${PYSITELIB}/esp_rfc2217_server/__init__.py
+${PYSITELIB}/esp_rfc2217_server/__init__.pyc
+${PYSITELIB}/esp_rfc2217_server/__init__.pyo
+${PYSITELIB}/esp_rfc2217_server/__main__.py
+${PYSITELIB}/esp_rfc2217_server/__main__.pyc
+${PYSITELIB}/esp_rfc2217_server/__main__.pyo
+${PYSITELIB}/esp_rfc2217_server/esp_port_manager.py
+${PYSITELIB}/esp_rfc2217_server/esp_port_manager.pyc
+${PYSITELIB}/esp_rfc2217_server/esp_port_manager.pyo
+${PYSITELIB}/esp_rfc2217_server/redirector.py
+${PYSITELIB}/esp_rfc2217_server/redirector.pyc
+${PYSITELIB}/esp_rfc2217_server/redirector.pyo
+${PYSITELIB}/espefuse/__init__.py
+${PYSITELIB}/espefuse/__init__.pyc
+${PYSITELIB}/espefuse/__init__.pyo
+${PYSITELIB}/espefuse/__main__.py
+${PYSITELIB}/espefuse/__main__.pyc
+${PYSITELIB}/espefuse/__main__.pyo
+${PYSITELIB}/espefuse/cli_util.py
+${PYSITELIB}/espefuse/cli_util.pyc
+${PYSITELIB}/espefuse/cli_util.pyo
+${PYSITELIB}/espefuse/efuse/__init__.py
+${PYSITELIB}/espefuse/efuse/__init__.pyc
+${PYSITELIB}/espefuse/efuse/__init__.pyo
+${PYSITELIB}/espefuse/efuse/base_fields.py
+${PYSITELIB}/espefuse/efuse/base_fields.pyc
+${PYSITELIB}/espefuse/efuse/base_fields.pyo
+${PYSITELIB}/espefuse/efuse/base_operations.py
+${PYSITELIB}/espefuse/efuse/base_operations.pyc
+${PYSITELIB}/espefuse/efuse/base_operations.pyo
+${PYSITELIB}/espefuse/efuse/csv_table_parser.py
+${PYSITELIB}/espefuse/efuse/csv_table_parser.pyc
+${PYSITELIB}/espefuse/efuse/csv_table_parser.pyo
+${PYSITELIB}/espefuse/efuse/emulate_efuse_controller_base.py
+${PYSITELIB}/espefuse/efuse/emulate_efuse_controller_base.pyc
+${PYSITELIB}/espefuse/efuse/emulate_efuse_controller_base.pyo
+${PYSITELIB}/espefuse/efuse/esp32/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32/fields.py
+${PYSITELIB}/espefuse/efuse/esp32/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32/operations.py
+${PYSITELIB}/espefuse/efuse/esp32/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32c2/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32c2/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32c2/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32c2/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32c2/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32c2/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32c2/fields.py
+${PYSITELIB}/espefuse/efuse/esp32c2/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32c2/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32c2/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32c2/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32c2/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32c2/operations.py
+${PYSITELIB}/espefuse/efuse/esp32c2/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32c2/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32c3/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32c3/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32c3/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32c3/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32c3/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32c3/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32c3/fields.py
+${PYSITELIB}/espefuse/efuse/esp32c3/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32c3/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32c3/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32c3/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32c3/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32c3/operations.py
+${PYSITELIB}/espefuse/efuse/esp32c3/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32c3/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32c5/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32c5/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32c5/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32c5/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32c5/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32c5/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32c5/fields.py
+${PYSITELIB}/espefuse/efuse/esp32c5/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32c5/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32c5/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32c5/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32c5/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32c5/operations.py
+${PYSITELIB}/espefuse/efuse/esp32c5/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32c5/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32c6/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32c6/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32c6/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32c6/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32c6/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32c6/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32c6/fields.py
+${PYSITELIB}/espefuse/efuse/esp32c6/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32c6/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32c6/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32c6/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32c6/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32c6/operations.py
+${PYSITELIB}/espefuse/efuse/esp32c6/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32c6/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32c61/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32c61/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32c61/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32c61/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32c61/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32c61/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32c61/fields.py
+${PYSITELIB}/espefuse/efuse/esp32c61/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32c61/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32c61/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32c61/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32c61/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32c61/operations.py
+${PYSITELIB}/espefuse/efuse/esp32c61/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32c61/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32h2/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32h2/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32h2/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32h2/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32h2/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32h2/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32h2/fields.py
+${PYSITELIB}/espefuse/efuse/esp32h2/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32h2/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32h2/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32h2/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32h2/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32h2/operations.py
+${PYSITELIB}/espefuse/efuse/esp32h2/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32h2/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32h21/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32h21/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32h21/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32h21/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32h21/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32h21/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32h21/fields.py
+${PYSITELIB}/espefuse/efuse/esp32h21/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32h21/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32h21/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32h21/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32h21/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32h21/operations.py
+${PYSITELIB}/espefuse/efuse/esp32h21/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32h21/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32h4/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32h4/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32h4/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32h4/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32h4/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32h4/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32h4/fields.py
+${PYSITELIB}/espefuse/efuse/esp32h4/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32h4/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32h4/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32h4/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32h4/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32h4/operations.py
+${PYSITELIB}/espefuse/efuse/esp32h4/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32h4/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32p4/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32p4/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32p4/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32p4/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32p4/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32p4/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32p4/fields.py
+${PYSITELIB}/espefuse/efuse/esp32p4/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32p4/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32p4/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32p4/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32p4/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32p4/operations.py
+${PYSITELIB}/espefuse/efuse/esp32p4/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32p4/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32s2/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32s2/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32s2/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32s2/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32s2/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32s2/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32s2/fields.py
+${PYSITELIB}/espefuse/efuse/esp32s2/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32s2/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32s2/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32s2/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32s2/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32s2/operations.py
+${PYSITELIB}/espefuse/efuse/esp32s2/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32s2/operations.pyo
+${PYSITELIB}/espefuse/efuse/esp32s3/__init__.py
+${PYSITELIB}/espefuse/efuse/esp32s3/__init__.pyc
+${PYSITELIB}/espefuse/efuse/esp32s3/__init__.pyo
+${PYSITELIB}/espefuse/efuse/esp32s3/emulate_efuse_controller.py
+${PYSITELIB}/espefuse/efuse/esp32s3/emulate_efuse_controller.pyc
+${PYSITELIB}/espefuse/efuse/esp32s3/emulate_efuse_controller.pyo
+${PYSITELIB}/espefuse/efuse/esp32s3/fields.py
+${PYSITELIB}/espefuse/efuse/esp32s3/fields.pyc
+${PYSITELIB}/espefuse/efuse/esp32s3/fields.pyo
+${PYSITELIB}/espefuse/efuse/esp32s3/mem_definition.py
+${PYSITELIB}/espefuse/efuse/esp32s3/mem_definition.pyc
+${PYSITELIB}/espefuse/efuse/esp32s3/mem_definition.pyo
+${PYSITELIB}/espefuse/efuse/esp32s3/operations.py
+${PYSITELIB}/espefuse/efuse/esp32s3/operations.pyc
+${PYSITELIB}/espefuse/efuse/esp32s3/operations.pyo
+${PYSITELIB}/espefuse/efuse/mem_definition_base.py
+${PYSITELIB}/espefuse/efuse/mem_definition_base.pyc
+${PYSITELIB}/espefuse/efuse/mem_definition_base.pyo
+${PYSITELIB}/espefuse/efuse/util.py
+${PYSITELIB}/espefuse/efuse/util.pyc
+${PYSITELIB}/espefuse/efuse/util.pyo
+${PYSITELIB}/espefuse/efuse_defs/esp32.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32c2.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32c3.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32c5.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32c6.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32c61.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32h2.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32h21.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32h2_v0.0_v1.1.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32h4.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32p4.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32s2.yaml
+${PYSITELIB}/espefuse/efuse_defs/esp32s3.yaml
+${PYSITELIB}/espefuse/efuse_interface.py
+${PYSITELIB}/espefuse/efuse_interface.pyc
+${PYSITELIB}/espefuse/efuse_interface.pyo
+${PYSITELIB}/espsecure/__init__.py
+${PYSITELIB}/espsecure/__init__.pyc
+${PYSITELIB}/espsecure/__init__.pyo
+${PYSITELIB}/espsecure/__main__.py
+${PYSITELIB}/espsecure/__main__.pyc
+${PYSITELIB}/espsecure/__main__.pyo
+${PYSITELIB}/espsecure/esp_hsm_sign/__init__.py
+${PYSITELIB}/espsecure/esp_hsm_sign/__init__.pyc
+${PYSITELIB}/espsecure/esp_hsm_sign/__init__.pyo
+${PYSITELIB}/espsecure/esp_hsm_sign/exceptions.py
+${PYSITELIB}/espsecure/esp_hsm_sign/exceptions.pyc
+${PYSITELIB}/espsecure/esp_hsm_sign/exceptions.pyo
+${PYSITELIB}/${WHEEL_INFODIR}/METADATA
+${PYSITELIB}/${WHEEL_INFODIR}/RECORD
+${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
+${PYSITELIB}/${WHEEL_INFODIR}/entry_points.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/LICENSE
+${PYSITELIB}/${WHEEL_INFODIR}/top_level.txt
+${PYSITELIB}/esptool/__init__.py
+${PYSITELIB}/esptool/__init__.pyc
+${PYSITELIB}/esptool/__init__.pyo
+${PYSITELIB}/esptool/__main__.py
+${PYSITELIB}/esptool/__main__.pyc
+${PYSITELIB}/esptool/__main__.pyo
+${PYSITELIB}/esptool/bin_image.py
+${PYSITELIB}/esptool/bin_image.pyc
+${PYSITELIB}/esptool/bin_image.pyo
+${PYSITELIB}/esptool/cli_util.py
+${PYSITELIB}/esptool/cli_util.pyc
+${PYSITELIB}/esptool/cli_util.pyo
+${PYSITELIB}/esptool/cmds.py
+${PYSITELIB}/esptool/cmds.pyc
+${PYSITELIB}/esptool/cmds.pyo
+${PYSITELIB}/esptool/config.py
+${PYSITELIB}/esptool/config.pyc
+${PYSITELIB}/esptool/config.pyo
+${PYSITELIB}/esptool/loader.py
+${PYSITELIB}/esptool/loader.pyc
+${PYSITELIB}/esptool/loader.pyo
+${PYSITELIB}/esptool/logger.py
+${PYSITELIB}/esptool/logger.pyc
+${PYSITELIB}/esptool/logger.pyo
+${PYSITELIB}/esptool/reset.py
+${PYSITELIB}/esptool/reset.pyc
+${PYSITELIB}/esptool/reset.pyo
+${PYSITELIB}/esptool/targets/__init__.py
+${PYSITELIB}/esptool/targets/__init__.pyc
+${PYSITELIB}/esptool/targets/__init__.pyo
+${PYSITELIB}/esptool/targets/esp32.py
+${PYSITELIB}/esptool/targets/esp32.pyc
+${PYSITELIB}/esptool/targets/esp32.pyo
+${PYSITELIB}/esptool/targets/esp32c2.py
+${PYSITELIB}/esptool/targets/esp32c2.pyc
+${PYSITELIB}/esptool/targets/esp32c2.pyo
+${PYSITELIB}/esptool/targets/esp32c3.py
+${PYSITELIB}/esptool/targets/esp32c3.pyc
+${PYSITELIB}/esptool/targets/esp32c3.pyo
+${PYSITELIB}/esptool/targets/esp32c5.py
+${PYSITELIB}/esptool/targets/esp32c5.pyc
+${PYSITELIB}/esptool/targets/esp32c5.pyo
+${PYSITELIB}/esptool/targets/esp32c6.py
+${PYSITELIB}/esptool/targets/esp32c6.pyc
+${PYSITELIB}/esptool/targets/esp32c6.pyo
+${PYSITELIB}/esptool/targets/esp32c61.py
+${PYSITELIB}/esptool/targets/esp32c61.pyc
+${PYSITELIB}/esptool/targets/esp32c61.pyo
+${PYSITELIB}/esptool/targets/esp32h2.py
+${PYSITELIB}/esptool/targets/esp32h2.pyc
+${PYSITELIB}/esptool/targets/esp32h2.pyo
+${PYSITELIB}/esptool/targets/esp32h21.py
+${PYSITELIB}/esptool/targets/esp32h21.pyc
+${PYSITELIB}/esptool/targets/esp32h21.pyo
+${PYSITELIB}/esptool/targets/esp32h4.py
+${PYSITELIB}/esptool/targets/esp32h4.pyc
+${PYSITELIB}/esptool/targets/esp32h4.pyo
+${PYSITELIB}/esptool/targets/esp32p4.py
+${PYSITELIB}/esptool/targets/esp32p4.pyc
+${PYSITELIB}/esptool/targets/esp32p4.pyo
+${PYSITELIB}/esptool/targets/esp32s2.py
+${PYSITELIB}/esptool/targets/esp32s2.pyc
+${PYSITELIB}/esptool/targets/esp32s2.pyo
+${PYSITELIB}/esptool/targets/esp32s3.py
+${PYSITELIB}/esptool/targets/esp32s3.pyc
+${PYSITELIB}/esptool/targets/esp32s3.pyo
+${PYSITELIB}/esptool/targets/esp8266.py
+${PYSITELIB}/esptool/targets/esp8266.pyc
+${PYSITELIB}/esptool/targets/esp8266.pyo
+${PYSITELIB}/esptool/targets/stub_flasher/1/.DS_Store
+${PYSITELIB}/esptool/targets/stub_flasher/1/README.md
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32c2.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32c3.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32c5.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32c6.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32c61.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32h2.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32p4.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32s2.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp32s3.json
+${PYSITELIB}/esptool/targets/stub_flasher/1/esp8266.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/LICENSE-APACHE
+${PYSITELIB}/esptool/targets/stub_flasher/2/LICENSE-MIT
+${PYSITELIB}/esptool/targets/stub_flasher/2/README.md
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32c2.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32c3.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32c5.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32c6.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32c61.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32h2.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32p4.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32s2.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp32s3.json
+${PYSITELIB}/esptool/targets/stub_flasher/2/esp8266.json
+${PYSITELIB}/esptool/uf2_writer.py
+${PYSITELIB}/esptool/uf2_writer.pyc
+${PYSITELIB}/esptool/uf2_writer.pyo
+${PYSITELIB}/esptool/util.py
+${PYSITELIB}/esptool/util.pyc
+${PYSITELIB}/esptool/util.pyo
diff --git a/py-esptool/distinfo b/py-esptool/distinfo
new file mode 100644
index 0000000000..127ca78b2f
--- /dev/null
+++ b/py-esptool/distinfo
@@ -0,0 +1,6 @@
+$NetBSD: distinfo,v 1.13 2025/04/15 15:42:11 adam Exp $
+
+BLAKE2s (esptool-5.0.1.tar.gz) = 2169c6115850ba1ecb8979baa19d5936c6974d5ce920078cf93d9aa70702b30f
+SHA512 (esptool-5.0.1.tar.gz) = dc57f1a36ae0689c878d69c97e207e71f3dfc0b6cb551cc2425c0890329d6b2f1200158150c9a3c1f1d310296f07af4db47fe11b85f76e00140e49ade82eb7a2
+Size (esptool-5.0.1.tar.gz) = 373632 bytes
+SHA1 (patch-esptool_cli__util.py) = ed6379945e98a30343df9e3c873a6c563e7ad6ed
diff --git a/py-esptool/patches/patch-esptool_cli__util.py b/py-esptool/patches/patch-esptool_cli__util.py
new file mode 100644
index 0000000000..efafcc7a1d
--- /dev/null
+++ b/py-esptool/patches/patch-esptool_cli__util.py
@@ -0,0 +1,24 @@
+$NetBSD$
+
+Fix use of click >= 8.2.0.
+
+--- esptool/cli_util.py.orig 2025-07-19 20:28:53.595125845 +0000
++++ esptool/cli_util.py
+@@ -155,7 +155,7 @@ class AddrFilenamePairType(click.Path):
+
+ name = "addr-filename-pair"
+
+- def get_metavar(self, param):
++ def get_metavar(self, param, ctx=None):
+ return "<address> <filename>"
+
+ def convert(
+@@ -294,7 +294,7 @@ class OptionEatAll(click.Option):
+ self._eat_all_parser = None
+ # Set the metavar dynamically based on the type's metavar
+ if self.type and hasattr(self.type, "name"):
+- self.metavar = f"[{self.type.get_metavar(None) or self.type.name.upper()}]"
++ self.metavar = f"[{self.type.get_metavar(None, None) or self.type.name.upper()}]"
+
+ def add_to_parser(self, parser, ctx):
+ def parser_process(value, state):
Home |
Main Index |
Thread Index |
Old Index