esp-rs / embuild Goto Github PK
View Code? Open in Web Editor NEWBuild support for embedded Rust: Cargo integration with other embedded build ecosystems & tools, like PlatformIO, CMake and kconfig.
License: Apache License 2.0
Build support for embedded Rust: Cargo integration with other embedded build ecosystems & tools, like PlatformIO, CMake and kconfig.
License: Apache License 2.0
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.
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:
-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)__trunctfdf2
); if I remove the -nodefaultlibs
, it works OKrustflags = ["-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)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 setUnresolved questions/issues:
-nodefaultlibs
option, or that particular intrinsic is simply not needed on Xtensa. Not sureI'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.
When I want to compile esp-idf-svc
on RPi5, but it does not work (on x86_64 is everything OK).
Error is caused there:
https://github.com/esp-rs/embuild/blob/master/src/espidf.rs#L246
First interesting error:
stderror:
Build configuration: BuildConfig {
esp_idf_tools_install_dir: None,
esp_idf_sdkconfig: None,
esp_idf_sdkconfig_defaults: Some(
[
"sdkconfig.defaults",
],
),
mcu: Some(
"esp32c3",
),
native: NativeConfig {
esp_idf_version: Some(
Tag(
"v5.2.2",
),
),
esp_idf_repository: None,
esp_idf_cmake_generator: None,
idf_path: None,
extra_components: [],
esp_idf_components: None,
esp_idf_component_manager: None,
},
esp_idf_sys_root_crate: Some(
"demo",
),
}
Content of:
std::env::consts::OS
: linux
std::env::consts::ARCH
: arm
Content of version:
VersionInfo { any: None, linux_amd64: Some(PlatformDownloadInfo { rename_dist: Some("ninja-linux-v1.11.1.zip"), sha256: "b901ba96e486dce377f9a070ed4ef3f79deb45f4ffe2938f8e7ddc69cfb3df77", size: 119463, url: "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip" }), linux_arm64: None, linux_armel: None, linux_i686: None, macos: Some(PlatformDownloadInfo { rename_dist: Some("ninja-mac-v1.11.1.zip"), sha256: "482ecb23c59ae3d4f158029112de172dd96bb0e97549c4b1ca32d8fad11f873e", size: 277306, url: "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-mac.zip" }), macos_arm64: Some(PlatformDownloadInfo { rename_dist: Some("ninja-mac-v1.11.1.zip"), sha256: "482ecb23c59ae3d4f158029112de172dd96bb0e97549c4b1ca32d8fad11f873e", size: 277306, url: "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-mac.zip" }), name: Some("1.11.1"), status: Some(Recommended), win32: None, win64: Some(PlatformDownloadInfo { rename_dist: Some("ninja-win-v1.11.1.zip"), sha256: "524b344a1a9a55005eaf868d991e090ab8ce07fa109f1820d40e74642e289abc", size: 285922, url: "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip" }) }
Whole log:
compile.txt
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
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
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.
Currently, using clap
by itself needs much boilerplate code.
I think we can reduce the code, eliminate the constants and make it easier to read if we switch to structopt
or the new [email protected]
(when this version lands) attributes.
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 ?
Should be done automatically when a new tag is pushed.
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?
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.
Is it possible to use libs from lib_deps or lib folder in rs file? If so how would one do it?
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?
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.
cargo pio new <your-project-name> --board <your-board> --frameworks arduino
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++:dummy.c
to dummy.cpp
and include a stub for setup()
and loop()
. The error from step 2 disappears.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])
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")
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?
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.
Not sure which is the best place to ask - I have asked here too - esp-rs/esp-idf-sys#201 - will close both places wherever I get the answer
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
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.
If embuild is compiled with:
espidf
feature enabledthen 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:
channel
field of a rust-toolchain fileI've added a PR for the rust-version
field here: #45.
Generate packages in every new release for the following architectures:
I'm developing a xmpp client for esp32s3, but using tokio-xmpp, I get the error "error: linking with ldproxy
failed: exit code: 1".
More procisely I get "undefined reference to gethostname", which can be read using the hostname crate, and several call target out of range.
Has anyone ever had this problems? Do you have any reccomendation?
The custom tools parsing code from #85 does not process the overrides from tools.json.
This breaks the build on macOS and likely several other platforms. PR incoming to fix it.
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?
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?
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:
esp32
with std
and v.4.4
.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.
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
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
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
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?
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
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.
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}
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:
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!
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?
--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.
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:
embuild
.cargo-pio-link
will be renamed to ldproxy
.platformio
and refactor code.
pio
.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
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:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.