Code Monkey home page Code Monkey logo

embuild's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

embuild's Issues

Conditional compilation issue in mixed Rust/C project

I created a project according to the instructions in https://github.com/esp-rs/esp-idf-template/blob/master/README-cmake.md. It's a mixed Rust/C ESP-IDF project driven by idf.py and CMake.

Then I found that I could not use some mods such as esp_idf_svc::netif. And this is because embuild did not provide some necessary cfg conditions in the build script build.rs.

For example, esp_idf_svc::netif requires the condition esp_idf_comp_esp_netif_enabled:

// from esp-idf-svc/src/lib.rs
#[cfg(all(feature = "alloc", esp_idf_comp_esp_netif_enabled))]
pub mod netif;

And embuild::build::CfgArgs::output_propagated("ESP_IDF") in the build script doesn't provide it. But in a pure Rust project, this condition will be provided.

I wonder if this is intentional. Also, is there any way to enable mods like esp_idf_svc::netif in a mixed project?

embuild fails to compile with Rust 1.57 or older

If embuild is compiled with:

  • Rust toolchain version 1.57 or older
  • the espidf feature enabled

then compilation fails with:

% cargo build --features espidf
# .. snip
   Compiling embuild v0.29.1 (/Users/kevin/src/embuild)
error: there is no argument named `IDF_PATH_VAR`
   --> src/espidf.rs:140:65
    |
140 |             FromEnvError::NoRepo(anyhow!("environment variable `{IDF_PATH_VAR}` not found"))
    |                                                                 ^^^^^^^^^^^^^^

error: there is no argument named `IDF_PATH_VAR`
   --> src/espidf.rs:177:36
    |
177 |                          given by ${IDF_PATH_VAR} ('{}')",
    |                                    ^^^^^^^^^^^^^^

error: there is no argument named `v`
   --> src/espidf.rs:262:32
    |
262 |             Ok(v) => format!("v{v}"),
    |                                ^^^

error: there is no argument named `MANAGED_ESP_IDF_REPOS_DIR_BASE`
   --> src/espidf.rs:321:22
    |
321 |             format!("{MANAGED_ESP_IDF_REPOS_DIR_BASE}-{hash}")
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: there is no argument named `hash`
   --> src/espidf.rs:321:55
    |
321 |             format!("{MANAGED_ESP_IDF_REPOS_DIR_BASE}-{hash}")
    |                                                       ^^^^^^

error: there is no argument named `IDF_PYTHON_ENV_PATH_VAR`
   --> src/espidf.rs:482:58
    |
482 |                     let python_env_var_prefix = format!("{IDF_PYTHON_ENV_PATH_VAR}=");
    |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^

error: there is no argument named `IDF_PYTHON_ENV_PATH_VAR`
   --> src/espidf.rs:490:72
    |
490 | ...                   "`idf_tools.py export` result contains no `{IDF_PYTHON_ENV_PATH_VAR}` item \
    |                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: expected a `Fn<(char,)>` closure, found `[char; 2]`
   --> src/espidf.rs:375:45
    |
375 |         let mut ref_name = ref_name.replace(&['/', '\\'], "-");
    |                                     ------- ^^^^^^^^^^^^ expected an `Fn<(char,)>` closure, found `[char; 2]`
    |                                     |
    |                                     required by a bound introduced by this call
    |
    = help: the trait `Fn<(char,)>` is not implemented for `[char; 2]`
    = note: required because of the requirements on the impl of `FnOnce<(char,)>` for `&[char; 2]`
    = note: required because of the requirements on the impl of `Pattern<'_>` for `&[char; 2]`

For more information about this error, try `rustc --explain E0277`.
error: could not compile `embuild` due to 8 previous errors

This is because embuild uses captured identifiers in format strings, and support for this was added in Rust 1.58.

Ideally compilation would require the correct toolchain or fail early and with a clear error message.

I am aware of two approaches to improve this:

I've added a PR for the rust-version field here: #45.

"Ok(result) => {" not a tuple struct or tuple variant

In this repo, having followed the steps in my readme.md, I'm getting these errors about the Result type in embuild source. Any help please?

error: could not compile `embuild` due to 7 previous errors
warning: build failed, waiting for other jobs to finish...
error: build failed
error[E0532]: expected tuple struct or tuple variant, found function `Ok`
   --> C:\Users\Jason\.cargo\registry\src\github.com-1ecc6299db9ec823\embuild-0.24.5\src\utils.rs:123:13
    |
123 |             Ok(result) => {
    |             ^^ not a tuple struct or tuple variant
    |
   ::: C:\Users\Jason\.cargo\registry\src\github.com-1ecc6299db9ec823\embuild-0.24.5\src\bindgen.rs:164:5
    |
164 |     cmd!("rustup", "run", "stable", "rustfmt", output_file)?;
    |     ------------------------------------------------------- in this macro invocation
    |
    = note: this error originates in the macro `cmd` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing one of these items instead
    |
1   | use serde::__private::Ok;
    |
1   | use std::result::Result::Ok;
    |
1   | use core::result::Result::Ok;

I started reporting with espflash because I figured it was something there, but that was denied:

esp-rs/espflash#109 (comment)

`menuconfig --release true` not saving changes

I have created a project using

cargo generate --git https://github.com/esp-rs/esp-idf-template cargo

Running cargo pio espidf menuconfig works fine and I can see the saved changes in the UI from last time. Compiling the code (cargo build) also works and I can tell the changes are in effect. I can also see that my_project_root/sdkconfig.debug is updated.

However when I try to switch to release mode, thing works less great.

Running cargo pio espidf menuconfig --release true does not produce a my_project_root/sdkconfig.release. When running the command multiple times the changes seems to not get saved. Compiling the code using cargo build --release does not seem to be using my changes.

Improve error message in case of missing stable rustfmt

The build requires rust stable and rustfmt.

The rustfmt might not be installed in stable (e.g. rustup minimal profile), which causes following error message:

#13 400.7   error: toolchain 'stable-x86_64-unknown-linux-gnu' is not installed
#13 400.7   Error: Command '"rustup" "run" "stable" "rustfmt" "/opt/rust-esp32-std-hello/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-e27296357ce0af82/out/bindings.rs"' failed with exit code Some(1).

Please, add command for the user to remedy the problem. The command should be:

rustup component add rustfmt --toolchain stable

Note: It's important to explicitly mention toolchain. Reason: when the user has default toolchain set to nightly and we omit the parameter --toolchain, then the installation will go to nightly.

ldproxy doesn't build under windows

Hi,
I recently tried installing ldproxy for use with the esp32 wifi demo
over at https://github.com/ivmarkov/rust-esp32-std-demo

However during the install under windows I ended up with around 6 of the below errors scattered about in different files

cargo install ldproxy

...

error[E0532]: expected tuple struct or tuple variant, found function `Ok`
   --> C:\Users\ric\.cargo\registry\src\github.com-1ecc6299db9ec823\embuild-0.25.3\src\utils.rs:199:13
    |
199 |             Ok(result) => {
    |             ^^ not a tuple struct or tuple variant
    |
   ::: C:\Users\ric\.cargo\registry\src\github.com-1ecc6299db9ec823\embuild-0.25.3\src\python.rs:12:23
    |
12  |     let version_str = cmd_output!(PYTHON, "--version")
    |                       -------------------------------- in this macro invocation
    |
    = note: this error originates in the macro `cmd_output` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing one of these items instead
    |
1   | use core::result::Result::Ok;
    |
1   | use serde::__private::Ok;
    |
1   | use std::result::Result::Ok;
    |

So I tried adding in the following to the files where it was complaining

use std::result::Result::Ok;

That got me as far as a built ldproxy.exe
Currently seeing if I can get this local version to work for building the esp example

Help with binding with C code

I'm working on a new project with esp-rs with std and platformio. I can get it to work, but now I want to call C code and libraries from rust. I was searching about bindgen and came across this repository, that seems to have some kind of bindgen for building and binding c code to use in rust, with the esp environment in mind. I have tried somethings but haven't found a success. The project I'm working on is this one: https://github.com/metehus/espac/tree/main/firmware (binding in lib/peripheral-bindings).

Basically, I've looked on the exposed methods and tried this on the build file:

use std::env;
use std::path::PathBuf;
use bindgen::Builder;

fn main() {
    println!("cargo:rustc-link-search=../../.pio/libdeps/release");

    embuild::espidf::sysenv::output();
    let bindings = embuild::bindgen::run(
        Builder::default()
            .header("bindings.h")
    ).expect("error!");
}

There's a bindings.h file that just imports a library downloaded via platformio.
of course, haven't got any success:

Build error
   Compiling esp-idf-svc v0.48.1
error: failed to run custom build command for `peripheral-bindings v0.1.0 (/home/matehus/projects/embedded/espac/firmware/lib/peripheral-bindings)`

Caused by:
  process didn't exit successfully: `/home/matehus/projects/embedded/espac/firmware/target/debug/build/peripheral-bindings-c68dc13ea6345054/build-script-build` (exit status: 101)
  --- stdout
  cargo:rustc-link-search=../../.pio/libdeps/release
  cargo:rustc-env=EMBUILD_GENERATED_BINDINGS_FILE=/home/matehus/projects/embedded/espac/firmware/target/xtensa-esp32s3-espidf/debug/build/peripheral-bindings-a9cd2eac59193df5/out/bindings.rs

  --- stderr
  Output: "/home/matehus/projects/embedded/espac/firmware/target/xtensa-esp32s3-espidf/debug/build/peripheral-bindings-a9cd2eac59193df5/out/bindings.rs"
  Bindgen builder flags: ["bindings.h", "--rust-target", "1.64", "--no-derive-default", "--generate", "functions,types,vars,methods,constructors,destructors", "--"]
  thread 'main' panicked at lib/peripheral-bindings/build.rs:12:7:
  error!: Failed to generate bindings

  Stack backtrace:
     0: anyhow::error::<impl anyhow::Error>::msg
               at /home/matehus/.cargo/registry/src/index.crates.io-6f17d22bba15001f/anyhow-1.0.82/src/error.rs:83:36
     1: embuild::bindgen::run_for_file::{{closure}}
               at /home/matehus/.cargo/registry/src/index.crates.io-6f17d22bba15001f/embuild-0.31.4/src/bindgen.rs:207:22
     2: core::result::Result<T,E>::map_err
               at /home/rust/rust/library/core/src/result.rs:829:27
     3: embuild::bindgen::run_for_file
               at /home/matehus/.cargo/registry/src/index.crates.io-6f17d22bba15001f/embuild-0.31.4/src/bindgen.rs:205:20
     4: embuild::bindgen::run
               at /home/matehus/.cargo/registry/src/index.crates.io-6f17d22bba15001f/embuild-0.31.4/src/bindgen.rs:170:5
     5: build_script_build::main
               at ./build.rs:9:20
     6: core::ops::function::FnOnce::call_once
               at /home/rust/rust/library/core/src/ops/function.rs:250:5
     7: std::sys_common::backtrace::__rust_begin_short_backtrace
               at /home/rust/rust/library/std/src/sys_common/backtrace.rs:155:18
     8: std::rt::lang_start::{{closure}}
               at /home/rust/rust/library/std/src/rt.rs:166:18
     9: std::rt::lang_start_internal
    10: std::rt::lang_start
               at /home/rust/rust/library/std/src/rt.rs:165:17
    11: main
    12: <unknown>
    13: __libc_start_main
    14: _start
  stack backtrace:
     0: rust_begin_unwind
     1: core::panicking::panic_fmt
     2: core::result::unwrap_failed
     3: core::result::Result<T,E>::expect
               at /home/rust/rust/library/core/src/result.rs:1030:23
     4: build_script_build::main
               at ./build.rs:9:20
     5: core::ops::function::FnOnce::call_once
               at /home/rust/rust/library/core/src/ops/function.rs:250:5
  note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

At this point I have no idea how to make bindgen work with the platformio library and how to correctly set up the embuild (or even if that's the right tool for the job). Any information would help here!

Add docs and a user friendly README

Currently as a user coming into this project, I have 0 idea what embuild is meant to do for me as a whole. Could you add an overall README?

`embuild` shouldn't require `git` or `.git` to exist in order to build the project

When trying following in NixOS, it fails because this crate expects .git to exist for $ESP_IDF: https://github.com/knarkzel/hello-esp32c3

hello-esp32c3 via nix-shell-env โฏ cargo build
   Compiling esp-idf-sys v0.33.2
The following warnings were emitted during compilation:

warning: Configuring first supported MCU 'esp32c3' derived from the build target 'riscv32imc-esp-espidf' supporting MCUs [esp32c3, esp32c2, esp32h2, esp32c5]; explicitly specify an MCU to resolve this ambiguity

error: failed to run custom build command for `esp-idf-sys v0.33.2`

Caused by:
  process didn't exit successfully: `/home/odd/source/hello-esp32c3/target/debug/build/esp-idf-sys-c7e3a3706a45d51d/build-script-build` (exit status: 1)
  --- 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:warning=Configuring first supported MCU 'esp32c3' derived from the build target 'riscv32imc-esp-espidf' supporting MCUs [esp32c3, esp32c2, esp32h2, esp32c5]; explicitly specify an MCU to resolve this ambiguity

  --- 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.1.1",
              ),
          ),
          esp_idf_repository: None,
          esp_idf_cmake_generator: None,
          idf_path: Some(
              "/nix/store/bmckqqb26qy16agaql75m5w1bwi4kp51-esp-idf-v5.1",
          ),
          extra_components: [],
          esp_idf_components: None,
      },
      esp_idf_sys_root_crate: None,
  }
  fatal: not a git repository (or any of the parent directories): .git
  fatal: not a git repository (or any of the parent directories): .git
  Error: '/nix/store/bmckqqb26qy16agaql75m5w1bwi4kp51-esp-idf-v5.1' is not a git respository

  Caused by:
      0: command 'cd "/nix/store/bmckqqb26qy16agaql75m5w1bwi4kp51-esp-idf-v5.1" && LANGUAGE="" LC_ALL="C.UTF-8" "git" "rev-parse" "--show-toplevel"' exited with non-zero status code 128
      1: fatal: not a git repository (or any of the parent directories): .git

Defmt library need some linking

Hi
I have issue with adding defmt library to my code. I added defmt to my toml in both build dependencies and dependencies. Also add '"-C", "link-arg=-Tdefmt.x"' to rust flags. I faced this problem

   
          Stack backtrace:
             0: ldproxy::main
             1: std::sys_common::backtrace::__rust_begin_short_backtrace
             2: std::rt::lang_start::{{closure}}
             3: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/ops/function.rs:280:13
                std::panicking::try::do_call
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:492:40
                std::panicking::try
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:456:19
                std::panic::catch_unwind
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panic.rs:137:14
                std::rt::lang_start_internal::{{closure}}
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/rt.rs:128:48
                std::panicking::try::do_call
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:492:40
                std::panicking::try
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:456:19
                std::panic::catch_unwind
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panic.rs:137:14
                std::rt::lang_start_internal
                       at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/rt.rs:128:20
             4: main
             5: <unknown>
             6: __libc_start_main
             7: _start
          

also full error is here

3rd party C libraries

Hello . I want to add 3rd party C libraries to esp-idf components. But bindgen does not recognize this component and I cannot use its functions in the project. What is the way to add 3rd party C library?

PIO board name capitalised - appears to break build

Hello, thank you for this project!

I was trying to get the rust-esp32-std-hello example to run, but was finding that the compilation would always fail with a variation of the following error message:

error: failed to run custom build command for `esp-idf-sys v0.16.2`

Caused by:
  process didn't exit successfully: `/scratch/projects/rust-esp32-std-hello/target/debug/build/esp-idf-sys-c07b526a2fe263c2/build-script-build` (exit status: 1)
  --- stdout
  Found compatible PlatformIO Core 5.1.1 -> /home/rob/.platformio/penv/bin/platformio
  cargo:rerun-if-changed=./patches/esp32c3_atomics_emul.diff
  cargo:rerun-if-changed=./patches/pthread_destructor_fix.diff
  cargo:rerun-if-changed=./patches/master_missing_xtensa_atomics_fix.diff
  cargo:rerun-if-changed=./patches/master_restore_link_fragments_for_pio.diff
  cargo:rerun-if-changed=./patches/missing_xtensa_atomics_fix.diff
  Warning! Ignore unknown configuration option `patches` in section [env]
  Processing debug (board: ESP32CAM; platform: espressif32; framework: espidf)
  --------------------------------------------------------------------------------

  --- stderr
  Error: Unknown board ID 'ESP32CAM'
  Error: No such file or directory (os error 2)

