Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker image rebuilds all every time, doesn't do incremental build (IDFGH-2720) #4790

Closed
ftab opened this issue Feb 17, 2020 · 5 comments
Closed

Comments

@ftab
Copy link

ftab commented Feb 17, 2020

Environment

  • Development Kit: ESP32-LyraT
  • Module or chip used: ESP32-WROVER
  • IDF version (run git describe --tags to find it): v3.3.1 docker image - espressif/idf:v3.3.1
  • Build System: Make
  • Compiler version (run xtensa-esp32-elf-gcc --version to find it): 1.22.0-80-g6c4433a
  • Operating System: Linux
  • Using an IDE?: No
  • Power Supply: USB
  • Docker version: 18.09.9

Problem Description

When building an application (e.g. hello world example) it does not do an incremental build on future runs.

Expected Behavior

Incremental build, future runs should not have to rebuild if the source did not change

Actual Behavior

Full project is built every time.

Steps to reproduce

  1. Plug ESP32 board into /dev/ttyUSB0
  2. Install docker-ce (18.09.9 in my case)
  3. Check out esp-idf at v3.3.1
  4. cd to examples/getting-started/hello_world or cp -a examples/getting-started/hello_world elsewhere and then cd to there
  5. Set up default config: docker run -it -v $PWD:/project -w /project --device=/dev/ttyUSB0 espressif/idf:v3.3.1 make defconfig
  6. Build, flash, monitor: docker run -it -v $PWD:/project -w /project --device=/dev/ttyUSB0 espressif/idf:v3.3.1 make -j flash monitor
    Make sure to do the boot button dance if you do not have the jumpers set for automatic boot/flashing
  7. Ctrl+] to exit after satisfied it is running
  8. Run docker run -it -v $PWD:/project -w /project --device=/dev/ttyUSB0 espressif/idf:v3.3.1 make monitor

It tries to rebuild the whole project (all components) again.

Code to reproduce this issue

https://github.com/espressif/esp-idf/tree/v3.3.1/examples/get-started/hello_world

Debug Logs

The code runs fine, it is the build process that does not reuse the existing objects. A full rebuild is done every time, and that takes quite some time on some computers.

$ docker run -it -v $PWD:/project -w /project --device=/dev/ttyUSB0 espressif/idf:v3.3.1 make -j flash monitor
Adding ESP-IDF tools to PATH...
Checking if Python packages are up to date...
Python requirements from /opt/esp/idf/requirements.txt are satisfied.
Added the following directories to PATH:
  /opt/esp/idf/components/esptool_py/esptool
  /opt/esp/idf/components/espcoredump
  /opt/esp/idf/components/partition_table/
  /opt/esp/tools/xtensa-esp32-elf/1.22.0-80-g6c4433a-5.2.0/xtensa-esp32-elf/bin
  /opt/esp/tools/esp32ulp-elf/2.28.51.20170517/esp32ulp-elf-binutils/bin
  /opt/esp/tools/openocd-esp32/v0.10.0-esp32-20190313/openocd-esp32/bin
  /opt/esp/python_env/idf3.3_py3.6_env/bin
  /opt/esp/idf/tools
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:

  idf.py build

Toolchain path: /opt/esp/tools/xtensa-esp32-elf/1.22.0-80-g6c4433a-5.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Toolchain version: crosstool-ng-1.22.0-80-g6c4433a
Compiler version: 5.2.0
make[1]: Entering directory '/opt/esp/idf/tools/kconfig'
cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  /opt/esp/idf/tools/kconfig/mconf.c -o mconf.o
flex -L -Pzconf -ozconf.lex.c /opt/esp/idf/tools/kconfig/zconf.l
bison -t -l -p zconf -o zconf.tab.c /opt/esp/idf/tools/kconfig/zconf.y
sed -E "s/\\x0D$//" /opt/esp/idf/tools/kconfig/zconf.gperf | gperf -t --output-file zconf.hash.c -a -C -E -g -k '1,3,$' -p -t
cc -I /opt/esp/idf/tools/kconfig -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  zconf.tab.c -o zconf.tab.o
/opt/esp/idf/tools/kconfig/lxdialog/check-lxdialog.sh -check cc  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP -lncurses
cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  /opt/esp/idf/tools/kconfig/lxdialog/checklist.c -o lxdialog/checklist.o
cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  /opt/esp/idf/tools/kconfig/lxdialog/util.c -o lxdialog/util.o
cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  /opt/esp/idf/tools/kconfig/lxdialog/inputbox.c -o lxdialog/inputbox.o
cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  /opt/esp/idf/tools/kconfig/lxdialog/textbox.c -o lxdialog/textbox.o
cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  /opt/esp/idf/tools/kconfig/lxdialog/yesno.c -o lxdialog/yesno.o
cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  /opt/esp/idf/tools/kconfig/lxdialog/menubox.c -o lxdialog/menubox.o
cc -o mconf-idf mconf.o zconf.tab.o lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o -lncurses
cc -c  -DCURSES_LOC="<ncurses.h>" -DLOCALE -MMD -MP  /opt/esp/idf/tools/kconfig/conf.c -o conf.o
cc -o conf-idf conf.o  zconf.tab.o -lncurses
make[1]: Leaving directory '/opt/esp/idf/tools/kconfig'
GENCONFIG
Project is not inside a git repository, will not use 'git describe' to determine PROJECT_VER.
App "hello-world" version: 1
Project is not inside a git repository, will not use 'git describe' to determine PROJECT_VER.
CC build/app_trace/host_file_io.o
CC build/efuse/esp32/esp_efuse_table.o
CC build/efuse/src/esp_efuse_api.o
CC build/efuse/src/esp_efuse_utility.o
CC build/bt/bt.o
CC build/app_trace/app_trace.o
CC build/app_trace/app_trace_util.o
CC build/app_trace/gcov/gcov_rtio.o
CC build/efuse/src/esp_efuse_fields.o
CXX build/cxx/cxx_exception_stubs.o
CXX build/cxx/cxx_guards.o
CC build/console/commands.o
CXX build/asio/asio/asio/src/asio.o
CC build/bootloader_support/src/secure_boot_signatures.o
CC build/bootloader_support/src/bootloader_flash.o
CC build/esp_adc_cal/esp_adc_cal.o
CC build/esp-tls/esp_tls.o
CC build/bootloader_support/src/bootloader_utility.o
CC build/heap/heap_caps.o
CC build/driver/spi_master.o
CC build/bootloader_support/src/bootloader_clock.o
CC build/driver/sigmadelta.o
CC build/bootloader_support/src/bootloader_random.o
App "hello-world" version: 1
CC build/heap/heap_trace.o
CC build/bootloader_support/src/esp_image_format.o
CC build/driver/uart.o
CC build/heap/multi_heap.o
CC build/bootloader_support/src/secure_boot.o
CC build/bootloader_support/src/bootloader_flash_config.o
CC build/heap/heap_caps_init.o
CC build/ethernet/emac_dev.o
CC build/driver/periph_ctrl.o
CC build/driver/i2s.o
CXX build/nvs_flash/src/nvs_page.o
CXX build/nvs_flash/src/nvs_ops.o
CC build/bootloader_support/src/bootloader_sha.o
CC build/esp_http_client/lib/http_header.o
CC build/esp_event/default_event_loop.o
CC build/bootloader_support/src/flash_encrypt.o
CC build/freertos/timers.o
CC build/esp_http_server/src/httpd_parse.o
CC build/log/log.o
CC build/mqtt/esp-mqtt/lib/mqtt_msg.o
CC build/bootloader_support/src/bootloader_common.o
CC build/bootloader_support/src/flash_partitions.o
CC build/fatfs/src/ff.o
CC build/freertos/queue.o
CC build/freertos/event_groups.o
CXX build/nvs_flash/src/nvs_api.o
CC build/expat/expat/expat/lib/xmlparse.o
CC build/coap/libcoap/src/encode.o
CC build/freertos/tasks.o
AS build/freertos/xtensa_intr_asm.o
CC build/driver/ledc.o
CC build/driver/sdio_slave.o
CC build/bootloader_support/src/flash_qio_mode.o
CC build/esp_http_server/src/util/ctrl_sock.o
CC build/fatfs/src/diskio.o
CC build/freertos/croutine.o
CC build/coap/libcoap/src/str.o
CC build/coap/libcoap/src/mem.o
CC build/coap/libcoap/src/coap_time.o
CC build/fatfs/src/vfs_fat.o
CC build/driver/gpio.o
CC build/esp_https_server/src/https_server.o
CC build/driver/sdspi_transaction.o
CC build/mdns/mdns_networking.o
CC build/fatfs/src/vfs_fat_sdmmc.o
CC build/main/hello_world_main.o
CC build/driver/sdmmc_host.o
CC build/mqtt/esp-mqtt/lib/mqtt_outbox.o
CC build/esp_https_ota/src/esp_https_ota.o
AS build/freertos/xtensa_context.o
CC build/nghttp/nghttp2/lib/nghttp2_hd.o
CC build/driver/spi_common.o
CC build/pthread/pthread_local_storage.o
CXX build/wear_levelling/WL_Ext_Perf.o
CC build/freemodbus/port/porttimer.o
CC build/freemodbus/modbus/functions/mbfuncdisc.o
CC build/mqtt/esp-mqtt/lib/platform_esp32_idf.o
CC build/driver/timer.o
CC build/coap/libcoap/src/address.o
CC build/nghttp/nghttp2/lib/nghttp2_hd_huffman.o
CC build/fatfs/src/ffsystem.o
CC build/coap/libcoap/src/option.o
CC build/fatfs/src/ffunicode.o
CC build/ethernet/eth_phy/phy_common.o
CC build/pthread/pthread_cond_var.o
CC build/mdns/mdns.o
CC build/esp_event/esp_event_private.o
CC build/ulp/ulp_macro.o
CC build/coap/libcoap/src/debug.o
AS build/freertos/xtensa_vectors.o
CC build/nghttp/nghttp2/lib/nghttp2_helper.o
CC build/esp_http_client/esp_http_client.o
CC build/fatfs/src/diskio_rawflash.o
CC build/freertos/list.o
AS build/freertos/portasm.o
CC build/fatfs/src/diskio_wl.o
CC build/ethernet/eth_phy/phy_tlk110.o
CC build/protocomm/proto-c/sec1.pb-c.o
CC build/coap/libcoap/src/resource.o
CC build/espcoredump/src/core_dump_uart.o
CC build/coap/port/coap_io_socket.o
CC build/freemodbus/modbus/functions/mbfunccoils.o
CC build/esp_ringbuf/ringbuf.o
CC build/nghttp/nghttp2/lib/nghttp2_frame.o
CC build/freemodbus/port/portevent.o
CXX build/nvs_flash/src/nvs_encr.o
CC build/esp_http_client/lib/http_utils.o
CC build/sdmmc/sdmmc_common.o
CC build/spi_flash/partition.o
CC build/ethernet/eth_phy/phy_ip101.o
CC build/openssl/library/ssl_lib.o
CC build/driver/spi_slave.o
CC build/esp_http_server/src/httpd_main.o
CC build/spi_flash/cache_utils.o
CC build/nghttp/port/http_parser.o
CC build/openssl/library/ssl_methods.o
CC build/driver/can.o
CC build/espcoredump/src/core_dump_common.o
CC build/coap/libcoap/src/net.o
CC build/freertos/port.o
CC build/sdmmc/sdmmc_cmd.o
CC build/spiffs/spiffs_api.o
CC build/freertos/FreeRTOS-openocd.o
CC build/freemodbus/port/portserial.o
CC build/freemodbus/port/portother.o
CC build/freemodbus/modbus/functions/mbutils.o
CC build/freemodbus/modbus/functions/mbfuncholding.o
CC build/spiffs/spiffs/src/spiffs_gc.o
CC build/driver/rmt.o
CC build/openssl/library/ssl_x509.o
CC build/unity/unity/src/unity.o
CC build/protocomm/proto-c/constants.pb-c.o
CC build/smartconfig_ack/smartconfig_ack.o
CC build/tcpip_adapter/tcpip_adapter_lwip.o
CC build/freertos/xtensa_init.o
CC build/nghttp/nghttp2/lib/nghttp2_outbound_item.o
CC build/mdns/mdns_console.o
CC build/nghttp/nghttp2/lib/nghttp2_session.o
CC build/mbedtls/mbedtls/library/nist_kw.o
CC build/esp_http_server/src/httpd_uri.o
CC build/newlib/random.o
CXX build/wear_levelling/wear_levelling.o
CC build/freemodbus/modbus/mb.o
CC build/driver/mcpwm.o
CC build/soc/esp32/sdmmc_periph.o
CC build/soc/esp32/rtc_wdt.o
CC build/wifi_provisioning/src/scheme_console.o
CC build/esp_http_server/src/httpd_sess.o
CXX build/nvs_flash/src/nvs_storage.o
CC build/vfs/vfs_uart.o
CC build/coap/libcoap/src/uri.o
CC build/soc/esp32/rtc_time.o
CC build/espcoredump/src/core_dump_port.o
CXX build/wear_levelling/WL_Flash.o
CC build/soc/esp32/soc_memory_layout.o
CC build/esp_http_client/lib/http_auth.o
CC build/ethernet/emac_main.o
CC build/fatfs/src/diskio_sdmmc.o
CC build/freemodbus/modbus/ascii/mbascii.o
CC build/tcp_transport/transport_ws.o
CC build/ethernet/eth_phy/phy_lan8720.o
CC build/freemodbus/modbus/rtu/mbrtu.o
CC build/driver/i2c.o
CC build/freemodbus/modbus/functions/mbfuncinput.o
CC build/espcoredump/src/core_dump_flash.o
CC build/mbedtls/mbedtls/library/md_wrap.o
CC build/driver/sdspi_host.o
CC build/soc/esp32/rtc_pm.o
CC build/mbedtls/mbedtls/library/xtea.o
CC build/mbedtls/mbedtls/library/pkparse.o
CC build/nghttp/nghttp2/lib/nghttp2_http.o
CC build/coap/libcoap/src/subscribe.o
CC build/ulp/ulp.o
CC build/coap/libcoap/src/block.o
CXX build/wear_levelling/WL_Ext_Safe.o
CC build/coap/libcoap/src/pdu.o
CC build/freertos/xtensa_intr.o
CC build/soc/esp32/rtc_clk_init.o
CC build/wifi_provisioning/src/handlers.o
CC build/newlib/termios.o
CC build/freemodbus/modbus_controller/mbcontroller.o
CC build/esp_event/esp_event.o
CC build/mqtt/esp-mqtt/mqtt_client.o
CC build/freemodbus/modbus/rtu/mbcrc.o
CC build/driver/sdmmc_transaction.o
CC build/fatfs/src/vfs_fat_spiflash.o
CC build/driver/rtc_module.o
CC build/driver/pcnt.o
CXX build/wear_levelling/SPI_Flash.o
CC build/pthread/pthread.o
CC build/freertos/xtensa_overlay_os_hook.o
AS build/freertos/xtensa_vector_defaults.o
CC build/newlib/reent_init.o
CC build/unity/unity_port_esp32.o
CC build/freemodbus/modbus/functions/mbfuncother.o
CC build/newlib/syscalls.o
CC build/mbedtls/mbedtls/library/hkdf.o
CC build/esp32/freertos_hooks.o
CC build/protocomm/src/common/protocomm.o
CC build/esp_http_server/src/httpd_txrx.o
CC build/nghttp/nghttp2/lib/nghttp2_stream.o
CC build/spi_flash/flash_mmap.o
CC build/soc/esp32/cpu_util.o
CC build/coap/libcoap/src/async.o
CC build/mbedtls/mbedtls/library/threading.o
CC build/mbedtls/mbedtls/library/poly1305.o
CC build/mbedtls/mbedtls/library/ctr_drbg.o
CC build/spi_flash/spi_flash_rom_patch.o
CC build/nghttp/nghttp2/lib/nghttp2_queue.o
CC build/newlib/utime.o
CC build/spiffs/spiffs/src/spiffs_nucleus.o
CC build/spi_flash/flash_ops.o
CC build/newlib/pthread.o
CXX build/nvs_flash/src/nvs_item_hash_list.o
CC build/newlib/poll.o
CC build/nghttp/nghttp2/lib/nghttp2_pq.o
CC build/app_update/esp_ota_ops.o
CC build/spiffs/spiffs/src/spiffs_cache.o
CC build/sdmmc/sdmmc_io.o
CC build/spiffs/spiffs/src/spiffs_check.o
CC build/mbedtls/mbedtls/library/x509.o
CC build/newlib/time.o
CC build/nghttp/nghttp2/lib/nghttp2_submit.o
CC build/sdmmc/sdmmc_mmc.o
CC build/mbedtls/mbedtls/library/ssl_ticket.o
CXX build/wear_levelling/Partition.o
CC build/mbedtls/mbedtls/library/blowfish.o
CC build/mbedtls/mbedtls/library/ssl_ciphersuites.o
CC build/esp32/panic.o
CC build/mbedtls/mbedtls/library/oid.o
CC build/newlib/select.o
CC build/unity/unity_runner.o
CC build/protocomm/src/transports/protocomm_console.o
CC build/nghttp/nghttp2/lib/nghttp2_rcbuf.o
CC build/protocomm/src/transports/protocomm_httpd.o
CC build/protocomm/proto-c/sec0.pb-c.o
CC build/mbedtls/mbedtls/library/entropy_poll.o
CC build/mbedtls/mbedtls/library/version_features.o
CC build/openssl/library/ssl_stack.o
CC build/sdmmc/sdmmc_init.o
CC build/mbedtls/mbedtls/library/rsa.o
CC build/mbedtls/mbedtls/library/md5.o
CC build/mbedtls/mbedtls/library/memory_buffer_alloc.o
CC build/protocomm/src/security/security1.o
CC build/protocomm/src/security/security0.o
CC build/esp32/task_wdt.o
CC build/spiffs/spiffs/src/spiffs_hydrogen.o
CC build/app_update/esp_app_desc.o
CC build/mbedtls/mbedtls/library/rsa_internal.o
CC build/esp32/dbg_stubs.o
CC build/newlib/locks.o
CC build/esp32/gdbstub.o
CC build/esp32/event_default_handlers.o
CC build/openssl/library/ssl_cert.o
CC build/mbedtls/mbedtls/library/padlock.o
CC build/mbedtls/mbedtls/library/ripemd160.o
CC build/esp32/dport_access.o
CC build/mbedtls/mbedtls/library/ecp.o
CC build/openssl/library/ssl_pkey.o
CC build/soc/esp32/gpio_periph.o
CC build/protocomm/proto-c/session.pb-c.o
CC build/mbedtls/mbedtls/library/chachapoly.o
CC build/mbedtls/mbedtls/library/havege.o
CC build/esp32/pm_trace.o
CC build/sdmmc/sdmmc_sd.o
CC build/xtensa-debug-module/trax.o
CC build/esp32/phy_init.o
CC build/protobuf-c/protobuf-c/protobuf-c/protobuf-c.o
CC build/mbedtls/mbedtls/library/md2.o
CC build/mbedtls/mbedtls/library/cipher.o
CC build/mbedtls/mbedtls/library/platform_util.o
CC build/mbedtls/mbedtls/library/md.o
CC build/mbedtls/mbedtls/library/pem.o
CC build/vfs/vfs.o
CC build/newlib/syscall_table.o
CC build/esp32/event_loop.o
CC build/mbedtls/mbedtls/library/platform.o
CC build/esp32/int_wdt.o
CC build/mbedtls/mbedtls/library/gcm.o
CC build/tcp_transport/transport_ssl.o
CC build/esp32/crosscore_int.o
CC build/mbedtls/mbedtls/library/pkwrite.o
CC build/mbedtls/mbedtls/library/entropy.o
CC build/wifi_provisioning/src/wifi_scan.o
CC build/mbedtls/mbedtls/library/ssl_cache.o
CC build/spiffs/esp_spiffs.o
CC build/esp32/hw_random.o
CC build/esp32/spiram_psram.o
CC build/mbedtls/mbedtls/library/chacha20.o
CC build/tcp_transport/transport_utils.o
CC build/wpa_supplicant/src/fast_crypto/fast_crypto_internal-cipher.o
CC build/esp32/cache_sram_mmu.o
CC build/esp32/cache_err_int.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap.o
CC build/lwip/lwip/src/core/ipv4/etharp.o
CC build/lwip/lwip/src/core/ipv4/autoip.o
CC build/wpa_supplicant/src/crypto/aes-internal.o
CC build/wpa_supplicant/src/wpa2/eap_peer/mschapv2.o
CC build/mbedtls/mbedtls/library/version.o
CC build/wpa_supplicant/src/fast_crypto/fast_aes-unwrap.o
CC build/mbedtls/mbedtls/library/ecdh.o
CC build/esp32/esp_timer_esp32.o
CC build/openssl/platform/ssl_pm.o
CC build/esp32/clk.o
CC build/esp32/system_api.o
CC build/mbedtls/mbedtls/library/x509_crt.o
CC build/mbedtls/mbedtls/library/asn1write.o
CC build/wifi_provisioning/src/manager.o
CC build/wifi_provisioning/src/scheme_softap.o
CC build/esp32/cpu_start.o
CC build/mbedtls/mbedtls/library/ssl_srv.o
CC build/mbedtls/mbedtls/library/md4.o
CC build/wpa_supplicant/src/fast_crypto/fast_sha256.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_mschapv2.o
CC build/mbedtls/mbedtls/library/cipher_wrap.o
CC build/tcp_transport/transport_tcp.o
CC build/lwip/lwip/src/core/netif.o
CC build/wifi_provisioning/src/wifi_config.o
CC build/mbedtls/mbedtls/library/aes.o
CC build/esp32/esp_adapter.o
CC build/wifi_provisioning/proto-c/wifi_scan.pb-c.o
CC build/wpa_supplicant/src/crypto/aes-wrap.o
CC build/esp32/fast_crypto_ops.o
CC build/lwip/lwip/src/core/udp.o
CC build/tcp_transport/transport.o
CC build/wpa_supplicant/src/wpa2/tls/pkcs8.o
CC build/mbedtls/mbedtls/library/sha256.o
CC build/mbedtls/mbedtls/library/x509_create.o
CC build/mbedtls/mbedtls/library/x509write_csr.o
CC build/soc/esp32/sdio_slave_periph.o
CC build/esp32/spiram.o
CC build/wpa_supplicant/src/crypto/crypto_internal-rsa.o
CC build/lwip/port/esp32/freertos/sys_arch.o
CC build/esp32/lib_printf.o
CC build/openssl/platform/ssl_port.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.o
CC build/mbedtls/mbedtls/library/base64.o
CC build/libsodium/port/randombytes_esp32.o
CC build/mbedtls/mbedtls/library/x509_crl.o
CC build/mbedtls/mbedtls/library/ecdsa.o
CC build/mbedtls/mbedtls/library/pkcs11.o
CC build/esp32/coexist.o
CC build/soc/esp32/spi_periph.o
CC build/mbedtls/mbedtls/library/debug.o
CC build/libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox_easy.o
CC build/soc/esp32/rtc_periph.o
CC build/mbedtls/mbedtls/library/aesni.o
CC build/soc/esp32/rtc_init.o
CC build/mbedtls/mbedtls/library/camellia.o
CC build/mbedtls/mbedtls/library/pkcs5.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_server.o
CC build/mbedtls/mbedtls/library/ssl_cli.o
CC build/lwip/lwip/src/netif/slipif.o
CC build/wpa_supplicant/src/wpa2/tls/pkcs1.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_client_write.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_client_read.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_client.o
CC build/wpa_supplicant/src/crypto/aes-unwrap.o
CC build/mbedtls/mbedtls/library/dhm.o
CC build/wpa_supplicant/src/wpa2/tls/asn1.o
CC build/mbedtls/mbedtls/library/ssl_tls.o
CC build/soc/src//memory_layout_utils.o
CC build/mbedtls/mbedtls/library/arc4.o
CC build/libsodium/port/crypto_hash_mbedtls/crypto_hash_sha512_mbedtls.o
CC build/mbedtls/mbedtls/library/des.o
CC build/esp32/pm_esp32.o
CC build/libsodium/libsodium/src/libsodium/randombytes/randombytes.o
CC build/mbedtls/mbedtls/library/asn1parse.o
CC build/mbedtls/mbedtls/library/cmac.o
CC build/mbedtls/mbedtls/library/aria.o
CC build/esp32/stack_check.o
CC build/mbedtls/mbedtls/library/x509write_crt.o
CC build/esp32/sleep_modes.o
CC build/libsodium/libsodium/src/libsodium/sodium/utils.o
CC build/mbedtls/mbedtls/library/timing.o
CC build/mbedtls/mbedtls/library/error.o
CC build/mbedtls/mbedtls/library/pk_wrap.o
CC build/mbedtls/mbedtls/library/ecjpake.o
CC build/mbedtls/mbedtls/library/ccm.o
CC build/mbedtls/port/esp_sha256.o
CC build/esp32/ets_timer_legacy.o
CC build/wpa_supplicant/src/crypto/ms_funcs.o
CC build/mbedtls/port/esp_sha1.o
CC build/libsodium/port/crypto_hash_mbedtls/crypto_hash_sha256_mbedtls.o
CC build/wpa_supplicant/src/crypto/crypto_internal.o
CC build/esp32/reset_reason.o
CC build/lwip/apps/ping/ping.o
CC build/lwip/lwip/src/api/api_lib.o
CC build/soc/esp32/rtc_clk.o
CC build/mbedtls/mbedtls/library/sha512.o
CC build/wpa_supplicant/src/crypto/des-internal.o
CC build/esp32/esp_timer.o
CC build/wpa_supplicant/src/crypto/sha256-internal.o
CC build/wpa_supplicant/src/crypto/sha1.o
CC build/lwip/apps/dhcpserver/dhcpserver.o
CC build/mbedtls/port/esp_bignum.o
CC build/mbedtls/mbedtls/library/bignum.o
CC build/lwip/lwip/src/api/netbuf.o
CC build/mbedtls/mbedtls/library/ecp_curves.o
CC build/wpa_supplicant/src/crypto/sha1-pbkdf2.o
CC build/mbedtls/mbedtls/library/hmac_drbg.o
CC build/mbedtls/mbedtls/library/certs.o
CC build/mbedtls/port/net_sockets.o
CC build/lwip/port/esp32/netif/dhcp_state.o
CC build/wpa_supplicant/src/crypto/aes-internal-enc.o
CC build/wpa_supplicant/src/crypto/aes-internal-dec.o
CC build/mbedtls/mbedtls/library/ssl_cookie.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_tls_common.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_server_read.o
CC build/lwip/lwip/src/api/netdb.o
CC build/esp32/ipc.o
CC build/lwip/lwip/src/api/netifapi.o
CC build/wpa_supplicant/src/fast_crypto/fast_crypto_internal-modexp.o
CC build/libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.o
CC build/mbedtls/port/mbedtls_debug.o
CC build/esp32/brownout.o
CC build/esp32/esp_err_to_name.o
CC build/lwip/apps/ping/esp_ping.o
CC build/mbedtls/port/esp_sha512.o
CC build/lwip/apps/sntp/sntp.o
CC build/wifi_provisioning/proto-c/wifi_config.pb-c.o
CC build/wpa_supplicant/src/crypto/sha1-internal.o
CC build/esp32/pm_locks.o
CC build/esp32/restore.o
CC build/wifi_provisioning/proto-c/wifi_constants.pb-c.o
CC build/esp32/intr_alloc.o
CC build/mbedtls/port/esp_mem.o
CC build/lwip/lwip/src/core/init.o
CC build/wpa_supplicant/src/crypto/rc4.o
CC build/esp32/wifi_init.o
CC build/mbedtls/mbedtls/library/sha1.o
CC build/wpa_supplicant/src/crypto/crypto_internal-cipher.o
CC build/lwip/lwip/src/core/tcp_in.o
CC build/lwip/lwip/src/core/memp.o
CC build/wpa_supplicant/port/os_xtensa.o
CC build/lwip/lwip/src/api/tcpip.o
CC build/lwip/lwip/src/core/timeouts.o
CC build/wpa_supplicant/src/crypto/bignum.o
CC build/wpa_supplicant/src/wpa2/tls/pkcs5.o
CC build/wpa_supplicant/src/wpa2/tls/bignum.o
CC build/lwip/lwip/src/core/stats.o
CC build/wpa_supplicant/src/fast_crypto/fast_aes-wrap.o
CC build/lwip/lwip/src/core/def.o
CC build/lwip/lwip/src/core/mem.o
CC build/wpa_supplicant/src/crypto/aes-cbc.o
CC build/wpa_supplicant/src/crypto/md5.o
CC build/lwip/lwip/src/core/raw.o
CC build/lwip/lwip/src/core/dns.o
AS build/esp32/dport_panic_highint_hdl.o
CC build/esp32/hwcrypto/aes.o
CC build/lwip/lwip/src/core/ipv4/ip4_addr.o
CC build/mbedtls/mbedtls/library/pk.o
CC build/mbedtls/port/esp_hardware.o
CC build/lwip/lwip/src/core/tcp_out.o
CC build/wpa_supplicant/src/crypto/md5-internal.o
CC build/wpa_supplicant/src/crypto/sha256.o
CC build/lwip/lwip/src/core/tcp.o
CC build/esp32/esp_himem.o
CC build/lwip/lwip/src/core/inet_chksum.o
CC build/wpa_supplicant/src/fast_crypto/fast_crypto_internal.o
CC build/lwip/lwip/src/core/ipv4/dhcp.o
CC build/wpa_supplicant/src/crypto/crypto_internal-modexp.o
CC build/esp32/hwcrypto/sha.o
CC build/wpa_supplicant/src/crypto/dh_group5.o
CC build/lwip/lwip/src/core/ipv4/igmp.o
CC build/lwip/lwip/src/core/pbuf.o
CC build/wpa_supplicant/src/fast_crypto/fast_aes-cbc.o
CC build/lwip/lwip/src/core/ipv4/ip4_frag.o
CC build/wpa_supplicant/src/crypto/md4-internal.o
CC build/wpa_supplicant/src/crypto/crypto_mbedtls.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_peap_common.o
CC build/wpa_supplicant/src/fast_crypto/fast_sha256-internal.o
CC build/lwip/lwip/src/core/ip.o
CC build/lwip/lwip/src/core/ipv6/ip6.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_peap.o
CC build/lwip/lwip/src/core/ipv6/ethip6.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_tls.o
CC build/lwip/lwip/src/api/err.o
CC build/mbedtls/mbedtls/library/x509_csr.o
CC build/lwip/lwip/src/core/ipv6/nd6.o
CC build/lwip/port/esp32/netif/wlanif.o
CC build/lwip/lwip/src/netif/ethernet.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_common.o
CC build/mbedtls/mbedtls/library/pkcs12.o
CC build/lwip/lwip/src/core/ipv4/ip4.o
CC build/lwip/lwip/src/core/ipv4/icmp.o
CC build/wpa_supplicant/src/crypto/dh_groups.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_common.o
CC build/soc/esp32/rtc_sleep.o
CC build/lwip/port/esp32/vfs_lwip.o
CC build/lwip/lwip/src/core/ipv6/icmp6.o
CC build/lwip/lwip/src/core/ipv6/ip6_frag.o
CC build/lwip/lwip/src/netif/ethernetif.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_record.o
CC build/lwip/lwip/src/api/api_msg.o
CC build/lwip/lwip/src/netif/lowpan6.o
CC build/lwip/lwip/src/core/ipv6/inet6.o
CC build/wpa_supplicant/src/wpa2/eap_peer/eap_ttls.o
CC build/lwip/lwip/src/core/sys.o
CC build/lwip/lwip/src/core/ipv6/ip6_addr.o
CC build/lwip/port/esp32/netif/ethernetif.o
CC build/wpa_supplicant/src/wpa2/tls/rsa.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_server_write.o
CC build/wpa_supplicant/src/wpa2/tls/x509v3.o
CC build/wpa_supplicant/src/wpa2/tls/tlsv1_cred.o
CC build/lwip/lwip/src/core/ipv6/mld6.o
CC build/lwip/lwip/src/core/ipv6/dhcp6.o
CC build/lwip/lwip/src/api/sockets.o
CC build/lwip/port/esp32/debug/lwip_debug.o
CC build/lwip/lwip/src/apps/sntp/sntp.o
CC build/wpa_supplicant/src/wpa2/tls/tls_internal.o
CC build/wpa_supplicant/src/wpa2/utils/ext_password.o
CC build/wpa_supplicant/src/wpa2/utils/base64.o
CC build/wpa_supplicant/src/wps/eap_common.o
CC build/wpa_supplicant/src/wps/wps_enrollee.o
CC build/wpa_supplicant/src/wps/wps_attr_process.o
CC build/wpa_supplicant/src/wps/wps_attr_parse.o
CC build/wpa_supplicant/src/wps/wps.o
CC build/wpa_supplicant/src/wps/wps_validate.o
CC build/wpa_supplicant/src/wps/wps_common.o
CC build/wpa_supplicant/src/wps/wps_registrar.o
CC build/wpa_supplicant/src/wps/wps_dev_attr.o
CC build/wpa_supplicant/src/wps/wps_attr_build.o
CC build/wpa_supplicant/src/wps/uuid.o
AR build/bt/libbt.a
Generating libbt.a.sections_info
Python requirements from /opt/esp/idf/requirements.txt are satisfied.
AR build/console/libconsole.a
AR build/main/libmain.a
Building partitions from /opt/esp/idf/components/partition_table/partitions_singleapp.csv...
Generating libconsole.a.sections_info
Generating libmain.a.sections_info
AR build/esp_https_ota/libesp_https_ota.a
AR build/app_trace/libapp_trace.a
AR build/efuse/libefuse.a
Generating libapp_trace.a.sections_info
Generating libesp_https_ota.a.sections_info
AR build/esp_adc_cal/libesp_adc_cal.a
Generating libefuse.a.sections_info
AR build/espcoredump/libespcoredump.a
AR build/ulp/libulp.a
AR build/unity/libunity.a
AR build/xtensa-debug-module/libxtensa-debug-module.a
AR build/heap/libheap.a
AR build/esp_https_server/libesp_https_server.a
AR build/bootloader_support/libbootloader_support.a
AR build/esp_http_client/libesp_http_client.a
AR build/pthread/libpthread.a
AR build/newlib/libnewlib.a
AR build/tcpip_adapter/libtcpip_adapter.a
AR build/smartconfig_ack/libsmartconfig_ack.a
AR build/app_update/libapp_update.a
AR build/libsodium/liblibsodium.a
AR build/esp-tls/libesp-tls.a
AR build/wifi_provisioning/libwifi_provisioning.a
AR build/openssl/libopenssl.a
AR build/log/liblog.a
AR build/esp_event/libesp_event.a
AR build/esp_http_server/libesp_http_server.a
AR build/protocomm/libprotocomm.a
AR build/freemodbus/libfreemodbus.a

