Skip to content

Reduce idf_tools disk usage by splitting toolchain libraries per chip/ISA variant (IDFGH-16802) #17879

@garywill

Description

@garywill

Answers checklist.

  • I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.

v5.4.2

Operating System used.

Linux

How did you build your project?

Command line with idf.py

If you are using Windows, please specify command line type.

None

What is the expected behavior?

  1. Please consider splitting toolchains so that only the required ISA/chip-specific libraries are installed. (esp-idf only splits toolchains by cpu archtecture currently, which is not enough. Should also split by variants)
  2. Clean the downloaded tarball after extraction

What is the actual behavior?

When installing ESP-IDF tools for a specific chip, it will download the toolchain package including library variants for other chips under same architecture, even many those not needed.

For example, selecting only esp32

./install.sh esp32

will install:

idf_tools/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/xtensa-esp-elf/lib ------------------------------------------
                                    /..
  212.0 MiB [#####################] /esp32
  106.8 MiB [##########           ] /esp32s2
  105.9 MiB [##########           ] /esp32s3
...

Selecting only esp32-c3

./install.sh esp32c3

will install rv32i, rv32imc, rv32imac, rv32imafc, while only one needed:

idf_tools/tools/riscv32-esp-elf/esp-14.2.0_20241119/riscv32-esp-elf/riscv32-esp-elf/lib ---------------------------------------
                                    /..
  162.1 MiB [#####################] /rv32i_zicsr_zifencei
  160.8 MiB [#################### ] /rv32imc_zicsr_zifencei
  160.7 MiB [#################### ] /rv32imac_zicsr_zifencei
  160.2 MiB [#################### ] /rv32imafc_zicsr_zifencei_zba_zbb_zbc_zbs
  159.9 MiB [#################### ] /rv32imafc_zicsr_zifencei
...

Resulting in:

idf_tools/tools ---------------------------------------------------------------------------------------------------------------
                                    /..
    2.0 GiB [#####################] /riscv32-esp-elf
    1.0 GiB [##########           ] /xtensa-esp-elf
   90.1 MiB [                     ] /xtensa-esp-elf-gdb
   88.5 MiB [                     ] /riscv32-esp-elf-gdb
   30.4 MiB [                     ] /esp32ulp-elf
   19.9 MiB [                     ] /openocd-esp32
    6.6 MiB [                     ] /esp-rom-elfs

This leads to unnecessary disk usage.

( And tarball should be deleted after extracting, but actually not ) :

idf_tools/dist ----------------------------------------------------------------------------------------------------------------
                                    /..
  284.3 MiB [#####################]  riscv32-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.xz
  166.6 MiB [############         ]  xtensa-esp-elf-14.2.0_20241119-x86_64-linux-gnu.tar.xz
   29.6 MiB [##                   ]  xtensa-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz
   29.3 MiB [##                   ]  riscv32-esp-elf-gdb-14.2_20240403-x86_64-linux-gnu.tar.gz
   10.6 MiB [                     ]  esp32ulp-elf-2.38_20240113-linux-amd64.tar.gz

Request:

  1. Please consider splitting toolchains so that only the required ISA/chip-specific libraries are installed. (esp-idf only splits toolchains by cpu archtecture currently, which is not enough. Should also split by variants)
  2. Clean the downloaded tarball after extraction

Steps to reproduce.

Use esp-idf. Install toolchain (./install.sh)

Build or installation Logs.


Diagnostic report archive.

No response

More Information.

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions