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

Unable to build with extra component esp-camera #371

Closed
Geostartico opened this issue Feb 12, 2025 · 6 comments
Closed

Unable to build with extra component esp-camera #371

Geostartico opened this issue Feb 12, 2025 · 6 comments
Labels
bug Something isn't working

Comments

@Geostartico
Copy link

Bug description

I have been trying to build the template generated by esp-generate by only adding the necessary code in the toml to compile with the extra component esp-camera, however it doesn't find the xtensa toolchain

To Reproduce

cargo.toml:

[package]
edition = "2021"
name    = "rust_camera_extra_component"
version = "0.1.0"

[[bin]]
name = "rust_camera_extra_component"
path = "./src/bin/main.rs"

[dependencies]
critical-section = "1.2.0"
esp-backtrace = { version = "0.15.0", features = [
  "esp32",
  "exception-handler",
  "panic-handler",
  "println",
] }
esp-hal = { version = "0.23.1", features = ["esp32", "unstable"] }
esp-idf-sys = { version = "0.36.1", default-features = false, features = ["binstart", "native"]}
esp-println = { version = "0.13.0", features = ["esp32", "log"] }
log = { version = "0.4.21" }

[profile.dev]
# Rust debug is too slow.
# For debug builds always builds with some optimization
opt-level = "s"

[profile.release]
codegen-units    = 1     # LLVM can perform better optimizations using a single thread
debug            = 2
debug-assertions = false
incremental      = false
lto              = 'fat'
opt-level        = 's'
overflow-checks  = false

[[package.metadata.esp-idf-sys.extra_components]]
remote_component = { name = "espressif/esp32-camera", version = "2.0.7" }
bindings_header = "./bindings.h"
bindings_module = "camera"

.cargo/config.toml:

[target.xtensa-esp32-espidf]
runner = "espflash flash --monitor"
linker = "ldproxy"

[env]
ESP_LOG="INFO"

[build]
rustflags = [
  "-C", "link-arg=-nostartfiles",
  "--cfg", "espidf_time64",
  "-C", "default-linker-libraries",
]

target = "xtensa-esp32-espidf"

[unstable]
build-std = ["core"]

error log:

Caused by:
  process didn't exit successfully: `/home/geostartico/Code/rust_camera_extra_component/target/debug/build/esp-idf-sys-4696c2ea08154de5/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-env-changed=ESP_IDF_TOOLS_INSTALL_DIR
  cargo:rerun-if-env-changed=ESP_IDF_SDKCONFIG
  cargo:rerun-if-env-changed=ESP_IDF_SDKCONFIG_DEFAULTS
  cargo:rerun-if-env-changed=MCU
  cargo:rerun-if-env-changed=ESP_IDF_SYS_ROOT_CRATE
  cargo:rerun-if-env-changed=ESP_IDF_VERSION
  cargo:rerun-if-env-changed=ESP_IDF_REPOSITORY
  cargo:rerun-if-env-changed=ESP_IDF_CMAKE_GENERATOR
  cargo:rerun-if-env-changed=IDF_PATH
  cargo:rerun-if-env-changed=EXTRA-COMPONENTS
  cargo:rerun-if-env-changed=ESP_IDF_COMPONENTS
  cargo:rerun-if-env-changed=ESP_IDF_COMPONENT_MANAGER
  CMAKE_PREFIX_PATH_xtensa-esp32-espidf = None
  CMAKE_PREFIX_PATH_xtensa_esp32_espidf = None
  TARGET_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_xtensa-esp32-espidf = None
  CMAKE_xtensa_esp32_espidf = None
  TARGET_CMAKE = None
  CMAKE = None
  running: cd "/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build" && CMAKE_PREFIX_PATH="" EXTRA_COMPONENT_DIRS="" IDF_COMPONENT_MANAGER="1" IDF_PATH="/home/geostartico/Code/esp-idf" IDF_TARGET="esp32" LC_ALL="C" PATH="/home/geostartico/Code/esp-idf/components/espcoredump:/home/geostartico/Code/esp-idf/components/partition_table:/home/geostartico/Code/esp-idf/components/app_update:/home/geostartico/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin:/home/geostartico/.espressif/tools/riscv32-esp-elf-gdb/14.2_20240403/riscv32-esp-elf-gdb/bin:/home/geostartico/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin:/home/geostartico/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20240530/riscv32-esp-elf/bin:/home/geostartico/.espressif/tools/esp32ulp-elf/2.38_20240113/esp32ulp-elf/bin:/home/geostartico/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/bin:/home/geostartico/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin:/home/geostartico/.espressif/tools/riscv32-esp-elf-gdb/14.2_20240403/riscv32-esp-elf-gdb/bin:/home/geostartico/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin:/home/geostartico/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20240530/riscv32-esp-elf/bin:/home/geostartico/.espressif/tools/esp32ulp-elf/2.38_20240113/esp32ulp-elf/bin:/home/geostartico/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/bin:/home/geostartico/.espressif/python_env/idf5.3_py3.13_env/bin:/home/geostartico/Code/esp-idf/tools:/home/geostartico/.rustup/toolchains/esp/xtensa-esp-elf/esp-14.2.0_20240906/xtensa-esp-elf/bin:/home/geostartico/.cargo/bin:/home/geostartico/perl5/bin:/home/geostartico/.pyenv/shims:/home/geostartico/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/rustup/bin:/home/geostartico/.fzf/bin:/home/geostartico/.local/share/gem/ruby/3.0.0/bin:/usr/bin/elixir:/usr/lib/elixir-ls/language_server.sh" PROJECT_DIR="/home/geostartico/Code/rust_camera_extra_component" SDKCONFIG_DEFAULTS="/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/gen-sdkconfig.defaults" "cmake" "/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out" "-G" "Ninja" "-DCMAKE_TOOLCHAIN_FILE=/home/geostartico/Code/esp-idf/tools/cmake/toolchain-esp32.cmake" "-DCMAKE_BUILD_TYPE=" "-DPYTHON=/home/geostartico/.espressif/python_env/idf5.3_py3.13_env/bin/python" "-DCMAKE_INSTALL_PREFIX=/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out" "-DCMAKE_C_FLAGS= -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy" "-DCMAKE_CXX_FLAGS= -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy" "-DCMAKE_ASM_FLAGS= -mlongcalls"
  -- git describe returned 'fatal: bad revision 'HEAD''
  -- Could not use 'git describe' to determine PROJECT_VER.
  -- Building ESP-IDF components for target esp32
  -- Checking Python dependencies...
  Python requirements are satisfied.
  Constraint file: /home/geostartico/.espressif/espidf.constraints.v5.3.txt
  Requirement files:
   - /home/geostartico/Code/esp-idf/tools/requirements/requirements.core.txt
  Python being checked: /home/geostartico/.espressif/python_env/idf5.3_py3.13_env/bin/python
  NOTICE: Processing 2 dependencies:
  NOTICE: [1/2] espressif/esp32-camera (2.0.7)
  NOTICE: [2/2] idf (5.3.0)
  -- Project sdkconfig file /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/sdkconfig
  Loading defaults file /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/gen-sdkconfig.defaults...
  /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/gen-sdkconfig.defaults:2 CONFIG_COMPILER_OPTIMIZATION_DEFAULT was replaced with CONFIG_COMPILER_OPTIMIZATION_DEBUG 
  -- Compiler supported targets: xtensa-esp-elf
  -- App "libespidf" version: 1
  -- Adding linker script /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/esp-idf/esp_system/ld/memory.ld
  -- Adding linker script /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/esp-idf/esp_system/ld/sections.ld.in
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
  -- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_cam esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_isp esp_driver_jpeg esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_ppa esp_driver_rmt esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_tsens esp_driver_uart esp_driver_usb_serial_jtag esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_system esp_timer esp_vfs_console esp_wifi espcoredump espressif__esp32-camera esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash nvs_sec_provider openthread partition_table perfmon protobuf-c protocomm pthread sdmmc soc spi_flash spiffs tcp_transport ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa
  -- Component paths: /home/geostartico/Code/esp-idf/components/app_trace /home/geostartico/Code/esp-idf/components/app_update /home/geostartico/Code/esp-idf/components/bootloader /home/geostartico/Code/esp-idf/components/bootloader_support /home/geostartico/Code/esp-idf/components/bt /home/geostartico/Code/esp-idf/components/cmock /home/geostartico/Code/esp-idf/components/console /home/geostartico/Code/esp-idf/components/cxx /home/geostartico/Code/esp-idf/components/driver /home/geostartico/Code/esp-idf/components/efuse /home/geostartico/Code/esp-idf/components/esp-tls /home/geostartico/Code/esp-idf/components/esp_adc /home/geostartico/Code/esp-idf/components/esp_app_format /home/geostartico/Code/esp-idf/components/esp_bootloader_format /home/geostartico/Code/esp-idf/components/esp_coex /home/geostartico/Code/esp-idf/components/esp_common /home/geostartico/Code/esp-idf/components/esp_driver_ana_cmpr /home/geostartico/Code/esp-idf/components/esp_driver_cam /home/geostartico/Code/esp-idf/components/esp_driver_dac /home/geostartico/Code/esp-idf/components/esp_driver_gpio /home/geostartico/Code/esp-idf/components/esp_driver_gptimer /home/geostartico/Code/esp-idf/components/esp_driver_i2c /home/geostartico/Code/esp-idf/components/esp_driver_i2s /home/geostartico/Code/esp-idf/components/esp_driver_isp /home/geostartico/Code/esp-idf/components/esp_driver_jpeg /home/geostartico/Code/esp-idf/components/esp_driver_ledc /home/geostartico/Code/esp-idf/components/esp_driver_mcpwm /home/geostartico/Code/esp-idf/components/esp_driver_parlio /home/geostartico/Code/esp-idf/components/esp_driver_pcnt /home/geostartico/Code/esp-idf/components/esp_driver_ppa /home/geostartico/Code/esp-idf/components/esp_driver_rmt /home/geostartico/Code/esp-idf/components/esp_driver_sdio /home/geostartico/Code/esp-idf/components/esp_driver_sdm /home/geostartico/Code/esp-idf/components/esp_driver_sdmmc /home/geostartico/Code/esp-idf/components/esp_driver_sdspi /home/geostartico/Code/esp-idf/components/esp_driver_spi /home/geostartico/Code/esp-idf/components/esp_driver_tsens /home/geostartico/Code/esp-idf/components/esp_driver_uart /home/geostartico/Code/esp-idf/components/esp_driver_usb_serial_jtag /home/geostartico/Code/esp-idf/components/esp_eth /home/geostartico/Code/esp-idf/components/esp_event /home/geostartico/Code/esp-idf/components/esp_gdbstub /home/geostartico/Code/esp-idf/components/esp_hid /home/geostartico/Code/esp-idf/components/esp_http_client /home/geostartico/Code/esp-idf/components/esp_http_server /home/geostartico/Code/esp-idf/components/esp_https_ota /home/geostartico/Code/esp-idf/components/esp_https_server /home/geostartico/Code/esp-idf/components/esp_hw_support /home/geostartico/Code/esp-idf/components/esp_lcd /home/geostartico/Code/esp-idf/components/esp_local_ctrl /home/geostartico/Code/esp-idf/components/esp_mm /home/geostartico/Code/esp-idf/components/esp_netif /home/geostartico/Code/esp-idf/components/esp_netif_stack /home/geostartico/Code/esp-idf/components/esp_partition /home/geostartico/Code/esp-idf/components/esp_phy /home/geostartico/Code/esp-idf/components/esp_pm /home/geostartico/Code/esp-idf/components/esp_psram /home/geostartico/Code/esp-idf/components/esp_ringbuf /home/geostartico/Code/esp-idf/components/esp_rom /home/geostartico/Code/esp-idf/components/esp_system /home/geostartico/Code/esp-idf/components/esp_timer /home/geostartico/Code/esp-idf/components/esp_vfs_console /home/geostartico/Code/esp-idf/components/esp_wifi /home/geostartico/Code/esp-idf/components/espcoredump /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/managed_components/espressif__esp32-camera /home/geostartico/Code/esp-idf/components/esptool_py /home/geostartico/Code/esp-idf/components/fatfs /home/geostartico/Code/esp-idf/components/freertos /home/geostartico/Code/esp-idf/components/hal /home/geostartico/Code/esp-idf/components/heap /home/geostartico/Code/esp-idf/components/http_parser /home/geostartico/Code/esp-idf/components/idf_test /home/geostartico/Code/esp-idf/components/ieee802154 /home/geostartico/Code/esp-idf/components/json /home/geostartico/Code/esp-idf/components/log /home/geostartico/Code/esp-idf/components/lwip /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/main /home/geostartico/Code/esp-idf/components/mbedtls /home/geostartico/Code/esp-idf/components/mqtt /home/geostartico/Code/esp-idf/components/newlib /home/geostartico/Code/esp-idf/components/nvs_flash /home/geostartico/Code/esp-idf/components/nvs_sec_provider /home/geostartico/Code/esp-idf/components/openthread /home/geostartico/Code/esp-idf/components/partition_table /home/geostartico/Code/esp-idf/components/perfmon /home/geostartico/Code/esp-idf/components/protobuf-c /home/geostartico/Code/esp-idf/components/protocomm /home/geostartico/Code/esp-idf/components/pthread /home/geostartico/Code/esp-idf/components/sdmmc /home/geostartico/Code/esp-idf/components/soc /home/geostartico/Code/esp-idf/components/spi_flash /home/geostartico/Code/esp-idf/components/spiffs /home/geostartico/Code/esp-idf/components/tcp_transport /home/geostartico/Code/esp-idf/components/ulp /home/geostartico/Code/esp-idf/components/unity /home/geostartico/Code/esp-idf/components/usb /home/geostartico/Code/esp-idf/components/vfs /home/geostartico/Code/esp-idf/components/wear_levelling /home/geostartico/Code/esp-idf/components/wifi_provisioning /home/geostartico/Code/esp-idf/components/wpa_supplicant /home/geostartico/Code/esp-idf/components/xtensa
  -- Configuring done (6.2s)
  -- Generating done (0.8s)
  -- Build files have been written to: /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build
  running: cd "/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build" && EXTRA_COMPONENT_DIRS="" IDF_COMPONENT_MANAGER="1" IDF_PATH="/home/geostartico/Code/esp-idf" IDF_TARGET="esp32" LC_ALL="C" PATH="/home/geostartico/Code/esp-idf/components/espcoredump:/home/geostartico/Code/esp-idf/components/partition_table:/home/geostartico/Code/esp-idf/components/app_update:/home/geostartico/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin:/home/geostartico/.espressif/tools/riscv32-esp-elf-gdb/14.2_20240403/riscv32-esp-elf-gdb/bin:/home/geostartico/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin:/home/geostartico/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20240530/riscv32-esp-elf/bin:/home/geostartico/.espressif/tools/esp32ulp-elf/2.38_20240113/esp32ulp-elf/bin:/home/geostartico/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/bin:/home/geostartico/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin:/home/geostartico/.espressif/tools/riscv32-esp-elf-gdb/14.2_20240403/riscv32-esp-elf-gdb/bin:/home/geostartico/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin:/home/geostartico/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20240530/riscv32-esp-elf/bin:/home/geostartico/.espressif/tools/esp32ulp-elf/2.38_20240113/esp32ulp-elf/bin:/home/geostartico/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/bin:/home/geostartico/.espressif/python_env/idf5.3_py3.13_env/bin:/home/geostartico/Code/esp-idf/tools:/home/geostartico/.rustup/toolchains/esp/xtensa-esp-elf/esp-14.2.0_20240906/xtensa-esp-elf/bin:/home/geostartico/.cargo/bin:/home/geostartico/perl5/bin:/home/geostartico/.pyenv/shims:/home/geostartico/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/rustup/bin:/home/geostartico/.fzf/bin:/home/geostartico/.local/share/gem/ruby/3.0.0/bin:/usr/bin/elixir:/usr/lib/elixir-ls/language_server.sh" PROJECT_DIR="/home/geostartico/Code/rust_camera_extra_component" SDKCONFIG_DEFAULTS="/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/gen-sdkconfig.defaults" "cmake" "--build" "/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build" "--config" "MinSizeRel" "--parallel" "4"
  [1/7] Performing build step for 'bootloader'
  [0/1] Re-running CMake...
  -- Building ESP-IDF components for target esp32
  -- Project sdkconfig file /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/sdkconfig
  info: INFO: Symbol IDF_TARGET_LINUX defined in multiple locations (see below). Please check if this is a correct behavior or a random name match:
      /home/geostartico/Code/esp-idf/Kconfig:78
      /home/geostartico/Code/esp-idf/Kconfig:162
  -- Compiler supported targets: xtensa-esp-elf
  -- Adding linker script /home/geostartico/Code/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
  -- Bootloader project name: "bootloader" version: 1
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/bootloader/subproject/main/ld/esp32/bootloader.ld
  -- Adding linker script /home/geostartico/Code/esp-idf/components/bootloader/subproject/main/ld/esp32/bootloader.rom.ld
  -- Components: bootloader bootloader_support efuse esp_app_format esp_bootloader_format esp_common esp_hw_support esp_rom esp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa
  -- Component paths: /home/geostartico/Code/esp-idf/components/bootloader /home/geostartico/Code/esp-idf/components/bootloader_support /home/geostartico/Code/esp-idf/components/efuse /home/geostartico/Code/esp-idf/components/esp_app_format /home/geostartico/Code/esp-idf/components/esp_bootloader_format /home/geostartico/Code/esp-idf/components/esp_common /home/geostartico/Code/esp-idf/components/esp_hw_support /home/geostartico/Code/esp-idf/components/esp_rom /home/geostartico/Code/esp-idf/components/esp_system /home/geostartico/Code/esp-idf/components/esptool_py /home/geostartico/Code/esp-idf/components/freertos /home/geostartico/Code/esp-idf/components/hal /home/geostartico/Code/esp-idf/components/log /home/geostartico/Code/esp-idf/components/bootloader/subproject/main /home/geostartico/Code/esp-idf/components/bootloader/subproject/components/micro-ecc /home/geostartico/Code/esp-idf/components/newlib /home/geostartico/Code/esp-idf/components/partition_table /home/geostartico/Code/esp-idf/components/soc /home/geostartico/Code/esp-idf/components/spi_flash /home/geostartico/Code/esp-idf/components/xtensa
  -- Configuring done (4.3s)
  -- Generating done (0.1s)
  -- Build files have been written to: /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/bootloader
  [1/2] cd /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/bootloader/esp-idf/esptool_py && /home/geostartico/.espressif/python_env/idf5.3_py3.13_env/bin/python /home/geostartico/Code/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x1000 /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/bootloader/bootloader.bin
  Bootloader binary size 0x6880 bytes. 0x780 bytes (7%) free.
  [2/7] No install step for 'bootloader'
  [3/7] Completed 'bootloader'
  [4/7] Generating ld/sections.ld
  info: INFO: Symbol IDF_TARGET_LINUX defined in multiple locations (see below). Please check if this is a correct behavior or a random name match:
      /home/geostartico/Code/esp-idf/Kconfig:162
      /home/geostartico/Code/esp-idf/Kconfig:78
  [5/7] Linking CXX executable libespidf.elf
  [6/7] Generating binary image from built executable
  esptool.py v4.8.1
  Creating esp32 image...
  Merged 2 ELF sections
  Successfully created esp32 image.
  Generated /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/libespidf.bin
  [7/7] cd /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/esp-idf/esptool_py && /home/geostartico/.espressif/python_env/idf5.3_py3.13_env/bin/python /home/geostartico/Code/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/partition_table/partition-table.bin /home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/build/libespidf.bin
  libespidf.bin binary size 0x27aa0 bytes. Smallest app partition is 0x100000 bytes. 0xd8560 bytes (85%) free.
  cargo:root=/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out
  cargo:rerun-if-changed=/home/geostartico/.cargo/registry/src/index.crates.io-6f17d22bba15001f/esp-idf-sys-0.36.1/src/include/esp-idf/bindings.h
  cargo:rustc-env=EMBUILD_GENERATED_BINDINGS_FILE=/home/geostartico/Code/rust_camera_extra_component/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-be972a044e60585d/out/bindings.rs

  --- stderr
  Build configuration: BuildConfig {
      esp_idf_tools_install_dir: None,
      esp_idf_sdkconfig: None,
      esp_idf_sdkconfig_defaults: None,
      mcu: None,
      native: NativeConfig {
          esp_idf_version: Some(
              Tag(
                  "v5.3",
              ),
          ),
          esp_idf_repository: None,
          esp_idf_cmake_generator: None,
          idf_path: Some(
              "/home/geostartico/Code/esp-idf",
          ),
          extra_components: [
              ExtraComponent {
                  component_dirs: [],
                  remote_component: Some(
                      RemoteComponent {
                          name: "espressif/esp32-camera",
                          version: "2.0.7",
                          git: None,
                          path: None,
                          service_url: None,
                      },
                  ),
                  bindings_header: Some(
                      "./bindings.h",
                  ),
                  bindings_module: Some(
                      "camera",
                  ),
                  manifest_dir: "/home/geostartico/Code/rust_camera_extra_component",
              },
          ],
          esp_idf_components: None,
          esp_idf_component_manager: None,
      },
      esp_idf_sys_root_crate: None,
  }
  Using activated esp-idf v5.3.0 environment at '/home/geostartico/Code/esp-idf'
  info: INFO: Symbol IDF_TARGET_LINUX defined in multiple locations (see below). Please check if this is a correct behavior or a random name match:
      /home/geostartico/Code/esp-idf/Kconfig:78
      /home/geostartico/Code/esp-idf/Kconfig:162
  CMake Deprecation Warning at /home/geostartico/Code/esp-idf/components/mbedtls/mbedtls/CMakeLists.txt:21 (cmake_minimum_required):
    Compatibility with CMake < 3.10 will be removed from a future version of
    CMake.

    Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
    to tell CMake that the project requires at least <min> but has been updated
    to work with policies introduced by <max> or earlier.


  Built components: xtensa, esp_driver_gpio, esp_pm, mbedtls, bootloader, esptool_py, partition_table, esp_app_format, esp_bootloader_format, app_update, esp_partition, efuse, bootloader_support, esp_mm, spi_flash, esp_system, esp_common, esp_rom, hal, log, heap, soc, esp_hw_support, freertos, newlib, pthread, cxx, esp_timer, esp_driver_gptimer, esp_ringbuf, esp_driver_uart, app_trace, esp_event, nvs_flash, esp_driver_pcnt, esp_driver_spi, esp_driver_mcpwm, esp_driver_ana_cmpr, esp_driver_i2s, sdmmc, esp_driver_sdmmc, esp_driver_sdspi, esp_driver_sdio, esp_driver_dac, esp_driver_rmt, esp_driver_tsens, esp_driver_sdm, esp_driver_i2c, esp_driver_ledc, esp_driver_parlio, esp_driver_usb_serial_jtag, driver, esp_phy, esp_vfs_console, vfs, lwip, esp_netif_stack, esp_netif, wpa_supplicant, esp_coex, esp_wifi, bt, unity, cmock, console, http_parser, esp-tls, esp_adc, esp_driver_isp, esp_driver_cam, esp_driver_jpeg, esp_driver_ppa, esp_eth, esp_gdbstub, esp_hid, tcp_transport, esp_http_client, esp_http_server, esp_https_ota, esp_https_server, esp_psram, esp_lcd, protobuf-c, protocomm, esp_local_ctrl, espcoredump, wear_levelling, fatfs, idf_test, ieee802154, json, mqtt, nvs_sec_provider, openthread, perfmon, spiffs, ulp, usb, wifi_provisioning, espressif__esp32-camera, main
  error: unknown target triple 'xtensa'
  thread 'main' panicked at /home/geostartico/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-0.71.1/ir/context.rs:564:15:
  libclang error; possible causes include:
  - Invalid flag syntax
  - Unrecognized flags
  - Invalid flag arguments
  - File I/O errors
  - Host vs. target architecture mismatch
  If you encounter an error missing from this list, please file an issue or a PR!
  stack backtrace:
     0:     0x5b91f3c753ad - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h40cbc23d08e75e6e
     1:     0x5b91f3cc42b3 - core::fmt::write::h72fc263e3921d63f
     2:     0x5b91f3c90309 - std::io::Write::write_fmt::hcc7d2e8b9f0383e4
     3:     0x5b91f3c75253 - std::sys::backtrace::BacktraceLock::print::h367a3039ffa34de4
     4:     0x5b91f3c86f8c - std::panicking::default_hook::{{closure}}::hf80ab8b2a023b306
     5:     0x5b91f3c86de7 - std::panicking::default_hook::h9db288fb5581d6c3
     6:     0x5b91f3c87492 - std::panicking::rust_panic_with_hook::h81634076ecf27e23
     7:     0x5b91f3c758ea - std::panicking::begin_panic_handler::{{closure}}::hc739c40ce3082128
     8:     0x5b91f3c755b9 - std::sys::backtrace::__rust_end_short_backtrace::h1aa68d986880e1b9
     9:     0x5b91f3c8706c - rust_begin_unwind
    10:     0x5b91f3ccfe80 - core::panicking::panic_fmt::ha0d34e63f154cecc
    11:     0x5b91f3cce15b - core::option::expect_failed::h2dd9721d39b24bc6
    12:     0x5b91f35fe827 - core::option::Option<T>::expect::h57cfefb061367f44
                                 at /home/rust/rust/library/core/src/option.rs:933:21
    13:     0x5b91f3522b60 - bindgen::ir::context::BindgenContext::new::h9f457930790683ce
                                 at /home/geostartico/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-0.71.1/ir/context.rs:558:13
    14:     0x5b91f36a01e1 - bindgen::Bindings::generate::h34155f39a4fd37fa
                                 at /home/geostartico/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-0.71.1/lib.rs:887:27
    15:     0x5b91f369d517 - bindgen::Builder::generate::h64e0c016f2b4341c
                                 at /home/geostartico/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-0.71.1/lib.rs:364:9
    16:     0x5b91f31be916 - build_script_build::main::h48e8d3e00ac60b71
                                 at /home/geostartico/.cargo/registry/src/index.crates.io-6f17d22bba15001f/esp-idf-sys-0.36.1/build/build.rs:150:5
    17:     0x5b91f31b575b - core::ops::function::FnOnce::call_once::hf799cfa751f350d0
                                 at /home/rust/rust/library/core/src/ops/function.rs:250:5
    18:     0x5b91f31a311d - std::sys::backtrace::__rust_begin_short_backtrace::h7d2fdd8ca2d8e404
                                 at /home/rust/rust/library/std/src/sys/backtrace.rs:154:18
    19:     0x5b91f318c131 - std::rt::lang_start::{{closure}}::h44cc670a7e9bd587
                                 at /home/rust/rust/library/std/src/rt.rs:195:18
    20:     0x5b91f3c8db2d - std::rt::lang_start_internal::h02482bb66f5a6077
    21:     0x5b91f318c10a - std::rt::lang_start::h4cc8a013b8811573
                                 at /home/rust/rust/library/std/src/rt.rs:194:17
    22:     0x5b91f31c13ee - main
    23:     0x7617cff5d488 - <unknown>
    24:     0x7617cff5d54c - __libc_start_main
    25:     0x5b91f3170f35 - _start
    26:                0x0 - <unknown>
