{"record":{"id":"e1909922589d78bb","repo":"rust-lang/cargo","slug":"is-not-supported-in-build-script-overrides","errorCode":null,"errorMessage":"`{}` is not supported in build script overrides","messagePattern":"`(.+?)` is not supported in build script overrides","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/context/target.rs","lineNumber":232,"sourceCode":"                    let args = extra_link_args(LinkArgTarget::Example, key, value)?;\n                    output.linker_args.extend(args);\n                }\n                \"rustc-cfg\" => {\n                    let list = value.string_list(key)?;\n                    output.cfgs.extend(list.iter().map(|v| v.0.clone()));\n                }\n                \"rustc-check-cfg\" => {\n                    let list = value.string_list(key)?;\n                    output.check_cfgs.extend(list.iter().map(|v| v.0.clone()));\n                }\n                \"rustc-env\" => {\n                    for (name, val) in value.table(key)?.0 {\n                        let val = val.string(name)?.0;\n                        output.env.push((name.clone(), val.to_string()));\n                    }\n                }\n                \"warning\" | \"rerun-if-changed\" | \"rerun-if-env-changed\" => {\n                    anyhow::bail!(\"`{}` is not supported in build script overrides\", key);\n                }\n                _ => {\n                    let val = value.string(key)?.0;\n                    output.metadata.push((key.clone(), val.to_string()));\n                }\n            }\n        }\n        links_overrides.insert(lib_name, output);\n    }\n    Ok(links_overrides)\n}\n\nfn extra_link_args(\n    link_type: LinkArgTarget,\n    key: &str,\n    value: &CV,\n) -> CargoResult<Vec<(LinkArgTarget, String)>> {\n    let args = value.string_list(key)?;","sourceCodeStart":214,"sourceCodeEnd":250,"githubUrl":"https://github.com/rust-lang/cargo/blob/98a09e7e7d62850f14e5b6132101fc1edd19a16f/src/context/target.rs#L214-L250","documentation":"Thrown while parsing build script overrides in [target.<triple>.links.<lib>] config tables when the key is one of 'warning', 'rerun-if-changed', or 'rerun-if-env-changed'. These directives are only meaningful when emitted by actual build scripts at runtime, not when configured as static overrides.","triggerScenarios":"Adding a `warning`, `rerun-if-changed`, or `rerun-if-env-changed` key inside a `[target.x86_64-unknown-linux-gnu.links.foo]` table in config.toml.","commonSituations":"Attempting to suppress or control build script behavior via config overrides without understanding that these are runtime directives. Copying build script directives into config expecting them to work as overrides.","solutions":["Remove the 'warning', 'rerun-if-changed', or 'rerun-if-env-changed' key from the links override table","Control build script warnings via RUSTC_FLAGS or the actual build script code instead","Use the supported override keys: rustc-flags, rustc-link-lib, rustc-link-search, rustc-cfg, rustc-check-cfg, rustc-env"],"exampleFix":"# before (config.toml)\n[target.x86_64-unknown-linux-gnu.links.foo]\nrerun-if-changed = \"src/foo.c\"\n\n# after — remove unsupported key; handle in build.rs instead\n# (delete from config.toml; add `println!(\"cargo:rerun-if-changed=src/foo.c\");` in build.rs)","handlingStrategy":"validation","validationCode":"// Validate links override keys before writing config\nconst SUPPORTED_LINK_KEYS: &[&str] = &[\n    \"rustc-flags\", \"rustc-link-lib\", \"rustc-link-search\",\n    \"rustc-cfg\", \"rustc-check-cfg\", \"rustc-env\",\n];\nconst UNSUPPORTED_LINK_KEYS: &[&str] = &[\"warning\", \"rerun-if-changed\", \"rerun-if-env-changed\"];\nfn validate_links_override(table: &toml::Table) -> Result<(), String> {\n    for key in table.keys() {\n        if UNSUPPORTED_LINK_KEYS.contains(&key.as_str()) {\n            return Err(format!(\"`{key}` is not supported in build script overrides\"));\n        }\n    }\n    Ok(())\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only use rustc-* keys in [target.*.links.*] override tables","Handle warning, rerun-if-changed, and rerun-if-env-changed in the build script (build.rs) itself","Review the links override documentation for the full list of supported keys"],"tags":["configuration","build-scripts","target","links"],"backgroundTag":null,"analyzedSha":"98a09e7e7d62850f14e5b6132101fc1edd19a16f","analyzedAt":"2026-08-11T17:42:36.556Z","contentChangedAt":"2026-08-11T17:42:36.556Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}