`cargo run` fails on WebAssembly target due to `CARGO_BUILD_TARGET` leaking into `rustc_codegen_spirv` build

Aperta Adatta ai principianti
#3,939 2 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
68/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
rust, wasm
Ambito
build-system

Direzione di ricerca

Inizia con node-graph/nodes/raster/shaders/build.rs e la chiamata cargo_gpu::Install::from_shader_crate(...). Riproduci il problema con cargo run, quindi verifica che la build interna utilizzi il host target invece del WebAssembly target ereditato. Il lavoro è completato quando il workflow standard di cargo run termina dopo raster-nodes-shaders senza l’errore dylib.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

When running the standard cargo run development workflow, the build fails while compiling the web frontend (wasm-pack build ./wrapper --dev --target=web).

The failure occurs in the raster-nodes-shaders crate's build.rs script. The build script attempts to compile the rustc_codegen_spirv compiler backend, but the parent CARGO_BUILD_TARGET=wasm32-unknown-unknown environment variable is inherited by the inner cargo build. Because WebAssembly does not support dynamic libraries (dylib), the inner build fails.

Error Output
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
   Compiling raster-nodes-shaders v0.1.0 (../Graphite/node-graph/nodes/raster/shaders)
error: failed to run custom build command for `raster-nodes-shaders v0.1.0 (../Graphite/node-graph/nodes/raster/shaders)`

Caused by:
  ...
  error: cannot produce dylib for `rustc_codegen_spirv v0.9.0 (https://github.com/Firestar99/rust-gpu-new?rev=c12f2161...#c12f2161)` as the target `wasm32-unknown-unknown` does not support these crate types
Steps to Reproduce
  1. Clone the repository.
  2. Ensure Node.js and Rust prerequisites are installed.
  3. Run cargo run.
  4. Observe the build crash when wasm-pack reaches raster-nodes-shaders.
Proposed Solution

The inner build initiated by cargo_gpu::Install inside node-graph/nodes/raster/shaders/build.rs needs to compile for the host OS, not the WebAssembly target.

Clearing the CARGO_BUILD_TARGET environment variable inside build.rs before it kicks off the cargo_gpu build resolves the issue and allows the compilation to succeed:

// node-graph/nodes/raster/shaders/build.rs

// Inside main():
unsafe { std::env::remove_var("CARGO_BUILD_TARGET"); }

// ... followed by the existing cargo_gpu::Install::from_shader_crate(...) logic
Environment
  • OS: macOS 26.3.1 (Build 25D2128)
  • Rust Version: rustc 1.92.0 (ded5c06cf 2025-12-08)
  • Node.js: v22.21.1
🤖 AI disclosure

I used Gemini to help me understand the error message. This message and the fix are mine.

Lingua principale
Rust
Stelle
27.3k
Fork
1.3k
Merge medio
1g 7h
PR unite (30g)
54

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di GraphiteEditor/Graphite

Tutte le issue di GraphiteEditor/Graphite

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.