Open illicitonion opened 2 weeks ago
The environment variables Cargo sets when building crates don't appear to get updated if the crate's Cargo.toml inherits values from the workspace, and the only change between builds is the value in the workspace's Cargo.toml.
% cat >Cargo.toml <<EOF [workspace] members = ["lib"] package.version = "0.2.0" package.readme = "beep.md" EOF % mkdir -p lib/src % cat >lib/Cargo.toml <<EOF [package] name = "lib" version = "0.1.0" edition = "2021" readme = { workspace = true } EOF % cat >lib/src/main.rs <<EOF fn main() { println!("Readme: {}", env!("CARGO_PKG_README")); } EOF % cargo run -p lib 2>/dev/null Readme: ../beep.md % cat >Cargo.toml <<EOF [workspace] members = ["lib"] package.version = "0.2.0" package.readme = true EOF % # Next command should print ../README.md because the workspace value changed: % cargo run -p lib 2>/dev/null Readme: ../beep.md % # Clearing the cache forces a rebuild, which gives the correct value: % rm -rf target % cargo run -p lib 2>/dev/null Readme: ../README.md
No response
cargo 1.79.0 (ffa9cf99a 2024-06-03) release: 1.79.0 commit-hash: ffa9cf99a594e59032757403d4c780b46dc2c43a commit-date: 2024-06-03 host: aarch64-apple-darwin libgit2: 1.7.2 (sys:0.18.3 vendored) libcurl: 8.1.2 (sys:0.4.72+curl-8.6.0 system ssl:(SecureTransport) LibreSSL/3.3.6) ssl: OpenSSL 1.1.1w 11 Sep 2023 os: Mac OS 13.5.2 [64-bit]
Just reproduced this without workspace inheritance involved.
Not seeing an existing issue for cargo-generated env variables but this seems similar in internals to #13280 and #10358.
Problem
The environment variables Cargo sets when building crates don't appear to get updated if the crate's Cargo.toml inherits values from the workspace, and the only change between builds is the value in the workspace's Cargo.toml.
Steps
Possible Solution(s)
No response
Notes
No response
Version