It appears that the board name is always converted to upper case here: https://github.com/ivmarkov/cargo-pio/blob/master/src/project.rs#L235

After changing this I was able to proceed with the build.

I don't know the history of why the board name is changed to upper case, but perhaps it should not?

If it helps, I do not have a sdkconfig in my project, perhaps this makes a difference?

[cargo install cargo-pio] error: failed to run custom build command for `ring v0.16.20`

Hi!

I've been trying to install cargo-pio, but I always have an esrror on build stage with ring:

error: failed to run custom build command for `ring v0.16.20`

Caused by:
  process didn't exit successfully: `C:\Users\1\AppData\Local\Temp\cargo-installzHzvXk\release\build\ring-f2ed3a1cac281d3d\build-script-build` (exit code: 101)
  --- stdout
  OPT_LEVEL = Some("3")
  TARGET = Some("x86_64-pc-windows-gnu")
  HOST = Some("x86_64-pc-windows-gnu")
  CC_x86_64-pc-windows-gnu = None
  CC_x86_64_pc_windows_gnu = None
  HOST_CC = None
  CC = None
  CFLAGS_x86_64-pc-windows-gnu = None
  CFLAGS_x86_64_pc_windows_gnu = None
  HOST_CFLAGS = None
  CFLAGS = None
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")

  --- stderr
  running "gcc.exe" "-O3" "-ffunction-sections" "-fdata-sections" "-m64" "-I" "include" "-Wall" "-Wextra" "-std=c1x" "-Wbad-function-cast" "-Wnested-externs" "-Wstrict-prototypes" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-g3" "-DNDEBUG" "-c" "-oC:\\Users\\1\\AppData\\Local\\Temp\\cargo-installzHzvXk\\release\\build\\ring-85838aa452798cfa\\out\\aes_nohw.o" "crypto/fipsmodule/aes/aes_nohw.c"
  crypto/fipsmodule/aes/aes_nohw.c:1:0: sorry, unimplemented: 64-bit mode not compiled in
   /* Copyright (c) 2019, Google Inc.

  thread 'main' panicked at 'execution failed', C:\Users\1\.cargo\registry\src\github.com-1ecc6299db9ec823\ring-0.16.20\build.rs:656:9
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: failed to compile `cargo-pio v0.25.2`, intermediate artifacts can be found at `C:\Users\1\AppData\Local\Temp\cargo-installzHzvXk`

Caused by:
  build failed

bindgen.rs - Windows build - failed to resolve: could not find `unix` in `os`

The build on Windows fails with:

   Compiling cargo-pio v0.8.0 (https://github.com/ivmarkov/cargo-pio#d9e15e94)
error[E0433]: failed to resolve: could not find `unix` in `os`
 --> C:\Users\JurajMichรกlek\.cargo\git\checkouts\cargo-pio-1b39afa97d59a391\d9e15e9\src\bindgen.rs:1:36
  |
1 | use std::{env, ffi::OsStr, fs, os::unix::prelude::OsStrExt, path::{Path, PathBuf}, process::Command};
  |                                    ^^^^ could not find `unix` in `os`

error[E0599]: no function or associated item named `from_bytes` found for struct `OsStr` in the current scope
   --> C:\Users\JurajMichรกlek\.cargo\git\checkouts\cargo-pio-1b39afa97d59a391\d9e15e9\src\bindgen.rs:115:50
    |
115 |         Ok(fs::canonicalize(PathBuf::from(OsStr::from_bytes(&output.stdout)).canonicalize()?)?)
    |                                                  ^^^^^^^^^^ function or associated item not found in `OsStr`

error: aborting due to 2 previous errors

The first error is cause by using os::unix. This can be solved:

#[cfg(unix)]
use std::{os::unix::prelude::OsStrExt}

#[cfg(windows)]
use std::{os::windows::prelude::OsStrExt}

Add CI to generate packages for releases

Generate packages in every new release for the following architectures:

  • Linux:
    • x86_64-unknown-linux-gnu
    • x86_64-unknown-linux-musl
  • macOS:
    • aarch64-apple-darwin
    • x86_64-apple-darwin
  • Windows:
    • x86_64-pc-windows-gnu
    • x86_64-pc-windows-msvc

Error: matches multiple boards

When I run this command:
$ cargo pio new -b sipeed-longan-nano my_blink2
I got this error:
Error: Configured board 'sipeed-longan-nano' matches multiple boards in PIO: [sipeed-longan-nano, sipeed-longan-nano]

How can I correct this?
I asked PlatformIO community if it is normal to have multiple boards with the same ID and they answer that is normal: "A board is only unique per platform." https://community.platformio.org/t/multiple-board-id-sipeed-longan-nano/22827
So I added the platform:
$ cargo pio new -b sipeed-longan-nano -p GD32V my_blink2
But I got the same error.
I there something I missed and need to add?

I use the PlatformIO extension for VSCode in WSL2 Debian. Also, the cargo pio command is executed in WSL2 Debian.

Linkage error with Native (non PIO build) for ESP32C3

When using the native build, the linking phase fails with the following errors:

Error: Linker /Users/imarkov/projects/esp32/rust-esp32-std-hello/.sdk/tools/riscv32-esp-elf/1.24.0.123_64eb9ff-8.4.0/riscv32-esp-elf/bin/riscv32-esp-elf-gcc failed: exit status: 1
STDERR OUTPUT:
/Users/imarkov/projects/esp32/rust-esp32-std-hello/.sdk/tools/riscv32-esp-elf/1.24.0.123_64eb9ff-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld: /Users/imarkov/projects/esp32/rust-esp32-std-hello/.sdk/tools/riscv32-esp-elf/1.24.0.123_64eb9ff-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/lib/rv32im/ilp32/libc.a(lib_a-svfprintf.o): in function `_svfprintf_r':
/builds/idf/crosstool-NG/.build/HOST-x86_64-apple-darwin12/riscv32-esp-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1217: undefined reference to `__trunctfdf2'
/Users/imarkov/projects/esp32/rust-esp32-std-hello/.sdk/tools/riscv32-esp-elf/1.24.0.123_64eb9ff-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld: /Users/imarkov/projects/esp32/rust-esp32-std-hello/.sdk/tools/riscv32-esp-elf/1.24.0.123_64eb9ff-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/lib/rv32im/ilp32/libc.a(lib_a-vfprintf.o): in function `_vfprintf_r':
/builds/idf/crosstool-NG/.build/HOST-x86_64-apple-darwin12/riscv32-esp-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1192: undefined reference to `__trunctfdf2'
collect2: error: ld returned 1 exit status

Preliminary analysis:

I am half there in figuring out the linkage problems with the native build and the C3 chip:

  • Rust is spitting out a -nodefaultlibs option on the command line, which seems to be kind of like "the default behavior" (but it seems you can control this on a Rust target level, when you define the target)
  • This is somehow preventing the linker from finding the missing intrinsic (__trunctfdf2); if I remove the -nodefaultlibs, it works OK
  • Short term solution: we have a simple workaround in adding a rustflags = ["-C", "default-linker-libraries"] to the [target.riscv32imc-esp-espidf] section in .cargo/config.toml in the relevant binary crate (rust-esp32-std-hello etcetera)
  • Long term solution: we should probably allow the "default libs" behavior on the Rust target level (as in riscv32imc-esp-espidf as well as in all xtensa targets, if it is not allowed there). Reason why I believe this is a correct behavior: I don't see the -nodefaultlibs argument amongst the "native" (cmake) args, which means the native ESP-IDF build is assuming it is NOT set

Unresolved questions/issues:

Issue building esp-idf

Hi,

First of all thanks for the effort in creating embuild! I have been trying to use it to compile the example template application at https://github.com/esp-rs/esp-idf-template but I'm having some issues. When compiling I get the following error:

 In file included from C:/Users/matti/Documents/repos/wireprobe-rs/.embuild/espressif/esp-idf/release-v4.4/components/asio/asio/asio/include/asio/error_code.hpp:25,
                   from C:/Users/matti/Documents/repos/wireprobe-rs/.embuild/espressif/esp-idf/release-v4.4/components/asio/asio/asio/include/asio/error.hpp:19,
                   from C:/Users/matti/Documents/repos/wireprobe-rs/.embuild/espressif/esp-idf/release-v4.4/components/asio/asio/asio/include/asio/impl/error.ipp:20,
                   from C:/Users/matti/Documents/repos/wireprobe-rs/.embuild/espressif/esp-idf/release-v4.4/components/asio/asio/asio/include/asio/impl/src.hpp:22,
                   from C:/Users/matti/Documents/repos/wireprobe-rs/.embuild/espressif/esp-idf/release-v4.4/components/asio/asio/asio/src/asio.cpp:11:
  c:\users\matti\documents\repos\wireprobe-rs\.embuild\espressif\tools\riscv32-esp-elf\esp-2021r2-patch3-8.4.0\riscv32-esp-elf\riscv32-esp-elf\include\c++\8.4.0\system_error:39:10: fatal error: bits/error_constants.h: No such file or directory
   #include <bits/error_constants.h>
            ^~~~~~~~~~~~~~~~~~~~~~~~
  compilation terminated.
  [698/1002] Linking C static library esp-idf\driver\libdriver.a
  [699/1002] Building C object esp-idf/cbor/CMakeFiles/__idf_cbor.dir/tinycbor/src/cbortojson.c.obj
  [700/1002] Building C object esp-idf/cbor/CMakeFiles/__idf_cbor.dir/tinycbor/src/cborparser.c.obj
      esp_idf_sdkconfig_defaults: None,
      mcu: None,
      native: NativeConfig {
          esp_idf_version: Some(
              Branch(
                  "release/v4.4",
              ),
          ),
          esp_idf_repository: None,
          esp_idf_cmake_generator: None,
          idf_path: None,
          extra_components: [],
          esp_idf_components: None,
      },
      esp_idf_sys_root_crate: None,
  }
  Using managed esp-idf repository: EspIdfRemote { repo_url: None, git_ref: Branch("release/v4.4") }
  fatal: No tags can describe 'de1e58118d89965f255edb587aae8dd29e8b510c'.
  Try --always, or create some tags.
  Using esp-idf v4.4.2 at 'C:\Users\matti\Documents\repos\wireprobe-rs\.embuild\espressif\esp-idf\release-v4.4'
  fatal: No tags can describe 'de1e58118d89965f255edb587aae8dd29e8b510c'.
  Try --always, or create some tags.
  thread 'main' panicked at '
  command did not execute successfully, got: exit code: 1

  build script failed, must exit now', C:\Users\matti\.cargo\registry\src\github.com-1ecc6299db9ec823\cmake-0.1.48\src\lib.rs:975:5
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I'm not sure where to start looking, I have installed clang and installed rust using rustup,:

PS C:\Users\matti\Documents\repos\wireprobe-rs> rustc --version
rustc 1.65.0-nightly (fa6ee9375 2022-09-12)
PS C:\Users\matti\Documents\repos\wireprobe-rs> clang --version
clang version 15.0.0
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin

Any ideas where to start looking?

Link failure (Rust 1.54) esp32s2

Building esp std hello from this tree: https://github.com/ivmarkov/rust-esp32-std-hello/tree/07b7fb9a8f11b21c709c5277377f8f03439e27f1, the only modifications being the SSID, Pass & target in config.toml.

    Updating crates.io index
    Updating git repository `https://github.com/ivmarkov/libc.git`
   Compiling rust-esp32-std-hello v0.14.2 (/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello)
error: linking with `cargo-pio-link` failed: exit status: 1
  |
  = note: "cargo-pio-link" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.17pamn1c5ias0as1.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.1b6lc6ms2f18f3ea.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.1dbj2xzkvf86f1gy.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.1itjfh7gmsk7xbh7.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.1ost5lt6ejffkz3y.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.1wphx7uhjupoe75r.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.221k79kujycpmgj6.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.283wtpvs0uehl2c.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2at60ydjj69y9th3.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2drchrzhlijfafmp.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2if95hp17n23m85h.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2igywquu67sxhx95.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2r5r5y2vkahdqjmw.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2u5p27ut4w46gf49.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2x6ptb08qvhyvlvq.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2xbykl9hs1hkgtrl.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.2zd836dw9z45hg3d.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.3338v3rlvl7hu03z.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.3g0hsp8aid484cm.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.3j2kcte3d64oljz1.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.3mt04fofnvi9tgi8.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.3vovshvqxgcvug9t.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.42d0z9ydp5nn4x0s.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.47hfz4u9qf4ib9c0.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.4d6opkzn2dp5svql.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.4g2lv447yyb8wel.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.4gr1svn1fpg70x8q.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.4lxo8wom6ymo0csf.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.4pujlbzwxie4uupq.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.4wo57lqcos7za6n4.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.4ykxpynyg5x1n813.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.50tgedq46pafn9tl.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.54ky6s68jllwfl7j.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.55jx9vctbmo49t16.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.5a5tk4urairkf39e.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.5cug23beti6uewug.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.5kp51rr6ykdb901.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.dctido0t0eyejci.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.sdaxg9ew1txwm6f.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.sg9fjlb2rakwagu.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.zvg6f8qvsi9pwyk.rcgu.o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc.5etwit9xqrlrlq2r.rcgu.o" "-Wl,--as-needed" "-L" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps" "-L" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/debug/deps" "-L" "/home/mabez/development/rust/xtensa/rust-xtensa-dev/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/xtensa-esp32s2-espidf/lib" "-Wl,-Bstatic" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libst7789-ac9dda3d8b99bd12.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libheapless-92bd344fb7c18b0a.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libstable_deref_trait-7b27dc766b09842b.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libhash32-b96af97d0a3b5c83.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libssd1306-510426343a87468c.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libdisplay_interface_i2c-005d6a0a20b6b11e.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libili9341-059e5b6cdfa6a089.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libembedded_graphics-cf6972cb999b985a.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libbyteorder-0de791bc1505fc46.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libfloat_cmp-6063568f2460652c.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libnum_traits-4aa0300aefea3f7c.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libmicromath-8222e92ff80e4834.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libembedded_graphics_core-0baaee2feb5af04b.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libaz-f555d3aa48ab5f94.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libdisplay_interface_spi-e5440081c1b68c49.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libbyte_slice_cast-1af67f0c051c1634.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libdisplay_interface-a6daf5f90d1e1589.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libesp_idf_hal-c616605fde69f9f9.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libembedded_hal-e5eb12cde24baf7e.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libvoid-cd6d5fbfbe3ec03a.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libnb-af4212696df3c384.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libnb-e1dc3b82f71b045c.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libesp_idf_svc-8bc6eb7072c4c7b0.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libesp_idf_sys-36a0b4252252b4cb.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libmutex_trait-e9e89de64d673a29.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libembedded_svc-3f8cc1056571c348.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libserde_json-779dddbdb0fdb6e9.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libryu-c87e37772c4d823c.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libitoa-d0d2825ee9d2ea12.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libstrum-b5623bb2819673b1.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libhttp_auth_basic-40a612b24d72cbe1.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libbase64-262e9458d3f02504.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libnum_enum-ecbc73f76d3a217a.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libenumset-fc18e5037fa1ad3f.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libserde-39518d1241aec6f5.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/liburl-853bc62689d25129.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libidna-c3924beb1383a3d8.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libunicode_normalization-f19330a96427e75f.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libtinyvec-dd6a0bec56dd5284.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libtinyvec_macros-8a78de6e855b773a.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libunicode_bidi-1c17a4e32bc9bdd7.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libform_urlencoded-0bb9818bbba2fa29.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libpercent_encoding-869a994028fa8185.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libmatches-1f36abd7400ed858.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/liblog-79d9612169c47349.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libcfg_if-160567f94f07f6c0.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libanyhow-dbf4d1477a28304c.rlib" "-Wl,--start-group" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libstd-b439acacf885d7c7.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libpanic_abort-a60c303fe6c46e66.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libstd_detect-679bf3bd9802aa11.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/librustc_demangle-3f90942c8a900593.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libhashbrown-b1b2abeb753cf925.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/librustc_std_workspace_alloc-ed6156631dff5f6a.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libunwind-f71f945327bbcea3.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libcfg_if-f41199913eb130ab.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/liblibc-b7eff6f280d1067d.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/liballoc-93a2db2338c255e2.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/librustc_std_workspace_core-e494da1e65b6754b.rlib" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libcore-9d827ef2b0205c83.rlib" "-Wl,--end-group" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/libcompiler_builtins-8e4e90349ad57dbd.rlib" "-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/home/mabez/development/rust/xtensa/rust-xtensa-dev/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/xtensa-esp32s2-espidf/lib" "-o" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/deps/rust_esp32_std_hello-93ff9ee32e6fc5bc" "-Wl,--gc-sections" "-no-pie" "-nodefaultlibs" "--cargo-pio-link-linker=/home/mabez/.platformio/packages/toolchain-xtensa32s2/bin/xtensa-esp32s2-elf-gcc" "--cargo-pio-link-remove-duplicate-libs" "-L/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf" "-L/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug" "-L/home/mabez/.platformio/packages/framework-espidf/components/esp_wifi/lib/esp32s2" "-L/home/mabez/.platformio/packages/framework-espidf/components/esp_rom/esp32s2/ld" "-L/home/mabez/.platformio/packages/framework-espidf/components/xtensa/esp32s2" "-L/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp32s2" "-L/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp32s2/ld" "-L/home/mabez/.platformio/packages/framework-espidf/components/esp32s2/ld" "-Wl,--start-group" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_pm/libesp_pm.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/asio/libasio.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/cbor/libcbor.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/unity/libunity.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/cmock/libcmock.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/coap/libcoap.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/console/libconsole.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_adc_cal/libesp_adc_cal.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_hid/libesp_hid.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/protobuf-c/libprotobuf-c.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/protocomm/libprotocomm.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/mdns/libmdns.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_local_ctrl/libesp_local_ctrl.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_websocket_client/libesp_websocket_client.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/expat/libexpat.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/wear_levelling/libwear_levelling.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/fatfs/libfatfs.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/freemodbus/libfreemodbus.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/jsmn/libjsmn.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/json/libjson.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/libsodium/liblibsodium.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/mqtt/libmqtt.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/openssl/libopenssl.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/perfmon/libperfmon.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/spiffs/libspiffs.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/touch_element/libtouch_element.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/wifi_provisioning/libwifi_provisioning.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/app_trace/libapp_trace.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/app_update/libapp_update.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/bootloader_support/libbootloader_support.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/cxx/libcxx.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/driver/libdriver.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/efuse/libefuse.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp-tls/libesp-tls.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp32s2/libesp32s2.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_common/libesp_common.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_eth/libesp_eth.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_event/libesp_event.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_gdbstub/libesp_gdbstub.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_http_client/libesp_http_client.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_http_server/libesp_http_server.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_https_ota/libesp_https_ota.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_hw_support/libesp_hw_support.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_ipc/libesp_ipc.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_netif/libesp_netif.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_ringbuf/libesp_ringbuf.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_rom/libesp_rom.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_serial_slave_link/libesp_serial_slave_link.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_system/libesp_system.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_timer/libesp_timer.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/esp_wifi/libesp_wifi.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/espcoredump/libespcoredump.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/freertos/libfreertos.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/hal/libhal.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/heap/libheap.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/log/liblog.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/lwip/liblwip.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/libmbedtls.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/newlib/libnewlib.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/nghttp/libnghttp.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/nvs_flash/libnvs_flash.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/pthread/libpthread.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/sdmmc/libsdmmc.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/soc/libsoc.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/spi_flash/libspi_flash.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/tcp_transport/libtcp_transport.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/tcpip_adapter/libtcpip_adapter.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/ulp/libulp.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/vfs/libvfs.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/wpa_supplicant/libwpa_supplicant.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/xtensa/libxtensa.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedtls.a" "/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedx509.a" "-lcoexist" "-lcore" "-lespnow" "-lmesh" "-lnet80211" "-lpp" "-lsmartconfig" "-lwapi" "-lphy" "-lxt_hal" "-lm" "-lgcc" "-lstdc++" "-lgcov" "-lc" "-Wl,--end-group" "-T" "esp32s2_out.ld" "-u" "esp_app_desc" "-u" "pthread_include_pthread_impl" "-u" "pthread_include_pthread_cond_impl" "-u" "pthread_include_pthread_local_storage_impl" "-u" "ld_include_panic_highint_hdl" "-u" "start_app" "-T" "esp32s2.rom.ld" "-T" "esp32s2.rom.api.ld" "-T" "esp32s2.rom.libgcc.ld" "-T" "esp32s2.rom.newlib-funcs.ld" "-T" "esp32s2.rom.newlib-data.ld" "-T" "esp32s2.rom.spiflash.ld" "-u" "vfs_include_syscalls_impl" "-T" "esp32s2.project.ld" "-T" "esp32s2.peripherals.ld" "-u" "call_user_start_cpu0" "-u" "app_main" "-u" "newlib_include_heap_impl" "-u" "newlib_include_syscalls_impl" "-u" "newlib_include_pthread_impl" "-u" "__cxa_guard_dummy" "-u" "__cxx_fatal_exception" "-Wl,--Map=/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/target/xtensa-esp32s2-espidf/debug/build/esp-idf-sys-aa3383de2d84245f/out/esp-idf/.pio/build/debug/esp-idf.map" "-Wl,--cref" "-Wl,--gc-sections" "-Wl,--undefined=uxTopUsedPriority" "-Wl,--wrap=longjmp" "-Wl,--wrap=mbedtls_mpi_exp_mod" "-fno-lto" "-fno-rtti" "-mlongcalls" "-Og" "-g2" "-ggdb2"
  = note: Running the cargo-pio-link linker wrapper
          Error: Linker /home/mabez/.platformio/packages/toolchain-xtensa32s2/bin/xtensa-esp32s2-elf-gcc failed: exit status: exit status: 1
          

error: aborting due to previous error

error: could not compile `rust-esp32-std-hello`

To learn more, run the command again with --verbose.

PIO toolchain verison:

/home/mabez/.platformio/packages/toolchain-xtensa32s2/bin/xtensa-esp32s2-elf-gcc -v
Using built-in specs.
COLLECT_GCC=/home/mabez/.platformio/packages/toolchain-xtensa32s2/bin/xtensa-esp32s2-elf-gcc
COLLECT_LTO_WRAPPER=/home/mabez/.platformio/packages/toolchain-xtensa32s2/bin/../libexec/gcc/xtensa-esp32s2-elf/8.4.0/lto-wrapper
Target: xtensa-esp32s2-elf
Configured with: /builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=xtensa-esp32s2-elf --prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32s2-elf --with-local-prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32s2-elf/xtensa-esp32s2-elf --with-headers=/builds/idf/crosstool-NG/builds/xtensa-esp32s2-elf/xtensa-esp32s2-elf/include --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG esp-2020r3' --disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections --disable-libgomp --disable-libmudflap --disable-libmpx --disable-libssp --disable-libquadmath --disable-libquadmath-support --with-gmp=/builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/buildtools --with-mpfr=/builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/buildtools --with-mpc=/builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/buildtools --with-isl=/builds/idf/crosstool-NG/.build/xtensa-esp32s2-elf/buildtools --enable-lto --enable-target-optspace --without-long-double-128 --disable-nls --enable-multiarch --enable-languages=c,c++ --disable-libstdcxx-verbose --enable-threads=posix --enable-gcov-custom-rtio --enable-libstdcxx-time=yes
Thread model: posix
gcc version 8.4.0 (crosstool-NG esp-2020r3)

error status 1 doesn't really tell us a lot unfortunately. Any ideas?

Won't build with esp-idf 5.2

Using template https://github.com/esp-rs/esp-template with ESP_IDF_VERSION = "v5.2.1"

  = note: [ldproxy] Running ldproxy
          Error: Linker /Users/clouds/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc failed: exit status: 1
          STDERR OUTPUT:
          /Users/clouds/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/13.2.0/../../../../xtensa-esp-elf/bin/ld: /Users/clouds/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/13.2.0/../../../../xtensa-esp-elf/lib/esp32s3/no-rtti/libstdc++.a(eh_alloc.o):(.literal.startup._GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv+0x10): undefined reference to `getenv'
          /Users/clouds/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/13.2.0/../../../../xtensa-esp-elf/bin/ld: /Users/clouds/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20230928/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/13.2.0/../../../../xtensa-esp-elf/lib/esp32s3/no-rtti/libstdc++.a(eh_alloc.o): in function `_GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv':
          /Users/brnomac003/.gitlab-runner/builds/qR2TxTby/0/idf/crosstool-NG/.build/xtensa-esp-elf/src/gcc/libstdc++-v3/libsupc++/eh_alloc.cc:203:(.text.startup._GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv+0x1b): undefined reference to `getenv'
          collect2: error: ld returned 1 exit status
          
          
          Stack backtrace:
             0: std::backtrace_rs::backtrace::libunwind::trace
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
             1: std::backtrace_rs::backtrace::trace_unsynchronized
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
             2: std::backtrace::Backtrace::create
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/backtrace.rs:331:13
             3: anyhow::error::<impl anyhow::Error>::msg
             4: ldproxy::main
             5: std::sys_common::backtrace::__rust_begin_short_backtrace
             6: std::rt::lang_start::{{closure}}
             7: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/ops/function.rs:284:13
             8: std::panicking::try::do_call
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panicking.rs:552:40
             9: std::panicking::try
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panicking.rs:516:19
            10: std::panic::catch_unwind
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panic.rs:142:14
            11: std::rt::lang_start_internal::{{closure}}
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/rt.rs:148:48
            12: std::panicking::try::do_call
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panicking.rs:552:40
            13: std::panicking::try
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panicking.rs:516:19
            14: std::panic::catch_unwind
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panic.rs:142:14
            15: std::rt::lang_start_internal
                       at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/rt.rs:148:20
            16: _main
          
  = note: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
  = note: use the `-l` flag to specify native libraries to link
  = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)

error: could not compile `test` (bin "test") due to 1 previous error
cargo build --release  177.36s user 47.49s system 331% cpu 1:07.90 total

is pio working?

I just created a new project following the instructions here:
https://crates.io/crates/cargo-pio

my plateform.ini file is the following one, and the compilation fails with this error message:
/home/christian/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: .pio/build/debug/libFrameworkArduino.a(main.cpp.o): in function main': /home/christian/.platformio/packages/framework-arduinoststm32/cores/arduino/main.cpp:52: undefined reference to setup'
/home/christian/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: /home/christian/.platformio/packages/framework-arduinoststm32/cores/arduino/main.cpp:58: undefined reference to `loop'
collect2: error: ld returned 1 exit status
*** [.pio/build/debug/firmware.elf] Error 1

but the function is found in file main.cpp and lib.rs:

//
// Arduino main stub file. Calls into Rust.
//

extern "C" void arduino_setup();
extern "C" void arduino_loop();

void setup() {
arduino_setup();
}

void loop() {
arduino_loop();
}

lib.rs:
// Remove if STD is supported for your platform and you plan to use it
#![no_std]

// Remove if STD is supported for your platform and you plan to use it
#[panic_handler]
fn panic(_info: &core::panic::PanicInfo) -> ! {
loop {}
}

//
// Entry points
//

#[no_mangle]
extern "C" fn arduino_setup() {
}

#[no_mangle]
extern "C" fn arduino_loop() {
}

; PlatformIO Project Configuration File
;
; Please visit documentation for options and examples
; https://docs.platformio.org/page/projectconf.html
[platformio]
default_envs = debug

[env]
extra_scripts = pre:platformio.git.py, pre:platformio.patch.py, platformio.cargo.py
board = genericSTM32F410C8
platform = ststm32
framework = arduino
rust_lib = test_rust
rust_target = thumbv7em-none-eabihf

[env:debug]
build_type = debug

[env:release]
build_type = release

Tracking issue for making the library build system agnostic (`embuild`).

This is the tracking issue to create a more build system agnostic library.

This is done to support building the esp-idf natively (without platformio), see esp-rs/esp-idf-sys#7 (comment).
As it will not be build system specific anymore, the library and the cargo-pio-link tool will be renamed:

  • The library will be renamed to embuild.
  • cargo-pio-link will be renamed to ldproxy.

Steps

  • Decouple library from platformio and refactor code.
    • Separate all code that is general purpose.
    • Rename things that reference pio.
    • Test code and update readme
  • Implement some CLI argument utilities
    • Parsing a windows/unix command line into a Vec of arguments.
    • Querying arguments.
    • Implement correct handling of arguments (in ldproxy, etc.).
  • #14
  • #15
  • Add documentation
    Not everything has been documented but this should be enough for now.

cargo-pio PlatformIO-first build with Arduino SDK

I've gotten a cargo-pio PlatformIO-first project to build with the Arduino SDK for ESP32. It wasn't quite as straightforward as I initially thought, based on the boilerplate code for a new cargo-pio project.

I'll describe what I did first, and if anybody is willing to help me figure out how to support the Arduino SDK in cargo-pio properly, I'd be happy to make a PR for it, if so desired.

  1. Make a new project and set the frameworks flag to Arduino:
    cargo pio new <your-project-name> --board <your-board> --frameworks arduino
    
  2. If we build now (pio run), we'll get an error saying undefined reference to setup() and undefined reference to loop(). Surprising, at first, since if we look in lib.rs, there sure is an extern "C" fn setup() and an extern "C" fn arduino_loop() defined. (The latter has an export_name = loop pragma so as to call it "loop" for the linker so Arduino's SDK can find it). I could not get these Rust-defined extern "C" functions to work. And as I understand it, they really can't, either, since the Arduino SDK is written in C++, and you can't FFI between Rust and C++ like that... something to do with C++'s name mangling or ABI or something (this goes a little over my head). So my solution is to define setup() and loop() in C++:
  3. Rename dummy.c to dummy.cpp and include a stub for setup() and loop(). The error from step 2 disappears.
  4. A new error appears! KeyError : 'framework-arduino'. This originates from line 73 in platformio.cargo.py:
            env["ENV"]["CARGO_PIO_BUILD_PIO_FRAMEWORK_DIR"] = env.PioPlatform().get_package_dir("framework-" + env.GetProjectOption("framework")[0])
    
  5. What's going on here is that cargo is trying to add a framework by the name of framework-arduino, since it's a relatively straightforward concatenation it's doing. But this framework / directory doesn't exist! If we look in ~/.platformio/packages/ the directory is actually called framework-arduinoespressif32. And indeed, if we change line 73 in platformio.cargo.py to:
        env["ENV"]["CARGO_PIO_BUILD_PIO_FRAMEWORK_DIR"] = env.PioPlatform().get_package_dir("framework-arduinoespressif32")
    
  6. It all works!

Of course, our entry point is now in C++ and not in Rust, which is... not ideal since this whole ordeal was about developing for these boards with Rust, while using C(++) libs. But it's not such a big deal, since we can call back into Rust with FFI from our C++ setup() and loop() functions.

But it was a bit of a confusing journey. The presence of Arduino functions and the 'soft coded' way of linking PIO frameworks into the Cargo build really seemed to indicate that this was a supported use case. Am I missing something obvious? ๐Ÿ™‚

In the case that I'm not missing anything obvious, and using the Arduino SDK wasn't really a supported use case yet, I'd be happy to create a PR for this. But how would I go about it? It requires adding a C++ file (which we don't want in the esp-idf case), and hardcoding the Arduino for ESP32 framework name in the python script. Neither of which seem ideal.

Any thoughts?

git: Shallow submodules clone

--depth 1 does not apply to submodules when cloning with --recursive. This results in deep submodules clones, which is really bad for repositories with many submodules (i.e. esp-idf).

Solution:
Add --shallow-submodules so that --depth also affects submodules.

Build script failure when building esp-idf-sys as dependency of previously working project

I have a project based on rust-esp32-std-demo that I've been successfully building for my ESP32 in the past, but today, when I said cargo build, it decided to recompile esp-idf-sys and the esp-idf-sys build failed, without me changing anything except for my own code. (I also get the same (similar?) error after switching to the latest esp-idf-sys version.)

I don't know how to tell if this is an esp-idf-sys issue, or an embuild issue, or something else, so I'm reporting it in both places; feel free to close this if it's in the wrong place.

I'm on Debian, and I installed esp-rs using rust-build as of Jan 11 (rust-build commit 6b71e690c35778c7c62ba5a229542cdfae01d6c4).

Console output:

/n/autobuild/eliduprees-emg-mouse/build/emg-server$ cargo build
   Compiling bindgen v0.59.2
   Compiling embuild v0.27.2
   Compiling esp-idf-sys v0.29.1
   Compiling esp-idf-hal v0.32.2
   Compiling esp-idf-svc v0.36.1
   Compiling emg-server v0.1.0 (/n/autobuild/eliduprees-emg-mouse/build/emg-server)
error: failed to run custom build command for `esp-idf-sys v0.29.1`

Caused by:
  process didn't exit successfully: `/n/autobuild/eliduprees-emg-mouse/build/emg-server/target/debug/build/esp-idf-sys-dce598b034e4c44c/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
  Found compatible PlatformIO Core 5.2.4 -> /n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/penv/bin/platformio
  cargo:rerun-if-changed=./patches/missing_xtensa_atomics_fix.diff
  cargo:rerun-if-changed=./patches/ping_setsockopt_fix.diff
  cargo:rerun-if-changed=./patches/pthread_destructor_fix.diff
  cargo:rerun-if-changed=./patches/missing_riscv_atomics_fix.diff
  Warning! Ignore unknown configuration option `patches` in section [env]
  Processing debug (board: esp32cam; platform: espressif32; framework: espidf)
  --------------------------------------------------------------------------------
  Verbose mode can be enabled via `-v, --verbose` option
  CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32cam.html
  PLATFORM: Espressif 32 (3.4.0) > AI Thinker ESP32-CAM
  HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
  DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
  PACKAGES: 
   - framework-espidf 3.40301.0 (4.3.1) 
   - tool-cmake 3.16.4 
   - tool-esptoolpy 1.30100.210531 (3.1.0) 
   - tool-ninja 1.7.1 
   - toolchain-esp32ulp 1.22851.191205 (2.28.51) 
   - toolchain-riscv32-esp 8.4.0+2021r1 
   - toolchain-xtensa-esp32 8.4.0+2021r1 
   - toolchain-xtensa-esp32s2 8.4.0+2021r1
  Reading CMake configuration...
  LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
  LDF Modes: Finder ~ chain, Compatibility ~ soft
  Found 0 compatible libraries
  Scanning dependencies...
  No dependencies
  Building in debug mode
  Retrieving maximum program size .pio/build/debug/firmware.elf
  Checking size .pio/build/debug/firmware.elf
  Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
  RAM:   [          ]   3.9% (used 12896 bytes from 327680 bytes)
  Flash: [==        ]  15.7% (used 164497 bytes from 1048576 bytes)
  ========================= [SUCCESS] Took 12.18 seconds =========================

  Environment    Status    Duration
  -------------  --------  ------------
  debug          SUCCESS   00:00:12.181
  ========================= 1 succeeded in 00:00:12.181 =========================

  ********************************************************************************
  There are the new updates for platforms (espressif32)
  Please update them via `platformio platform update` command.

  If you want to manually check for the new versions without updating, please use `platformio platform update --dry-run` command.
  ********************************************************************************

  cargo:rerun-if-changed=/n/HOME/.cargo/registry/src/github.com-1ecc6299db9ec823/esp-idf-sys-0.29.1/src/include/esp-idf/bindings.h

  --- stderr
  Output: "/n/autobuild/eliduprees-emg-mouse/build/emg-server/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-94df6151a6a52853/out/bindings.rs"
  Bindgen builder flags: ["/n/HOME/.cargo/registry/src/github.com-1ecc6299db9ec823/esp-idf-sys-0.29.1/src/include/esp-idf/bindings.h", "--rust-target", "1.47", "--blocklist-function", "strtold", "--blocklist-function", "_strtold_r", "--blocklist-function", "v.*printf", "--blocklist-function", "v.*scanf", "--blocklist-function", "_v.*printf_r", "--blocklist-function", "_v.*scanf_r", "--blocklist-function", "esp_log_writev", "--no-layout-tests", "--with-derive-default", "--ctypes-prefix", "c_types", "--generate", "functions,types,vars,methods,constructors,destructors", "--use-core", "--no-rustfmt-bindings", "--", "-D__bindgen", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_pm/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-94df6151a6a52853/out/esp-idf/.pio/build/debug/config", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/newlib/platform_include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/freertos/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/freertos/port/xtensa/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_hw_support/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_hw_support/port/esp32/.", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/heap/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/log/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/lwip/include/apps", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/lwip/include/apps/sntp", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/lwip/lwip/src/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/lwip/port/esp32/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/lwip/port/esp32/include/arch", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/soc/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/soc/esp32/.", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/soc/esp32/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/hal/esp32/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/hal/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_rom/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_rom/esp32", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_rom/include/esp32", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_common/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_system/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp32/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/driver/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/driver/esp32/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_ringbuf/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/efuse/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/efuse/esp32/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/xtensa/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/xtensa/esp32/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/espcoredump/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_timer/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_ipc/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/vfs/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_wifi/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_wifi/esp32/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_event/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_netif/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_eth/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/tcpip_adapter/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/app_trace/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/mbedtls/port/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/mbedtls/mbedtls/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/mbedtls/esp_crt_bundle/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/app_update/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/spi_flash/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/bootloader_support/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/nvs_flash/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/pthread/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_gdbstub/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_gdbstub/xtensa", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_gdbstub/esp32", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/wpa_supplicant/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/wpa_supplicant/port/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/wpa_supplicant/include/esp_supplicant", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/perfmon/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/asio/asio/asio/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/asio/port/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/cbor/port/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/unity/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/unity/unity/src", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/cmock/CMock/src", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/coap/port/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/coap/port/include/coap", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/coap/libcoap/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/coap/libcoap/include/coap2", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/console", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/nghttp/port/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/nghttp/nghttp2/lib/includes", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp-tls", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp-tls/esp-tls-crypto", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_adc_cal/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_hid/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/tcp_transport/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_http_client/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_http_server/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_https_ota/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/protobuf-c/protobuf-c", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/protocomm/include/common", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/protocomm/include/security", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/protocomm/include/transports", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/mdns/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_local_ctrl/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/sdmmc/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_serial_slave_link/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/esp_websocket_client/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/expat/expat/expat/lib", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/expat/port/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/wear_levelling/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/fatfs/diskio", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/fatfs/vfs", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/fatfs/src", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/freemodbus/common/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/idf_test/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/idf_test/include/esp32", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/jsmn/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/json/cJSON", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/libsodium/libsodium/src/libsodium/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/libsodium/port_include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/mqtt/esp-mqtt/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/openssl/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/spiffs/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/ulp/include", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/framework-espidf/components/wifi_provisioning/include", "-DESP_IDF_COMP_PTHREAD_ENABLED", "-DESP_IDF_COMP_NVS_FLASH_ENABLED", "-DESP_IDF_COMP_ESP_TLS_ENABLED", "-DESP_IDF_COMP_ESP_HTTP_CLIENT_ENABLED", "-DESP_IDF_COMP_ESP_HTTP_SERVER_ENABLED", "-DESP_IDF_COMP_ESPCOREDUMP_ENABLED", "-DESP_IDF_COMP_APP_UPDATE_ENABLED", "-DESP_IDF_COMP_ESP_SERIAL_SLAVE_LINK_ENABLED", "-DESP_IDF_COMP_SPI_FLASH_ENABLED", "-DESP_IDF_COMP_ESP_ADC_CAL_ENABLED", "-DESP_IDF_COMP_MQTT_ENABLED", "--sysroot=/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/../xtensa-esp32-elf", "-I/n/autobuild/eliduprees-emg-mouse/build/emg-server/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/../xtensa-esp32-elf/include", "-x", "c", "-DESP_IDF_COMP_PTHREAD_ENABLED", "-DESP_IDF_COMP_NVS_FLASH_ENABLED", "-DESP_IDF_COMP_ESP_TLS_ENABLED", "-DESP_IDF_COMP_ESP_HTTP_CLIENT_ENABLED", "-DESP_IDF_COMP_ESP_HTTP_SERVER_ENABLED", "-DESP_IDF_COMP_ESPCOREDUMP_ENABLED", "-DESP_IDF_COMP_APP_UPDATE_ENABLED", "-DESP_IDF_COMP_ESP_SERIAL_SLAVE_LINK_ENABLED", "-DESP_IDF_COMP_SPI_FLASH_ENABLED", "-DESP_IDF_COMP_ESP_ADC_CAL_ENABLED", "-DESP_IDF_COMP_MQTT_ENABLED", "-target", "xtensa"]
  thread 'main' panicked at '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!', /n/HOME/.cargo/registry/src/github.com-1ecc6299db9ec823/bindgen-0.59.2/src/ir/context.rs:538:15
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

edition = "2015"

I have just a question why the default edition for cargo pio new in the [lib] section is
edition = "2015"
and not
edition = "2018".
I had some strange errors because of that:
error[E0433]: failed to resolve: maybe a missing crate longan_nano?
and I had a hard time to find out that it was the problem with the wrong edition.

espidf installer: Check that python has venv package

In the esp-idf installer when it tries to create a python virtual env with

python esp-idf-v4.3.1/tools/idf_tools.py --idf-path esp-idf-v4.3.1 --quiet --non-interactive install-python-env

if the venv package is not installed the idf_tools.py script fails.

Note that the error message is also misleading:

ERROR: This script was called from a virtual environment, can not create a virtual environment again

Desired state:
Check for this case and output a specific error (with instructions) early.

Cannot create a cargo pio project with the esp32

Hi, and first thx for all the hard work you've done.
I'm just starting to try the cargo-pio tool.
So i've executed this first command:
`cargo pio new -b esp32dev esp32dev'
the platform.ini is :

[platformio]
default_envs = debug

[env]
extra_scripts = pre:platformio.git.py, pre:platformio.patch.py, platformio.cargo.py
board = esp32dev
platform = espressif32
framework = arduino
rust_lib = platformio
rust_target = xtensa-esp32-espidf

[env:debug]
build_type = debug

[env:release]
build_type = release

After running the command:
cargo pio build
with arduino and then with espidf framework
I got error :

Building .pio/build/debug/bootloader.bin
esptool.py v3.1
Merged 1 ELF section
__run_cargo([".pio/build/debug/firmware.elf"], [".pio/build/debug/src/dummy.o"])
*** [.pio/build/debug/firmware.elf] TypeError : str expected, not tuple
Traceback (most recent call last):
  File "/home/vandell/.platformio/packages/tool-scons/scons-local-4.2.0/SCons/Action.py", line 1279, in execute
    result = self.execfunction(target=target, source=rsources, env=env)
  File "/home/vandell/Dev/Rust/Iot/Libs/platformio-test/esp32dev/platformio.cargo.py", line 54, in __run_cargo
    env["ENV"]["CARGO_PIO_BUILD_PROJECT_DIR"] = env.subst("$PROJECT_DIR"),
  File "/usr/lib/python3.9/os.py", line 684, in __setitem__
    value = self.encodevalue(value)
  File "/usr/lib/python3.9/os.py", line 756, in encode
    raise TypeError("str expected, not %s" % type(value).__name__)
TypeError: str expected, not tuple
==================================== [FAILED] Took 17.45 seconds ====================================

Environment    Status    Duration
-------------  --------  ------------
debug          FAILED    00:00:17.452
=============================== 1 failed, 0 succeeded in 00:00:17.452 ===============================

I tried to change the framework to the espidf
and exactly the same error.

rustc 1.57.0-nightly (9dd4ce80f 2021-09-17)
cargo 1.57.0-nightly (33ee5f82e 2021-09-17)


I try using the esp32 directly from creating the project from pio.
And it works as expected.
Any idea ?

Merging linker args from Rust + the idf project

rustflags = [
  "-C", "link-arg=-Wl,-Map=build.map",
]

Does not produce a map file.

I also tried a hard coded path:

rustflags = [
  "-C", "link-arg=-Wl,-Map=/home/mabez/development/rust/embedded/experiments/rust-esp32-std-hello/build.map",
]

Which also did not work

espidf installer: Make sure python does not come from virtual env

In the esp-idf installer when it tries to create a python virtual env with

python esp-idf-v4.3.1/tools/idf_tools.py --idf-path esp-idf-v4.3.1 --quiet --non-interactive install-python-env

if python is already from a virtual env this installation fails with:

ERROR: This script was called from a virtual environment, can not create a virtual environment again

Desired state:
Detect this and try to get the actual python executable from which the virtual env was created.

Change destination of the .embuild directory?

I've been looking at using the esp32 template for rust recently
https://github.com/esp-rs/esp-idf-template

I know there's an issue with path length's under Windows.
In that files under the generated .embuild directory tend to be quite deep.
Which means you need to shorten the path the project is located under.

One question I've got
is it possible to override the destination directory of .embuild via a configuration option or environmental variable some how?
I've been looking through the code but haven't found out how the path is calculated yet
I feel this would be pretty useful if it hasn't been implemented already.

Esp-idf installation is failing in Windows

Hi! I think esp-idf installation is failing for Windows, I discovered the issue while working in espup, at first I thought I was doing something wrong (as it's my first from-scratch Rust project) but I managed to reproduce it with esp-idf-sys via esp-idf-template. Steps to reproduce:

  1. Generate an esp-idf-template project: In my case I generated for esp32 with std and v.4.4
  2. Export $Env:LIBCLANG_PATH="<path_to_esp>/.espressif/tools/xtensa-esp32-elf-clang/lib"
  3. Build the project. At this point, esp-idf-sys should download and install esp-idf under the .embuild directory. The build fails with:
 ERROR: Could not find a version that satisfies the requirement windows-curses; sys_platform == "win32" (from esp-windows-curses) (from versions: none)
  ERROR: No matching distribution found for windows-curses; sys_platform == "win32"
  Traceback (most recent call last):
    File "C:\Users\sergio\Documents\Espressif\tests\espidf-test\.embuild\espressif\esp-idf\release-v4.4\tools\idf_tools.py", line 1973, in <module>
      main(sys.argv[1:])
    File "C:\Users\sergio\Documents\Espressif\tests\espidf-test\.embuild\espressif\esp-idf\release-v4.4\tools\idf_tools.py", line 1969, in main
      action_func(args)
    File "C:\Users\sergio\Documents\Espressif\tests\espidf-test\.embuild\espressif\esp-idf\release-v4.4\tools\idf_tools.py", line 1619, in action_install_python_env
      subprocess.check_call(run_args, stdout=sys.stdout, stderr=sys.stderr, env=env_copy)
    File "C:\Python311\Lib\subprocess.py", line 413, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['C:\\Users\\sergio\\Documents\\Espressif\\tests\\espidf-test\\.embuild\\espressif\\python_env\\idf4.4_py3.11_env\\Scripts\\python.exe', '-m', 'pip', 'install', '--no-warn-script-location', '-r', 'C:\\Users\\sergio\\Documents\\Espressif\\tests\\espidf-test\\.embuild\\espressif\\esp-idf\\release-v4.4\\requirements.txt', '--extra-index-url', 'https://dl.espressif.com/pypi']' returned non-zero exit status 1.
  Error: Could not install esp-idf

  Caused by:
      command '"python" "C:\\Users\\sergio\\Documents\\Espressif\\tests\\espidf-test\\.embuild\\espressif\\esp-idf\\release-v4.4\\tools\\idf_tools.py" "--idf-path" "C:\\Users\\sergio\\Documents\\Espressif\\tests\\espidf-test\\.embuild\\espressif\\esp-idf\\release-v4.4" "--non-interactive" "install-python-env"' exited with non-zero status code 1

Again, I am no expert in embuild/esp-idf-sys and even less, in Windows, so let me know if I'm missing something.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.