Add --all flag to ./x.py clean
This flag removes all build artifacts, including the LLVM build directory.
This commit is contained in:
parent
4cdb36262b
commit
2c78bb49fd
4 changed files with 31 additions and 20 deletions
|
@ -306,7 +306,7 @@ impl<'a> Builder<'a> {
|
||||||
Subcommand::Bench { ref paths, .. } => (Kind::Bench, &paths[..]),
|
Subcommand::Bench { ref paths, .. } => (Kind::Bench, &paths[..]),
|
||||||
Subcommand::Dist { ref paths } => (Kind::Dist, &paths[..]),
|
Subcommand::Dist { ref paths } => (Kind::Dist, &paths[..]),
|
||||||
Subcommand::Install { ref paths } => (Kind::Install, &paths[..]),
|
Subcommand::Install { ref paths } => (Kind::Install, &paths[..]),
|
||||||
Subcommand::Clean => panic!(),
|
Subcommand::Clean { .. } => panic!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let builder = Builder {
|
let builder = Builder {
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
//! Responsible for cleaning out a build directory of all old and stale
|
//! Responsible for cleaning out a build directory of all old and stale
|
||||||
//! artifacts to prepare for a fresh build. Currently doesn't remove the
|
//! artifacts to prepare for a fresh build. Currently doesn't remove the
|
||||||
//! `build/cache` directory (download cache) or the `build/$target/llvm`
|
//! `build/cache` directory (download cache) or the `build/$target/llvm`
|
||||||
//! directory as we want that cached between builds.
|
//! directory unless the --all flag is present.
|
||||||
|
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io::{self, ErrorKind};
|
use std::io::{self, ErrorKind};
|
||||||
|
@ -21,8 +21,12 @@ use std::path::Path;
|
||||||
|
|
||||||
use Build;
|
use Build;
|
||||||
|
|
||||||
pub fn clean(build: &Build) {
|
pub fn clean(build: &Build, all: bool) {
|
||||||
rm_rf("tmp".as_ref());
|
rm_rf("tmp".as_ref());
|
||||||
|
|
||||||
|
if all {
|
||||||
|
rm_rf(&build.out);
|
||||||
|
} else {
|
||||||
rm_rf(&build.out.join("tmp"));
|
rm_rf(&build.out.join("tmp"));
|
||||||
rm_rf(&build.out.join("dist"));
|
rm_rf(&build.out.join("dist"));
|
||||||
|
|
||||||
|
@ -41,6 +45,7 @@ pub fn clean(build: &Build) {
|
||||||
rm_rf(&path);
|
rm_rf(&path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn rm_rf(path: &Path) {
|
fn rm_rf(path: &Path) {
|
||||||
|
|
|
@ -60,7 +60,9 @@ pub enum Subcommand {
|
||||||
paths: Vec<PathBuf>,
|
paths: Vec<PathBuf>,
|
||||||
test_args: Vec<String>,
|
test_args: Vec<String>,
|
||||||
},
|
},
|
||||||
Clean,
|
Clean {
|
||||||
|
all: bool,
|
||||||
|
},
|
||||||
Dist {
|
Dist {
|
||||||
paths: Vec<PathBuf>,
|
paths: Vec<PathBuf>,
|
||||||
},
|
},
|
||||||
|
@ -147,6 +149,7 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`");
|
||||||
opts.optmulti("", "test-args", "extra arguments", "ARGS");
|
opts.optmulti("", "test-args", "extra arguments", "ARGS");
|
||||||
},
|
},
|
||||||
"bench" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); },
|
"bench" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); },
|
||||||
|
"clean" => { opts.optflag("", "all", "clean all build artifacts"); },
|
||||||
_ => { },
|
_ => { },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -293,7 +296,10 @@ Arguments:
|
||||||
println!("\nclean takes no arguments\n");
|
println!("\nclean takes no arguments\n");
|
||||||
usage(1, &opts, &subcommand_help, &extra_help);
|
usage(1, &opts, &subcommand_help, &extra_help);
|
||||||
}
|
}
|
||||||
Subcommand::Clean
|
|
||||||
|
Subcommand::Clean {
|
||||||
|
all: matches.opt_present("all"),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
"dist" => {
|
"dist" => {
|
||||||
Subcommand::Dist {
|
Subcommand::Dist {
|
||||||
|
|
|
@ -345,8 +345,8 @@ impl Build {
|
||||||
job::setup(self);
|
job::setup(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Subcommand::Clean = self.config.cmd {
|
if let Subcommand::Clean { all } = self.config.cmd {
|
||||||
return clean::clean(self);
|
return clean::clean(self, all);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.verbose("finding compilers");
|
self.verbose("finding compilers");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue