Closed Vollbrecht closed 1 week ago
This PR is still in preparation of the esp-idf-* and embuild release. Till they land it is blocked
ah i got bamboozled by the github ui ... it was the cmake ci where the no_std build fails not the cargo ones... RIP me.
no it seams esp-idf v5.2 has another problem in cargo when we build with no_std. The v5.1 runs are working. @ivmarkov do you have a idea why v5.2 failes to link here with "undefined reference to `getenv'"
~ ah i got bamboozled by the github ui ... it was the cmake ci where the no_std build fails not the cargo ones... RIP me. ~
no it seams esp-idf v5.2 has another problem in cargo when we build with no_std. The v5.1 runs are working. @ivmarkov do you have a idea why v5.2 failes to link here with "undefined reference to `getenv'"
Hmm. Is getenv
even defined in esp idf or is it something we patch into esp idf with link_patches
? Alternatively esp idf's newlib might still be providing it via its "shims" library (don't remember its exact name) and it might be that they've removed the getenv shim in recent esp idf versions? This call does not make any sense in an environment which does not make use of processes. On the other hand, an interesting question for no_std is also WHO requires this symbol? It can't be Rust STD itself, as it is not linked in? And even if Rust std wants it, if we (i.e
the template generated "hello, world" code) are not calling into it (and we shouldn't, in no_std), then who is?
Will look into it a bit more once I'm back.
By the way the recently committed PR for the i2c clock does not build on the c2. You might want to look into it.
It seems that esp idf itself fails (gccs eh_alloc.cc) and seems to be a linking issue in esp idf itself. Weird how it links with an idf.py
build...
the c2 issue was already on my radar, i created issues on esp-idf-hal, one of them is an easy fix, the other i have to think about a bit.
Why the h2 is failing in ci i dont understand, because that is already fixed in esp-idf-hal master, and running the ci locally with the same commands work for me.
~ ah i got bamboozled by the github ui ... it was the cmake ci where the no_std build fails not the cargo ones... RIP me. ~ no it seams esp-idf v5.2 has another problem in cargo when we build with no_std. The v5.1 runs are working. @ivmarkov do you have a idea why v5.2 failes to link here with "undefined reference to `getenv'"
Hmm. Is
getenv
even defined in esp idf or is it something we patch into esp idf withlink_patches
? Alternatively esp idf's newlib might still be providing it via its "shims" library (don't remember its exact name) and it might be that they've removed the getenv shim in recent esp idf versions? This call does not make any sense in an environment which does not make use of processes. On the other hand, an interesting question for no_std is also WHO requires this symbol? It can't be Rust STD itself, as it is not linked in? And even if Rust std wants it, if we (i.e the template generated "hello, world" code) are not calling into it (and we shouldn't, in no_std), then who is?Will look into it a bit more once I'm back.
Its double fun that it only makes a problem when we build no_std, but its working with the std build :D
the c2 issue was already on my radar, i created issues on esp-idf-hal, one of them is an easy fix, the other i have to think about a bit.
Why the h2 is failing in ci i dont understand, because that is already fixed in esp-idf-hal master, and running the ci locally with the same commands work for me.
Wrong patching in the template crate then or a similar setup issue? Can't be anything else.
@ivmarkov i rerun the template CI with the now patched esp-idf-hal/svc includes and now everything in both cmake and cargo seams to be ok again. Once we go through the release i update this PR and remove the patch sections.
for a grace period of 2weeks-1month i would like to have v5.1 still in the CI, so we can observe the transition from gcc12 & gcc13 a bit better, that's why i didn't removed it.
@ivmarkov thinking about it again, we could remove the v4.4 option in the advanced path now. What do you think?
I am also thinking about some other QOL things i would like to see personally but that provably is another PR. Like having in the advanced options the capability to set "global" or ".embuild" install, or have a new option for using this template against our git versions by injecting a [patch-crates.io] section etc.
@ivmarkov thinking about it again, we could remove the v4.4 option in the advanced path now. What do you think?
What is this giving us?
@ivmarkov thinking about it again, we could remove the v4.4 option in the advanced path now. What do you think?
Actually, I'm fine either way. Nobody is supposed to create new project based on 4.4.X anyway.
@ivmarkov thinking about it again, we could remove the v4.4 option in the advanced path now. What do you think?
Actually, I'm fine either way. Nobody is supposed to create new project based on 4.4.X anyway.
yeah i will remove it now.
This is just for the generation itself - CI will follow separate when we have a new esp-idf-sys/hal/svc release