warning: build failed, waiting for other jobs to finish...

Environment

ESP-IDF v5.3
toolchain installed from through espup

  • Target device (MCU): esp32 (in the path the following commands for xtensa-esp32 are present:
    xtensa-esp32-elf-addr2line xtensa-esp32-elf-gcc-14.2.0 xtensa-esp32-elf-lto-dump
    xtensa-esp32-elf-ar xtensa-esp32-elf-gcc-ar xtensa-esp32-elf-nm
    xtensa-esp32-elf-as xtensa-esp32-elf-gcc-nm xtensa-esp32-elf-objcopy
    xtensa-esp32-elf-c++ xtensa-esp32-elf-gcc-ranlib xtensa-esp32-elf-objdump
    xtensa-esp32-elf-cc xtensa-esp32-elf-gcov xtensa-esp32-elf-ranlib
    xtensa-esp32-elf-c++filt xtensa-esp32-elf-gcov-dump xtensa-esp32-elf-readelf
    xtensa-esp32-elf-cpp xtensa-esp32-elf-gcov-tool xtensa-esp32-elf-size
    xtensa-esp32-elf-elfedit xtensa-esp32-elf-gdb xtensa-esp32-elf-strings
    xtensa-esp32-elf-g++ xtensa-esp32-elf-gprof xtensa-esp32-elf-strip
    xtensa-esp32-elf-gcc xtensa-esp32-elf-ld
    xtensa-esp32-elf-gcc-13.2.0 xtensa-esp32-elf-ld.bfd )

  • OS: EndeavourOS x86_64 Linux 6.13.1-zen3-1-zen

