j'entre la commande suivante : cargo generate esp-rs/esp-idf-template cargo
je parvient à créer le projet normalement, mais j'ai l'erreur suivante au moment du build:
error: failed to run custom build command for `esp-idf-sys v0.34.1`
j'entre la commande suivante : cargo generate esp-rs/esp-idf-template cargo
je parvient à créer le projet normalement, mais j'ai l'erreur suivante au moment du build:
error: failed to run custom build command for `esp-idf-sys v0.34.1`
Bonjour,
Comme l'indique le message d'erreur, la compilation échoue car elle génère un dossier dont le chemin est trop long.
Le message d'erreur propose de diminuer la taille du nom du projet ou de passer par WSL2.
Mais il y a peut-être une autre solution.
Windows a tendance à interdire les longs chemins de dossier. La manière de les autoriser dépend de la version de Windows utilisée. Voici deux liens :
https://superuser.com/questions/1225...260-characters
https://www.howtogeek.com/266621/how...60-characters/
Cela dit, il y a une chose que je ne comprends pas. Les articles que je viens de citer parlent d'une limite de 260 caractères. Or, dans le message d'erreur, le chemin qui se termine par "out" contient moins de 150 caractères.
Pourrais-tu essayer de créer à la main un dossier vide "out" avec le même chemin que celui indiqué dans le message d'erreur pour voir si ton système d'exploitation t'empêche de le créer ?
EDIT 23h45 :
OMG, j'ai trouvé ! Le code coupable :
Source : https://github.com/esp-rs/esp-idf-sy...n.rs#L438-L443
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #[cfg(windows)] { if out_dir.len() > 88 { report(format!("Too long output directory: `{out_dir}`. Shorten your project path down to no more than 10 characters (or use WSL2 and its native Linux filesystem). Note that tricks like Windows `subst` do NOT work!"))?; } }
Le plus intéressant à retenir, c'est la démarche :
- Comme c'est la compilation de esp-idf-svc 0.48.1 qui plante, il faut partir du code source.
- Dans la page https://crates.io/crates/esp-idf-svc , on peut voir que le dépot est : https://github.com/esp-rs/esp-idf-svc
- git clone git@github.com:esp-rs/esp-idf-svc.git
- Aller dans le dossier esp-idf-svc et exécuter git checkout v0.48.1.
- Exécuter cargo vendor qui installe les sources des dépendances directes et indirectes dans un sous-dossier vendor.
- Rechercher de quel code vient le message d'erreur, par exemple en cherchant la chaîne WSL2 : il y a un seul résultat et c'est dans vendor/esp-idf-sys/build/common.rs.
EDIT 23h59 :
Cela dit, je ne sais pas pourquoi l'auteur a mis une telle limite. Dans le code, out_dir correspond au chemin converti en UTF-8 avec Path::to_string_lossy. Une limite de 88 octets, c'est peu.
EDIT 2024-04-06-00h21 :
Je viens de capter que la commande cargo generate esp-rs/esp-idf-template cargo vient du README.md du projet : https://github.com/esp-rs/esp-idf-template
C'est le genre de détail qu'il vaut mieux préciser dans un message qui demande de l'aide. Quand on ne connaît pas le contexte, on a plus de chances de répondre à côté.
Partager