Add a `--build-dir` flag to rustbuild

上级 7425fb29
......@@ -866,6 +866,7 @@ def bootstrap(help_triggered):
parser = argparse.ArgumentParser(description='Build rust')
parser.add_argument('--config')
parser.add_argument('--build-dir')
parser.add_argument('--build')
parser.add_argument('--color', choices=['always', 'never', 'auto'])
parser.add_argument('--clean', action='store_true')
......@@ -915,7 +916,7 @@ def bootstrap(help_triggered):
build.check_vendored_status()
build_dir = build.get_toml('build-dir', 'build') or 'build'
build_dir = args.build_dir or build.get_toml('build-dir', 'build') or 'build'
build.build_dir = os.path.abspath(build_dir)
with open(os.path.join(build.rust_root, "src", "stage0.json")) as f:
......
......@@ -857,7 +857,7 @@ pub fn parse(args: &[String]) -> Config {
let build = toml.build.unwrap_or_default();
set(&mut config.initial_rustc, build.rustc.map(PathBuf::from));
set(&mut config.out, build.build_dir.map(PathBuf::from));
set(&mut config.out, flags.build_dir.or_else(|| build.build_dir.map(PathBuf::from)));
// NOTE: Bootstrap spawns various commands with different working directories.
// To avoid writing to random places on the file system, `config.out` needs to be an absolute path.
if !config.out.is_absolute() {
......
......@@ -51,6 +51,7 @@ pub struct Flags {
pub host: Option<Vec<TargetSelection>>,
pub target: Option<Vec<TargetSelection>>,
pub config: Option<PathBuf>,
pub build_dir: Option<PathBuf>,
pub jobs: Option<u32>,
pub cmd: Subcommand,
pub incremental: bool,
......@@ -174,6 +175,12 @@ pub fn parse(args: &[String]) -> Flags {
opts.optflagmulti("v", "verbose", "use verbose output (-vv for very verbose)");
opts.optflag("i", "incremental", "use incremental compilation");
opts.optopt("", "config", "TOML configuration file for build", "FILE");
opts.optopt(
"",
"build-dir",
"Build directory, overrides `build.build-dir` in `config.toml`",
"DIR",
);
opts.optopt("", "build", "build target of the stage0 compiler", "BUILD");
opts.optmulti("", "host", "host targets to build", "HOST");
opts.optmulti("", "target", "target targets to build", "TARGET");
......@@ -649,6 +656,7 @@ pub fn parse(args: &[String]) -> Flags {
None
},
config: matches.opt_str("config").map(PathBuf::from),
build_dir: matches.opt_str("build-dir").map(PathBuf::from),
jobs: matches.opt_str("jobs").map(|j| j.parse().expect("`jobs` should be a number")),
cmd,
incremental: matches.opt_present("incremental"),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册