@Geostartico Geostartico added the bug Something isn't working label Feb 12, 2025
@Vollbrecht
Copy link
Collaborator

Don't mix esp-hal and esp-idf-sys. They are separate projects, e.g esp-hal is standalone baremetall, and esp-idf-sys is running on-top of FreeRTOS using the esp-idf sdk.

@Geostartico
Copy link
Author

Don't mix esp-hal and esp-idf-sys. They are separate projects, e.g esp-hal is standalone baremetall, and esp-idf-sys is running on-top of FreeRTOS using the esp-idf sdk.

ok but even removing the esp-hal dependency doesn't solve the issue

@Vollbrecht
Copy link
Collaborator

same goes for esp-println and esp-backtrace. Also what is your reasoning for providing nostartfiles and default linker libraries as rustflags?

@Vollbrecht
Copy link
Collaborator

Ah you did not use the esp-idf-template in the first place but the esp generate tool? Yeah please use the esp-idf-template as a base. Than just adding the esp-camera module should get you the bindings.

@Geostartico
Copy link
Author

Yea that was the issue, thanks for the help. just out of pure curiosity, how do i know which function is std-only in esp-idf-svc?

@github-project-automation github-project-automation bot moved this from Todo to Done in esp-rs Feb 13, 2025
@ivmarkov
Copy link
Collaborator

