diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/src/core/build_steps/dist.rs | 9 | ||||
| -rw-r--r-- | src/bootstrap/src/core/builder.rs | 29 | ||||
| -rw-r--r-- | src/bootstrap/src/core/builder/tests.rs | 9 | ||||
| -rw-r--r-- | src/tools/compiletest/src/header.rs | 2 | ||||
| -rw-r--r-- | src/tools/run-make-support/src/command.rs | 6 | ||||
| -rw-r--r-- | src/tools/run-make-support/src/llvm.rs | 20 | ||||
| -rw-r--r-- | src/tools/run-make-support/src/rustc.rs | 2 | ||||
| -rw-r--r-- | src/tools/run-make-support/src/rustdoc.rs | 2 | ||||
| -rw-r--r-- | src/tools/tidy/src/allowed_run_make_makefiles.txt | 2 |
9 files changed, 65 insertions, 16 deletions
diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs index 54136d2aebd..4fb64595504 100644 --- a/src/bootstrap/src/core/build_steps/dist.rs +++ b/src/bootstrap/src/core/build_steps/dist.rs @@ -665,6 +665,10 @@ impl Step for Std { } } +/// Tarball containing the compiler that gets downloaded and used by +/// `rust.download-rustc`. +/// +/// (Don't confuse this with [`RustDev`], without the `c`!) #[derive(Debug, PartialOrd, Ord, Clone, Hash, PartialEq, Eq)] pub struct RustcDev { pub compiler: Compiler, @@ -2225,6 +2229,11 @@ impl Step for LlvmBitcodeLinker { /// Tarball intended for internal consumption to ease rustc/std development. /// /// Should not be considered stable by end users. +/// +/// In practice, this is the tarball that gets downloaded and used by +/// `llvm.download-ci-llvm`. +/// +/// (Don't confuse this with [`RustcDev`], with a `c`!) #[derive(Clone, Debug, Eq, Hash, PartialEq)] pub struct RustDev { pub target: TargetSelection, diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs index a638d6f31db..2e9c04624c7 100644 --- a/src/bootstrap/src/core/builder.rs +++ b/src/bootstrap/src/core/builder.rs @@ -274,7 +274,7 @@ impl PathSet { /// This is used for `StepDescription::krate`, which passes all matching crates at once to /// `Step::make_run`, rather than calling it many times with a single crate. /// See `tests.rs` for examples. - fn intersection_removing_matches(&self, needles: &mut Vec<&Path>, module: Kind) -> PathSet { + fn intersection_removing_matches(&self, needles: &mut Vec<PathBuf>, module: Kind) -> PathSet { let mut check = |p| { for (i, n) in needles.iter().enumerate() { let matched = Self::check(p, n, module); @@ -346,7 +346,7 @@ const PATH_REMAP: &[(&str, &[&str])] = &[ ), ]; -fn remap_paths(paths: &mut Vec<&Path>) { +fn remap_paths(paths: &mut Vec<PathBuf>) { let mut remove = vec![]; let mut add = vec![]; for (i, path) in paths.iter().enumerate().filter_map(|(i, path)| path.to_str().map(|s| (i, s))) @@ -355,7 +355,7 @@ fn remap_paths(paths: &mut Vec<&Path>) { // Remove leading and trailing slashes so `tests/` and `tests` are equivalent if path.trim_matches(std::path::is_separator) == search { remove.push(i); - add.extend(replace.iter().map(Path::new)); + add.extend(replace.iter().map(PathBuf::from)); break; } } @@ -438,8 +438,25 @@ impl StepDescription { } } - // strip CurDir prefix if present - let mut paths: Vec<_> = paths.iter().map(|p| p.strip_prefix(".").unwrap_or(p)).collect(); + // Attempt to resolve paths to be relative to the builder source directory. + let mut paths: Vec<PathBuf> = paths + .iter() + .map(|p| { + // If the path does not exist, it may represent the name of a Step, such as `tidy` in `x test tidy` + if !p.exists() { + return p.clone(); + } + + // Make the path absolute, strip the prefix, and convert to a PathBuf. + match std::path::absolute(p) { + Ok(p) => p.strip_prefix(&builder.src).unwrap_or(&p).to_path_buf(), + Err(e) => { + eprintln!("ERROR: {:?}", e); + panic!("Due to the above error, failed to resolve path: {:?}", p); + } + } + }) + .collect(); remap_paths(&mut paths); @@ -629,7 +646,7 @@ impl<'a> ShouldRun<'a> { /// (for now, just `all_krates` and `paths`, but we may want to add an `aliases` function in the future?) fn pathset_for_paths_removing_matches( &self, - paths: &mut Vec<&Path>, + paths: &mut Vec<PathBuf>, kind: Kind, ) -> Vec<PathSet> { let mut sets = vec![]; diff --git a/src/bootstrap/src/core/builder/tests.rs b/src/bootstrap/src/core/builder/tests.rs index 276fd0b11d6..aa119b8c699 100644 --- a/src/bootstrap/src/core/builder/tests.rs +++ b/src/bootstrap/src/core/builder/tests.rs @@ -122,11 +122,14 @@ fn test_intersection() { PathSet::Set(paths.into_iter().map(|p| TaskPath { path: p.into(), kind: None }).collect()) }; let library_set = set(&["library/core", "library/alloc", "library/std"]); - let mut command_paths = - vec![Path::new("library/core"), Path::new("library/alloc"), Path::new("library/stdarch")]; + let mut command_paths = vec![ + PathBuf::from("library/core"), + PathBuf::from("library/alloc"), + PathBuf::from("library/stdarch"), + ]; let subset = library_set.intersection_removing_matches(&mut command_paths, Kind::Build); assert_eq!(subset, set(&["library/core", "library/alloc"]),); - assert_eq!(command_paths, vec![Path::new("library/stdarch")]); + assert_eq!(command_paths, vec![PathBuf::from("library/stdarch")]); } #[test] diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs index 5469b9f1a0a..82d80fcc19c 100644 --- a/src/tools/compiletest/src/header.rs +++ b/src/tools/compiletest/src/header.rs @@ -779,6 +779,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[ "ignore-haiku", "ignore-horizon", "ignore-i686-pc-windows-msvc", + "ignore-illumos", "ignore-ios", "ignore-linux", "ignore-lldb", @@ -843,6 +844,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[ "ignore-x32", "ignore-x86", "ignore-x86_64", + "ignore-x86_64-apple-darwin", "ignore-x86_64-unknown-linux-gnu", "incremental", "known-bug", diff --git a/src/tools/run-make-support/src/command.rs b/src/tools/run-make-support/src/command.rs index f39bcfd60df..0a1bd9b0b34 100644 --- a/src/tools/run-make-support/src/command.rs +++ b/src/tools/run-make-support/src/command.rs @@ -36,8 +36,10 @@ impl Command { Self { cmd: StdCommand::new(program), stdin: None, drop_bomb: DropBomb::arm(program) } } - pub fn set_stdin(&mut self, stdin: Box<[u8]>) { - self.stdin = Some(stdin); + /// Specify a stdin input + pub fn stdin<I: AsRef<[u8]>>(&mut self, input: I) -> &mut Self { + self.stdin = Some(input.as_ref().to_vec().into_boxed_slice()); + self } /// Specify an environment variable. diff --git a/src/tools/run-make-support/src/llvm.rs b/src/tools/run-make-support/src/llvm.rs index 99bce08fc23..7f42223bf7f 100644 --- a/src/tools/run-make-support/src/llvm.rs +++ b/src/tools/run-make-support/src/llvm.rs @@ -102,6 +102,24 @@ impl LlvmReadobj { self } + /// Pass `--program-headers` to display program headers. + pub fn program_headers(&mut self) -> &mut Self { + self.cmd.arg("--program-headers"); + self + } + + /// Pass `--symbols` to display the symbol. + pub fn symbols(&mut self) -> &mut Self { + self.cmd.arg("--symbols"); + self + } + + /// Pass `--dynamic-table` to display the dynamic symbol table. + pub fn dynamic_table(&mut self) -> &mut Self { + self.cmd.arg("--dynamic-table"); + self + } + /// Specify the section to display. pub fn section(&mut self, section: &str) -> &mut Self { self.cmd.arg("--string-dump"); @@ -153,7 +171,7 @@ impl LlvmFilecheck { /// Pipe a read file into standard input containing patterns that will be matched against the .patterns(path) call. pub fn stdin<I: AsRef<[u8]>>(&mut self, input: I) -> &mut Self { - self.cmd.set_stdin(input.as_ref().to_vec().into_boxed_slice()); + self.cmd.stdin(input); self } diff --git a/src/tools/run-make-support/src/rustc.rs b/src/tools/run-make-support/src/rustc.rs index a377dad99d6..28ece1dff12 100644 --- a/src/tools/run-make-support/src/rustc.rs +++ b/src/tools/run-make-support/src/rustc.rs @@ -244,7 +244,7 @@ impl Rustc { /// Specify a stdin input pub fn stdin<I: AsRef<[u8]>>(&mut self, input: I) -> &mut Self { - self.cmd.set_stdin(input.as_ref().to_vec().into_boxed_slice()); + self.cmd.stdin(input); self } diff --git a/src/tools/run-make-support/src/rustdoc.rs b/src/tools/run-make-support/src/rustdoc.rs index 93078561254..fb00427b1c1 100644 --- a/src/tools/run-make-support/src/rustdoc.rs +++ b/src/tools/run-make-support/src/rustdoc.rs @@ -92,7 +92,7 @@ impl Rustdoc { /// Specify a stdin input pub fn stdin<I: AsRef<[u8]>>(&mut self, input: I) -> &mut Self { - self.cmd.set_stdin(input.as_ref().to_vec().into_boxed_slice()); + self.cmd.stdin(input); self } diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt index c3a94d17cd9..07073ef5d40 100644 --- a/src/tools/tidy/src/allowed_run_make_makefiles.txt +++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt @@ -151,7 +151,6 @@ run-make/raw-dylib-inline-cross-dylib/Makefile run-make/raw-dylib-link-ordinal/Makefile run-make/raw-dylib-stdcall-ordinal/Makefile run-make/redundant-libs/Makefile -run-make/relro-levels/Makefile run-make/remap-path-prefix-dwarf/Makefile run-make/remap-path-prefix/Makefile run-make/reproducible-build-2/Makefile @@ -177,7 +176,6 @@ run-make/split-debuginfo/Makefile run-make/stable-symbol-names/Makefile run-make/static-dylib-by-default/Makefile run-make/static-extern-type/Makefile -run-make/static-pie/Makefile run-make/staticlib-blank-lib/Makefile run-make/staticlib-dylib-linkage/Makefile run-make/std-core-cycle/Makefile |
