Skip to content

Commit 3f3ac16

Browse files
authored
Rollup merge of rust-lang#76878 - pietroalbini:version, r=Mark-Simulacrum
Move the version number to a plaintext file The Rust version number is currently embedded in bootstrap's source code, which makes it hard to update it automatically or access it outside of ./x.py (as you'd have to parse the source code). This PR moves the version number to a standalone plaintext file, which makes accessing or updating it trivial. r? @Mark-Simulacrum
2 parents a3d530b + b9af3e3 commit 3f3ac16

File tree

8 files changed

+23
-21
lines changed

8 files changed

+23
-21
lines changed

src/bootstrap/channel.rs

-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ use build_helper::output;
1212

1313
use crate::Build;
1414

15-
// The version number
16-
pub const CFG_RELEASE_NUM: &str = "1.48.0";
17-
1815
pub struct GitInfo {
1916
inner: Option<Info>,
2017
}

src/bootstrap/dist.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ use build_helper::{output, t};
1818

1919
use crate::builder::{Builder, RunConfig, ShouldRun, Step};
2020
use crate::cache::{Interned, INTERNER};
21-
use crate::channel;
2221
use crate::compile;
2322
use crate::config::TargetSelection;
2423
use crate::tool::{self, Tool};
@@ -569,7 +568,7 @@ impl Step for Rustc {
569568
&page_dst,
570569
&[
571570
("<INSERT DATE HERE>", &month_year),
572-
("<INSERT VERSION HERE>", channel::CFG_RELEASE_NUM),
571+
("<INSERT VERSION HERE>", &builder.version),
573572
],
574573
);
575574
}
@@ -2301,9 +2300,9 @@ impl Step for Extended {
23012300
}
23022301

