rust-lang/cargo · error · anyhow::Error
invalid `package.build` file name
Error message
invalid `package.build` file name
What it means
Error "invalid `package.build` file name" thrown in rust-lang/cargo.
Source
Thrown at src/workspace/parser/targets.rs:1136
"`build_file` started as a String and `normalize_path` shouldn't have changed that",
);
Ok(Some(TomlPackageBuild::SingleScript(build)))
}
Some(TomlPackageBuild::Auto(true)) => {
Ok(Some(TomlPackageBuild::SingleScript(BUILD_RS.to_owned())))
}
Some(TomlPackageBuild::MultipleScript(scripts)) => {
for script in scripts {
validate_build_name(script)?;
}
Ok(build.cloned())
}
}
}
fn validate_build_name(build: &str) -> CargoResult<()> {
if Path::new(build).file_stem().is_none() {
anyhow::bail!("invalid `package.build` file name");
}
Ok(())
}
fn name_or_panic(target: &TomlTarget) -> &str {
target
.name
.as_deref()
.unwrap_or_else(|| panic!("target name is required"))
}
fn validate_lib_name(target: &TomlTarget, warnings: &mut Vec<String>) -> CargoResult<()> {
validate_target_name(target, TARGET_KIND_HUMAN_LIB, TARGET_KIND_LIB, warnings)?;
let name = name_or_panic(target);
if name.contains('-') {
anyhow::bail!("library target names cannot contain hyphens: {}", name)
}
View on GitHub (pinned to 0e07a15537)
Solutions
- Use a valid file name for `package.build`, e.g. `build = "build.rs"` or another valid `.rs` path.
- Remove the `build` key to use the default `build.rs`.
When it happens
Trigger: Thrown at src/workspace/parser/targets.rs:1136 when the library encounters an invalid state.
Common situations: Occurs when `package.build` points to a file with an invalid name. Use a valid file name such as `build.rs` or a custom path like `build/main.rs`.
AI-assisted analysis of rust-lang/cargo@0e07a15537 (2026-08-06).
Data as JSON: /data/errors/e00d62de0e56e950.json.
Report an issue: GitHub.