just out of pure curiosity, how do i know which function is std-only in esp-idf-svc?

It does not make any sense to use esp-idf-svc without STD. If you use esp-idf-svc, then you can assume STD is available, and then that's actually the way to use threads, network IO and filesystem IO in your Rust firmware (via the Rust STD API).

alloc is also available (Strings, Vecs and such) but you need to be careful not to overuse it as that will bring unpredictability in your firmware.

What is NOT allowed / wrong is to mix the esp-idf-svc HAL (and its companion crates, esp-idf-hal and esp-idf-sys) - which sit on top of the ESP IDF C framework - with the "baremetal" esp-hal HAL, and with its companion crates, like esp-println, esp-backtrace and esp-wifi which do NOT sit on top of the ESP-IDF C framework and operate the hardware directly.

You have to choose ONE framework (ESP-IDF, and thus STD) OR the other (no ESP-IDF and no STD as esp-hal has no STD support, so multitasking, network IO and filesystem IO are done using other means), but you cannot use both (for now, and likely forever).

Usually choosing one or the other is deciding on the trade-off between having more drivers or a need to interop with an existing C codebase (ESP-IDF) vs more "pure Rust" and less memory and flash size consumption (esp-hal). esp-hal is also an Espressif-sponsored project with a bunch of FTEs assigned to it, while esp-idf-* is a community project.

Once you choose ESP-IDF or baremetal however, you can still use most of the generic crates from the Embassy echosystem if you want to go async. As well as (for ESP-IDF specifically) some low-footprint generic STD-only crates.

Using generic no_std crates like - say - serde_json_core is possible with both of course.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Archived in project
Development

No branches or pull requests

3 participants