23032302
fn add_env(builder: &Builder<'_>, cmd: &mut Command, target: TargetSelection) {
2304-
let mut parts = channel::CFG_RELEASE_NUM.split('.');
2303+
let mut parts = builder.version.split('.');
23052304
cmd.env("CFG_RELEASE_INFO", builder.rust_version())
2306-
.env("CFG_RELEASE_NUM", channel::CFG_RELEASE_NUM)
2305+
.env("CFG_RELEASE_NUM", &builder.version)
23072306
.env("CFG_RELEASE", builder.rust_release())
23082307
.env("CFG_VER_MAJOR", parts.next().unwrap())
23092308
.env("CFG_VER_MINOR", parts.next().unwrap())

src/bootstrap/doc.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ impl Step for Std {
433433
.arg("-Z")
434434
.arg("unstable-options")
435435
.arg("--resource-suffix")
436-
.arg(crate::channel::CFG_RELEASE_NUM)
436+
.arg(&builder.version)
437437
.arg("--index-page")
438438
.arg(&builder.src.join("src/doc/index.md"));
439439

@@ -659,7 +659,7 @@ impl Step for ErrorIndex {
659659
let mut index = tool::ErrorIndex::command(builder, self.compiler);
660660
index.arg("html");
661661
index.arg(out.join("error-index.html"));
662-
index.arg(crate::channel::CFG_RELEASE_NUM);
662+
index.arg(&builder.version);
663663

664664
builder.run(&mut index);
665665
}

src/bootstrap/lib.rs

+14-7
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,9 @@ pub struct Build {
218218
/// User-specified configuration from `config.toml`.
219219
config: Config,
220220

221+
// Version information
222+
version: String,
223+
221224
// Properties derived from the above configuration
222225
src: PathBuf,
223226
out: PathBuf,
@@ -380,6 +383,10 @@ impl Build {
380383
.unwrap()
381384
.to_path_buf();
382385

386+
let version = std::fs::read_to_string(src.join("src").join("version"))
387+
.expect("failed to read src/version");
388+
let version = version.trim();
389+
383390
let mut build = Build {
384391
initial_rustc: config.initial_rustc.clone(),
385392
initial_cargo: config.initial_cargo.clone(),
@@ -395,6 +402,7 @@ impl Build {
395402
targets: config.targets.clone(),
396403

397404
config,
405+
version: version.to_string(),
398406
src,
399407
out,
400408

@@ -433,8 +441,7 @@ impl Build {
433441
.next()
434442
.unwrap()
435443
.trim();
436-
let my_version = channel::CFG_RELEASE_NUM;
437-
if local_release.split('.').take(2).eq(my_version.split('.').take(2)) {
444+
if local_release.split('.').take(2).eq(version.split('.').take(2)) {
438445
build.verbose(&format!("auto-detected local-rebuild {}", local_release));
439446
build.local_rebuild = true;
440447
}
@@ -785,7 +792,7 @@ impl Build {
785792

786793
match which {
787794
GitRepo::Rustc => {
788-
let sha = self.rust_sha().unwrap_or(channel::CFG_RELEASE_NUM);
795+
let sha = self.rust_sha().unwrap_or(&self.version);
789796
Some(format!("/rustc/{}", sha))
790797
}
791798
GitRepo::Llvm => Some(String::from("/rustc/llvm")),
@@ -1016,7 +1023,7 @@ impl Build {
10161023

10171024
/// Returns the value of `release` above for Rust itself.
10181025
fn rust_release(&self) -> String {
1019-
self.release(channel::CFG_RELEASE_NUM)
1026+
self.release(&self.version)
10201027
}
10211028

10221029
/// Returns the "package version" for a component given the `num` release
@@ -1036,7 +1043,7 @@ impl Build {
10361043

10371044
/// Returns the value of `package_vers` above for Rust itself.
10381045
fn rust_package_vers(&self) -> String {
1039-
self.package_vers(channel::CFG_RELEASE_NUM)
1046+
self.package_vers(&self.version)
10401047
}
10411048

10421049
/// Returns the value of `package_vers` above for Cargo
@@ -1070,7 +1077,7 @@ impl Build {
10701077
}
10711078

10721079
fn llvm_tools_package_vers(&self) -> String {
1073-
self.package_vers(channel::CFG_RELEASE_NUM)
1080+
self.package_vers(&self.version)
10741081
}
10751082

10761083
fn llvm_tools_vers(&self) -> String {
@@ -1087,7 +1094,7 @@ impl Build {
10871094
/// Note that this is a descriptive string which includes the commit date,
10881095
/// sha, version, etc.
10891096
fn rust_version(&self) -> String {
1090-
self.rust_info.version(self, channel::CFG_RELEASE_NUM)
1097+
self.rust_info.version(self, &self.version)
10911098
}
10921099

10931100
/// Returns the full commit hash.

src/bootstrap/native.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use std::process::Command;
1919
use build_helper::{output, t};
2020

2121
use crate::builder::{Builder, RunConfig, ShouldRun, Step};
22-
use crate::channel;
2322
use crate::config::TargetSelection;
2423
use crate::util::{self, exe};
2524
use crate::GitRepo;
@@ -296,7 +295,7 @@ impl Step for Llvm {
296295
// release number on the dev channel.
297296
cfg.define("LLVM_VERSION_SUFFIX", "-rust-dev");
298297
} else {
299-
let suffix = format!("-rust-{}-{}", channel::CFG_RELEASE_NUM, builder.config.channel);
298+
let suffix = format!("-rust-{}-{}", builder.version, builder.config.channel);
300299
cfg.define("LLVM_VERSION_SUFFIX", suffix);
301300
}
302301

src/bootstrap/test.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ impl Step for RustdocJSStd {
636636
.arg("--crate-name")
637637
.arg("std")
638638
.arg("--resource-suffix")
639-
.arg(crate::channel::CFG_RELEASE_NUM)
639+
.arg(&builder.version)
640640
.arg("--doc-folder")
641641
.arg(builder.doc_out(self.target))
642642
.arg("--test-folder")

src/bootstrap/tool.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use std::process::{exit, Command};
77
use build_helper::t;
88

99
use crate::builder::{Builder, Cargo as CargoCommand, RunConfig, ShouldRun, Step};
10-
use crate::channel;
1110
use crate::channel::GitInfo;
1211
use crate::compile;
1312
use crate::config::TargetSelection;
@@ -255,7 +254,7 @@ pub fn prepare_tool_cargo(
255254
cargo.env("CFG_RELEASE", builder.rust_release());
256255
cargo.env("CFG_RELEASE_CHANNEL", &builder.config.channel);
257256
cargo.env("CFG_VERSION", builder.rust_version());
258-
cargo.env("CFG_RELEASE_NUM", channel::CFG_RELEASE_NUM);
257+
cargo.env("CFG_RELEASE_NUM", &builder.version);
259258

260259
let info = GitInfo::new(builder.config.ignore_git, &dir);
261260
if let Some(sha) = info.sha() {

src/version

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.48.0

0 commit comments

Comments
 (0)