{"record":{"id":"8a10d1d6c167ff84","repo":"linera-io/linera-protocol","slug":"build-failed","errorCode":null,"errorMessage":"build failed","messagePattern":"build failed","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"linera-service/src/project.rs","lineNumber":304,"sourceCode":"        (linera_sdk_dep, linera_sdk_dev_dep)\n    }\n\n    /// Builds the project's contract and service to Wasm, returning their bytecode paths.\n    pub fn build(&self, name: Option<String>) -> Result<(PathBuf, PathBuf), anyhow::Error> {\n        let name = match name {\n            Some(name) => name,\n            None => self.project_package_name()?.replace('-', \"_\"),\n        };\n        let contract_name = format!(\"{name}_contract\");\n        let service_name = format!(\"{name}_service\");\n        let cargo_build = Command::new(\"cargo\")\n            .arg(\"build\")\n            .arg(\"--release\")\n            .args([\"--target\", \"wasm32-unknown-unknown\"])\n            .current_dir(&self.root)\n            .spawn()?\n            .wait()?;\n        ensure!(cargo_build.success(), \"build failed\");\n        let build_path = self\n            .workspace_root()?\n            .join(\"target/wasm32-unknown-unknown/release\");\n        Ok((\n            build_path.join(contract_name).with_extension(\"wasm\"),\n            build_path.join(service_name).with_extension(\"wasm\"),\n        ))\n    }\n\n    fn project_package_name(&self) -> Result<String> {\n        let manifest = Manifest::from_path(self.cargo_toml_path())?;\n        let name = manifest\n            .package\n            .context(\"Cargo.toml is missing `[package]`\")?\n            .name;\n        Ok(name)\n    }\n","sourceCodeStart":286,"sourceCodeEnd":322,"githubUrl":"https://github.com/linera-io/linera-protocol/blob/6c226ddcb332ef55118dc8d0aafbd093d5420899/linera-service/src/project.rs#L286-L322","documentation":"Project::build compiles the application's contract and service with `cargo build --release --target wasm32-unknown-unknown` and reports any non-zero cargo exit as 'build failed'. On success it returns the two .wasm artifacts from workspace target/wasm32-unknown-unknown/release/.","triggerScenarios":"`linera project publish` or Project::build where cargo fails: a compile error in the application, the wasm32-unknown-unknown target or required toolchain not installed, or dependency resolution failure.","commonSituations":"Fresh machine without `rustup target add wasm32-unknown-unknown`; application code using crates that do not compile to wasm (std networking, file IO); dependency drift after an unchecked cargo update.","solutions":["Run `cargo build --release --target wasm32-unknown-unknown` in the project directory yourself to see the real compiler error","Install the target if missing: `rustup target add wasm32-unknown-unknown`","Fix compile errors or replace non-wasm-compatible dependencies in contract/service code","Pin dependency versions in the application project to avoid surprise breakage"],"exampleFix":"# before\n$ linera project publish .\nerror: build failed\n\n# after\n$ rustup target add wasm32-unknown-unknown\n$ cd my-dapp && cargo build --release --target wasm32-unknown-unknown   # shows the real error; fix it\n$ cd .. && linera project publish .","handlingStrategy":"validation","validationCode":"let out = std::process::Command::new(\"cargo\")\n    .args([\"check\", \"--target\", \"wasm32-unknown-unknown\"])\n    .current_dir(&project_dir)\n    .output()?;\nif !out.status.success() {\n    eprintln!(\"{}\", String::from_utf8_lossy(&out.stderr)); // surface the real error early\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add `rustup target add wasm32-unknown-unknown` to Dockerfiles and CI","Preflight with cargo check --target wasm32-unknown-unknown before publish","Avoid crates that cannot compile to wasm in contract/service code"],"tags":["cli","project","wasm","cargo","build"],"backgroundTag":"wasm-build-failed","analyzedSha":"6c226ddcb332ef55118dc8d0aafbd093d5420899","analyzedAt":"2026-08-22T22:49:09.787Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}