diff --git a/src/cargo/core/compiler/compilation.rs b/src/cargo/core/compiler/compilation.rs index ffd3881dc57..29642f13d79 100644 --- a/src/cargo/core/compiler/compilation.rs +++ b/src/cargo/core/compiler/compilation.rs @@ -343,6 +343,10 @@ impl<'cfg> Compilation<'cfg> { "CARGO_PKG_RUST_VERSION", &pkg.rust_version().unwrap_or(&String::new()), ) + .env( + "CARGO_PKG_README", + metadata.readme.as_ref().unwrap_or(&String::new()), + ) .cwd(pkg.root()); // Apply any environment variables from the config diff --git a/src/doc/src/reference/environment-variables.md b/src/doc/src/reference/environment-variables.md index 2ed986fb5d2..95c4c87fbb9 100644 --- a/src/doc/src/reference/environment-variables.md +++ b/src/doc/src/reference/environment-variables.md @@ -231,6 +231,7 @@ corresponding environment variable is set to the empty string, `""`. * `CARGO_PKG_RUST_VERSION` --- The Rust version from the manifest of your package. Note that this is the minimum Rust version supported by the package, not the current Rust version. +* `CARGO_PKG_README` --- Path to the README file of your package. * `CARGO_CRATE_NAME` --- The name of the crate that is currently being compiled. It is the name of the [Cargo target] with `-` converted to `_`, such as the name of the library, binary, example, integration test, or benchmark. * `CARGO_BIN_NAME` --- The name of the binary that is currently being compiled. Only set for [binaries] or binary [examples]. This name does not include any diff --git a/tests/testsuite/build.rs b/tests/testsuite/build.rs index ca7f669b2e1..743f3612560 100644 --- a/tests/testsuite/build.rs +++ b/tests/testsuite/build.rs @@ -1370,6 +1370,7 @@ fn crate_env_vars() { license = "MIT OR Apache-2.0" license-file = "license.txt" rust-version = "1.61.0" + readme = "../../README.md" [[bin]] name = "foo-bar" @@ -1395,6 +1396,7 @@ fn crate_env_vars() { static LICENSE_FILE: &'static str = env!("CARGO_PKG_LICENSE_FILE"); static DESCRIPTION: &'static str = env!("CARGO_PKG_DESCRIPTION"); static RUST_VERSION: &'static str = env!("CARGO_PKG_RUST_VERSION"); + static README: &'static str = env!("CARGO_PKG_README"); static BIN_NAME: &'static str = env!("CARGO_BIN_NAME"); static CRATE_NAME: &'static str = env!("CARGO_CRATE_NAME"); @@ -1414,6 +1416,7 @@ fn crate_env_vars() { assert_eq!("license.txt", LICENSE_FILE); assert_eq!("This is foo", DESCRIPTION); assert_eq!("1.61.0", RUST_VERSION); + assert_eq!("../../README.md", README); let s = format!("{}.{}.{}-{}", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_PRE); assert_eq!(s, VERSION);