Skip to content

Commit 7d3015a

Browse files
authored
Rollup merge of rust-lang#137723 - onur-ozkan:cfg-ver-description, r=pietroalbini,weihanglo
Make `rust.description` more general-purpose and pass `CFG_VER_DESCRIPTION` Moves the `description` field from the `rust` section to the `build` section as it can be useful for tools and is not specific to rustc. Also passes this value to tool builds through the `CFG_VER_DESCRIPTION` env. Motivated from https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Propagate.20rust.2Edescription.20to.20tools.20in.20dist.20build
2 parents ff6c07d + 0f7da1a commit 7d3015a

File tree

5 files changed

+37
-14
lines changed

5 files changed

+37
-14
lines changed

config.example.toml

+11-11
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,17 @@
189189
# The default stage to use for the `bench` subcommand
190190
#bench-stage = 2
191191

192+
# A descriptive string to be appended to version output (e.g., `rustc --version`),
193+
# which is also used in places like debuginfo `DW_AT_producer`. This may be useful for
194+
# supplementary build information, like distro-specific package versions.
195+
#
196+
# The Rust compiler will differentiate between versions of itself, including
197+
# based on this string, which means that if you wish to be compatible with
198+
# upstream Rust you need to set this to "". However, note that if you set this to "" but
199+
# are not actually compatible -- for example if you've backported patches that change
200+
# behavior -- this may lead to miscompilations or other bugs.
201+
#description = ""
202+
192203
# Build triple for the pre-compiled snapshot compiler. If `rustc` is set, this must match its host
193204
# triple (see `rustc --version --verbose`; cross-compiling the rust build system itself is NOT
194205
# supported). If `rustc` is unset, this must be a platform with pre-compiled host tools
@@ -614,17 +625,6 @@
614625
# otherwise, it's "dev".
615626
#channel = if "is a tarball source" { content of `src/ci/channel` file } else { "dev" }
616627

617-
# A descriptive string to be appended to `rustc --version` output, which is
618-
# also used in places like debuginfo `DW_AT_producer`. This may be useful for
619-
# supplementary build information, like distro-specific package versions.
620-
#
621-
# The Rust compiler will differentiate between versions of itself, including
622-
# based on this string, which means that if you wish to be compatible with
623-
# upstream Rust you need to set this to "". However, note that if you are not
624-
# actually compatible -- for example if you've backported patches that change
625-
# behavior -- this may lead to miscompilations or other bugs.
626-
#description = ""
627-
628628
# The root location of the musl installation directory. The library directory
629629
# will also need to contain libunwind.a for an unwinding implementation. Note
630630
# that this option only makes sense for musl targets that produce statically

src/bootstrap/configure.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ def v(*args):
292292
v("release-channel", "rust.channel", "the name of the release channel to build")
293293
v(
294294
"release-description",
295-
"rust.description",
295+
"build.description",
296296
"optional descriptive string for version output",
297297
)
298298
v("dist-compression-formats", None, "List of compression formats to use")

src/bootstrap/src/core/build_steps/tool.rs

+9
Original file line numberDiff line numberDiff line change
@@ -234,23 +234,32 @@ pub fn prepare_tool_cargo(
234234
cargo.env("CFG_VERSION", builder.rust_version());
235235
cargo.env("CFG_RELEASE_NUM", &builder.version);
236236
cargo.env("DOC_RUST_LANG_ORG_CHANNEL", builder.doc_rust_lang_org_channel());
237+
237238
if let Some(ref ver_date) = builder.rust_info().commit_date() {
238239
cargo.env("CFG_VER_DATE", ver_date);
239240
}
241+
240242
if let Some(ref ver_hash) = builder.rust_info().sha() {
241243
cargo.env("CFG_VER_HASH", ver_hash);
242244
}
243245

246+
if let Some(description) = &builder.config.description {
247+
cargo.env("CFG_VER_DESCRIPTION", description);
248+
}
249+
244250
let info = GitInfo::new(builder.config.omit_git_hash, &dir);
245251
if let Some(sha) = info.sha() {
246252
cargo.env("CFG_COMMIT_HASH", sha);
247253
}
254+
248255
if let Some(sha_short) = info.sha_short() {
249256
cargo.env("CFG_SHORT_COMMIT_HASH", sha_short);
250257
}
258+
251259
if let Some(date) = info.commit_date() {
252260
cargo.env("CFG_COMMIT_DATE", date);
253261
}
262+
254263
if !features.is_empty() {
255264
cargo.arg("--features").arg(features.join(", "));
256265
}

src/bootstrap/src/core/config/config.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -894,6 +894,7 @@ define_config! {
894894
#[derive(Default)]
895895
struct Build {
896896
build: Option<String> = "build",
897+
description: Option<String> = "description",
897898
host: Option<Vec<String>> = "host",
898899
target: Option<Vec<String>> = "target",
899900
build_dir: Option<String> = "build-dir",
@@ -1176,6 +1177,7 @@ define_config! {
11761177
incremental: Option<bool> = "incremental",
11771178
default_linker: Option<String> = "default-linker",
11781179
channel: Option<String> = "channel",
1180+
// FIXME: Remove this field at Q2 2025, it has been replaced by build.description
11791181
description: Option<String> = "description",
11801182
musl_root: Option<String> = "musl-root",
11811183
rpath: Option<bool> = "rpath",
@@ -1583,6 +1585,7 @@ impl Config {
15831585
config.change_id = toml.change_id.inner;
15841586

15851587
let Build {
1588+
mut description,
15861589
build,
15871590
host,
15881591
target,
@@ -1827,7 +1830,7 @@ impl Config {
18271830
randomize_layout,
18281831
default_linker,
18291832
channel: _, // already handled above
1830-
description,
1833+
description: rust_description,
18311834
musl_root,
18321835
rpath,
18331836
verbose_tests,
@@ -1920,7 +1923,12 @@ impl Config {
19201923
set(&mut config.jemalloc, jemalloc);
19211924
set(&mut config.test_compare_mode, test_compare_mode);
19221925
set(&mut config.backtrace, backtrace);
1923-
config.description = description;
1926+
if rust_description.is_some() {
1927+
eprintln!(
1928+
"Warning: rust.description is deprecated. Use build.description instead."
1929+
);
1930+
}
1931+
description = description.or(rust_description);
19241932
set(&mut config.rust_dist_src, dist_src);
19251933
set(&mut config.verbose_tests, verbose_tests);
19261934
// in the case "false" is set explicitly, do not overwrite the command line args
@@ -1986,6 +1994,7 @@ impl Config {
19861994
}
19871995

19881996
config.reproducible_artifacts = flags.reproducible_artifact;
1997+
config.description = description;
19891998

19901999
// We need to override `rust.channel` if it's manually specified when using the CI rustc.
19912000
// This is because if the compiler uses a different channel than the one specified in config.toml,

src/bootstrap/src/utils/change_tracker.rs

+5
Original file line numberDiff line numberDiff line change
@@ -360,4 +360,9 @@ pub const CONFIG_CHANGE_HISTORY: &[ChangeInfo] = &[
360360
severity: ChangeSeverity::Info,
361361
summary: "Added `build.test-stage = 2` to 'tools' profile defaults",
362362
},
363+
ChangeInfo {
364+
change_id: 137723,
365+
severity: ChangeSeverity::Info,
366+
summary: "The rust.description option has moved to build.description and rust.description is now deprecated.",
367+
},
363368
];

0 commit comments

Comments
 (0)