let target = self.target;
let compiler = self.compiler;
- if let Some(keep_stage) = builder.config.keep_stage {
- if keep_stage <= compiler.stage {
- println!("Warning: Using a potentially old libstd. This may not behave well.");
- builder.ensure(StdLink {
- compiler: compiler,
- target_compiler: compiler,
- target,
- });
- return;
- }
+ if builder.config.keep_stage.contains(&compiler.stage) {
+ builder.info("Warning: Using a potentially old libstd. This may not behave well.");
+ builder.ensure(StdLink {
+ compiler: compiler,
+ target_compiler: compiler,
+ target,
+ });
+ return;
}
builder.ensure(StartupObjects { compiler, target });
let target = self.target;
let compiler = self.compiler;
- if let Some(keep_stage) = builder.config.keep_stage {
- if keep_stage <= compiler.stage {
- println!("Warning: Using a potentially old libtest. This may not behave well.");
- builder.ensure(TestLink {
- compiler: compiler,
- target_compiler: compiler,
- target,
- });
- return;
- }
- }
-
builder.ensure(Std { compiler, target });
+ if builder.config.keep_stage.contains(&compiler.stage) {
+ builder.info("Warning: Using a potentially old libtest. This may not behave well.");
+ builder.ensure(TestLink {
+ compiler: compiler,
+ target_compiler: compiler,
+ target,
+ });
+ return;
+ }
+
if builder.force_use_stage1(compiler, target) {
builder.ensure(Test {
compiler: builder.compiler(1, builder.config.build),
let compiler = self.compiler;
let target = self.target;
- if let Some(keep_stage) = builder.config.keep_stage {
- if keep_stage <= compiler.stage {
- println!("Warning: Using a potentially old librustc. This may not behave well.");
- builder.ensure(RustcLink {
- compiler: compiler,
- target_compiler: compiler,
- target,
- });
- return;
- }
- }
-
builder.ensure(Test { compiler, target });
+ if builder.config.keep_stage.contains(&compiler.stage) {
+ builder.info("Warning: Using a potentially old librustc. This may not behave well.");
+ builder.ensure(RustcLink {
+ compiler: compiler,
+ target_compiler: compiler,
+ target,
+ });
+ return;
+ }
+
if builder.force_use_stage1(compiler, target) {
builder.ensure(Rustc {
compiler: builder.compiler(1, builder.config.build),
builder.ensure(Rustc { compiler, target });
- if let Some(keep_stage) = builder.config.keep_stage {
- if keep_stage <= compiler.stage {
- println!("Warning: Using a potentially old codegen backend. \
- This may not behave well.");
- // Codegen backends are linked separately from this step today, so we don't do
- // anything here.
- return;
- }
+ if builder.config.keep_stage.contains(&compiler.stage) {
+ builder.info("Warning: Using a potentially old codegen backend. \
+ This may not behave well.");
+ // Codegen backends are linked separately from this step today, so we don't do
+ // anything here.
+ return;
}
if builder.force_use_stage1(compiler, target) {
pub verbose: usize, // number of -v args; each extra -v after the first is passed to Cargo
pub on_fail: Option<String>,
pub stage: Option<u32>,
- pub keep_stage: Option<u32>,
+ pub keep_stage: Vec<u32>,
pub host: Vec<Interned<String>>,
pub target: Vec<Interned<String>>,
opts.optopt("", "on-fail", "command to run on failure", "CMD");
opts.optflag("", "dry-run", "dry run; don't build anything");
opts.optopt("", "stage", "stage to build", "N");
- opts.optopt("", "keep-stage", "stage to keep without recompiling", "N");
+ opts.optmulti("", "keep-stage", "stage(s) to keep without recompiling", "N");
opts.optopt("", "src", "path to the root of the rust checkout", "DIR");
opts.optopt("j", "jobs", "number of jobs to run in parallel", "JOBS");
opts.optflag("h", "help", "print this help message");
dry_run: matches.opt_present("dry-run"),
on_fail: matches.opt_str("on-fail"),
rustc_error_format: matches.opt_str("error-format"),
- keep_stage: matches.opt_str("keep-stage").map(|j| j.parse().unwrap()),
+ keep_stage: matches.opt_strs("keep-stage")
+ .into_iter().map(|j| j.parse().unwrap())
+ .collect(),
host: split(matches.opt_strs("host"))
.into_iter()
.map(|x| INTERNER.intern_string(x))