AR build/tcp_transport/libtcp_transport.a
AR build/sdmmc/libsdmmc.a
Generating libesp_adc_cal.a.sections_info
AR build/cxx/libcxx.a
AR build/coap/libcoap.a
Generating libbootloader_support.a.sections_info
Generating libesp_http_client.a.sections_info
Generating libapp_update.a.sections_info
Generating libesp_http_server.a.sections_info
Generating libesp_https_server.a.sections_info
Generating libespcoredump.a.sections_info
Generating libesp-tls.a.sections_info
Generating libopenssl.a.sections_info
Generating libheap.a.sections_info
Generating libprotocomm.a.sections_info
Generating liblog.a.sections_info
Generating libnewlib.a.sections_info
Generating libsmartconfig_ack.a.sections_info
Generating liblibsodium.a.sections_info
Generating libxtensa-debug-module.a.sections_info
Generating libwifi_provisioning.a.sections_info
Generating libtcpip_adapter.a.sections_info
Generating libpthread.a.sections_info
Generating libunity.a.sections_info
Generating libulp.a.sections_info
Generating libesp_event.a.sections_info
AR build/spi_flash/libspi_flash.a
Generating libcoap.a.sections_info
Generating libsdmmc.a.sections_info
Generating libfreemodbus.a.sections_info
Generating libtcp_transport.a.sections_info
AR build/esp32/libesp32.a
Generating libcxx.a.sections_info
Generating libspi_flash.a.sections_info
AR build/ethernet/libethernet.a
AR build/vfs/libvfs.a
AR build/freertos/libfreertos.a
Generating libesp32.a.sections_info
AR build/soc/libsoc.a
Generating libethernet.a.sections_info
Generating libvfs.a.sections_info
Generating libfreertos.a.sections_info
Generating libsoc.a.sections_info
AR build/esp_ringbuf/libesp_ringbuf.a
Generating libesp_ringbuf.a.sections_info
AR build/fatfs/libfatfs.a
Generating libfatfs.a.sections_info
AR build/mqtt/libmqtt.a
AR build/wear_levelling/libwear_levelling.a
Generating libmqtt.a.sections_info
Generating libwear_levelling.a.sections_info
CC build/bootloader/spi_flash/spi_flash_rom_patch.o
CC build/bootloader/soc/esp32/cpu_util.o
CC build/bootloader/soc/esp32/rtc_time.o
CC build/bootloader/soc/esp32/rtc_init.o
CC build/bootloader/main/bootloader_start.o
CC build/bootloader/bootloader_support/src/bootloader_flash.o
CC build/bootloader/soc/esp32/rtc_clk_init.o
CC build/bootloader/log/log.o
CC build/bootloader/bootloader_support/src/flash_qio_mode.o
CC build/bootloader/soc/esp32/rtc_sleep.o
CC build/bootloader/bootloader_support/src/secure_boot_signatures.o
CC build/bootloader/soc/esp32/rtc_clk.o
CC build/bootloader/bootloader_support/src/bootloader_init.o
CC build/bootloader/efuse/esp32/esp_efuse_table.o
CC build/bootloader/soc/src//memory_layout_utils.o
CC build/bootloader/efuse/src/esp_efuse_api.o
CC build/bootloader/efuse/src/esp_efuse_utility.o
CC build/bootloader/bootloader_support/src/bootloader_utility.o
CC build/bootloader/bootloader_support/src/bootloader_common.o
CC build/bootloader/bootloader_support/src/bootloader_clock.o
CC build/bootloader/efuse/src/esp_efuse_fields.o
CC build/bootloader/bootloader_support/src/esp_image_format.o
CC build/bootloader/bootloader_support/src/bootloader_sha.o
CC build/bootloader/bootloader_support/src/flash_partitions.o
CC build/bootloader/bootloader_support/src/bootloader_flash_config.o
CC build/bootloader/bootloader_support/src/bootloader_random.o
CC build/bootloader/bootloader_support/src/flash_encrypt.o
AR build/wpa_supplicant/libwpa_supplicant.a
CC build/bootloader/bootloader_support/src/secure_boot.o
Generating libwpa_supplicant.a.sections_info
AR build/spiffs/libspiffs.a
Generating libspiffs.a.sections_info
AR build/bootloader/main/libmain.a
AR build/bootloader/log/liblog.a
AR build/driver/libdriver.a
AR build/bootloader/spi_flash/libspi_flash.a
Generating libdriver.a.sections_info
AR build/bootloader/efuse/libefuse.a
AR build/bootloader/soc/libsoc.a
AR build/bootloader/bootloader_support/libbootloader_support.a
LD build/bootloader/bootloader.elf
AR build/protobuf-c/libprotobuf-c.a
AR build/mbedtls/libmbedtls.a
Generating libprotobuf-c.a.sections_info
Generating libmbedtls.a.sections_info
AR build/lwip/liblwip.a
Generating liblwip.a.sections_info
esptool.py v2.8
AR build/nvs_flash/libnvs_flash.a
Generating libnvs_flash.a.sections_info
AR build/nghttp/libnghttp.a
Generating libnghttp.a.sections_info
AR build/expat/libexpat.a
Generating libexpat.a.sections_info
AR build/mdns/libmdns.a
Generating libmdns.a.sections_info
AR build/asio/libasio.a
Generating libasio.a.sections_info
Generating esp32.project.ld
LD build/hello-world.elf
esptool.py v2.8
Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000)...
esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:0a:c4:9c:b0:98
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0220
Compressed 25584 bytes to 15255...
Wrote 25584 bytes (15255 compressed) at 0x00001000 in 1.3 seconds (effective 152.1 kbit/s)...
Hash of data verified.
Compressed 151072 bytes to 72618...
Wrote 151072 bytes (72618 compressed) at 0x00010000 in 6.4 seconds (effective 188.4 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 103...
Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (effective 1629.1 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
MONITOR
--- idf_monitor on /dev/ttyUSB0 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x3f (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:6704
ho 0 tail 12 room 4
load:0x40078000,len:12072
ho 0 tail 12 room 4
load:0x40080400,len:6708
entry 0x40080778
I (75) boot: Chip Revision: 1
I (75) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (42) boot: ESP-IDF v3.3.1 2nd stage bootloader
I (42) boot: compile time 20:10:55
I (44) boot: Enabling RNG early entropy source...
I (47) boot: SPI Speed      : 40MHz
I (51) boot: SPI Mode       : DIO
I (55) boot: SPI Flash Size : 4MB
I (59) boot: Partition Table:
I (63) boot: ## Label            Usage          Type ST Offset   Length
I (70) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (77) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (85) boot:  2 factory          factory app      00 00 00010000 00100000
I (92) boot: End of partition table
I (97) boot_comm: chip revision: 1, min. application chip revision: 0
I (104) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x07e5c ( 32348) map
I (124) esp_image: segment 1: paddr=0x00017e84 vaddr=0x3ffb0000 size=0x01ea0 (  7840) load
I (127) esp_image: segment 2: paddr=0x00019d2c vaddr=0x40080000 size=0x00400 (  1024) load
0x40080000: _WindowOverflow4 at /opt/esp/idf/components/freertos/xtensa_vectors.S:1779

I (133) esp_image: segment 3: paddr=0x0001a134 vaddr=0x40080400 size=0x05edc ( 24284) load
I (152) esp_image: segment 4: paddr=0x00020018 vaddr=0x400d0018 size=0x12cb0 ( 76976) map
0x400d0018: _flash_cache_start at ??:?

I (179) esp_image: segment 5: paddr=0x00032cd0 vaddr=0x400862dc size=0x02128 (  8488) load
0x400862dc: prvGetNextExpireTime at /opt/esp/idf/components/freertos/timers.c:327

I (188) boot: Loaded app from partition at offset 0x10000
I (188) boot: Disabling RNG early entropy source...
I (191) cpu_start: Pro cpu up.
I (194) cpu_start: Application information:
I (199) cpu_start: Project name:     hello-world
I (205) cpu_start: App version:      1
I (209) cpu_start: Compile time:     Feb 17 2020 20:10:52
I (215) cpu_start: ELF file SHA256:  9135d5b140877d2f...
I (221) cpu_start: ESP-IDF:          v3.3.1
I (226) cpu_start: Starting app cpu, entry point is 0x40081228
0x40081228: call_start_cpu1 at /opt/esp/idf/components/esp32/cpu_start.c:269

I (0) cpu_start: App cpu up.
I (236) heap_init: Initializing. RAM available for dynamic allocation:
I (243) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (249) heap_init: At 3FFB2EC0 len 0002D140 (180 KiB): DRAM
I (255) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (262) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (268) heap_init: At 40088404 len 00017BFC (94 KiB): IRAM
I (274) cpu_start: Pro cpu start user code
I (293) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
Hello world!
This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE, silicon revision 1, 4MB external flash
Restarting in 10 seconds...
Restarting in 9 seconds...
Restarting in 8 seconds...
@github-actions github-actions bot changed the title Docker image rebuilds all every time, doesn't do incremental build Docker image rebuilds all every time, doesn't do incremental build (IDFGH-2720) Feb 17, 2020
@igrr
Copy link
Member

igrr commented Feb 17, 2020

Unfortunately this is related to the fact that in Make build system, Kconfig tools are built in the ESP-IDF directory, not in the project build directory. Therefore the conf binary gets rebuilt every time you start the build in a container. Since sdkconfig and sdkconfig.h are its dependencies, they get rebuilt as well, and because of them, all the project sources get rebuilt.

This problem (kconfig tools built in IDF directory) is solved in the CMake build system. If you are starting a new project, I would recommend starting with CMake.

If that is not an option, you can start a named container (and without the --rm flag), and then execute the build in the running container using docker exec.

@ftab
Copy link
Author

ftab commented Feb 17, 2020

@igrr Thanks so much for the quick response!

I'd love to use CMake instead, but it looks like ESP-ADF hasn't been updated for it (or at least some examples aren't).

I have esp-idf and esp-adf natively on my main machine so I've tried that before messing with the Docker image further, but I get errors trying to do idf.py build on esp-adf/examples/get-started/pipeline_a2dp_sink_and_hfp with either esp-adf master or v2.0-beta2

This is the one my current project is most like.

Running the named container, how would that look? I tried this but didn't get very far

docker run --name idf -it -v $PWD:/project -w /project --device=/dev/ttyUSB0 espressif/idf:v3.3.1

I get to a bash terminal and can build and flash it once through make -j flash monitor, but I've got to stay in the container. It stops the container when I exit. If I try docker start idf I can't exec in after the fact.

build@build:~/esp/hello_world$ docker start idf
idf
build@build:~/esp/hello_world$ docker exec -it idf make -j flash monitor
make: xtensa-esp32-elf-gcc: Command not found
expr: syntax error
/bin/sh: 1: xtensa-esp32-elf-gcc: not found
/bin/sh: 1: xtensa-esp32-elf-gcc: not found
Toolchain path: 
WARNING: Failed to find Xtensa toolchain, may need to alter PATH or set one in the configuration menu
Project is not inside a git repository, will not use 'git describe' to determine PROJECT_VER.
App "hello-world" version: 1
make[1]: xtensa-esp32-elf-gcc: Command not found
expr: syntax error
The following Python requirements are not satisfied:
pyserial>=3.0
future>=0.15.2
pyparsing>=2.0.3,<2.4.0
Please refer to the Get Started section of the ESP-IDF Programming Guide for setting up the required packages.
Alternatively, you can run "/usr/bin/python -m pip install --user -r /opt/esp/idf/requirements.txt" for resolving the issue.
/opt/esp/idf/make/project.mk:501: recipe for target 'check_python_dependencies' failed
make: *** [check_python_dependencies] Error 1
make: *** Waiting for unfinished jobs....
/bin/sh: 1: xtensa-esp32-elf-gcc: not found
/bin/sh: 1: xtensa-esp32-elf-gcc: not found
WARNING: Failed to find Xtensa toolchain, may need to alter PATH or set one in the configuration menu

Similar path-style issues with idf.py

build@build:~/esp/hello_world$ docker start idf
idf
build@build:~/esp/hello_world$ docker exec -it idf idf.py build flash monitor
OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused "exec: \"idf.py\": executable file not found in $PATH": unknown

Did I do that wrong?

@igrr
Copy link
Member

igrr commented Feb 17, 2020

Ah, I see, the entry point script doesn't get executed when doing docker exec... Okay, as another option, you may try to mount a named volume into the /opt/esp/idf/tools/kconfig of the container. The first time the empty volume is mounted, it will be initialized with the data from the container. To do this, add another -v argument -v kconfig:/opt/esp/idf/tools/kconfig to your original docker run command.

@igrr
Copy link
Member

igrr commented Feb 18, 2020

I've tested the following and it seems to work:

docker run --rm -it -v $PWD:/project -v kconfig:/opt/esp/idf/tools/kconfig -w /project espressif/idf make

Will add this recipe to the documentation.

@ftab
Copy link
Author

ftab commented Feb 18, 2020

Yep, that seems to do the trick!

With /dev/ttyUSB0 hooked up:

docker run --rm -it -v $PWD:/project -v kconfig:/opt/esp/idf/tools/kconfig -w /project --device=/dev/ttyUSB0 espressif/idf:v3.3.1 make -j flash monitor

Subsequent runs just flash and monitor.

I've also tested this with my custom combined IDF/ADF image and verified it works with make -j flash monitor and make monitor

I will try to update my project with cmake so I can just use idf.py build flash monitor

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants