@@ -4,24 +4,26 @@ use crate::core::build_steps::tool::SUBMODULES_FOR_RUSTBOOK;
4
4
use crate :: core:: builder:: { Builder , RunConfig , ShouldRun , Step } ;
5
5
use crate :: utils:: exec:: command;
6
6
7
- /// List of default paths used for vendoring for `x vendor` and dist tarballs.
8
- pub fn default_paths_to_vendor ( builder : & Builder < ' _ > ) -> Vec < PathBuf > {
9
- let mut paths = vec ! [ ] ;
10
- for p in [
11
- "src/tools/cargo/Cargo.toml" ,
12
- "src/tools/rust-analyzer/Cargo.toml" ,
13
- "compiler/rustc_codegen_cranelift/Cargo.toml" ,
14
- "compiler/rustc_codegen_gcc/Cargo.toml" ,
15
- "library/Cargo.toml" ,
16
- "src/bootstrap/Cargo.toml" ,
17
- "src/tools/rustbook/Cargo.toml" ,
18
- "src/tools/rustc-perf/Cargo.toml" ,
19
- "src/tools/opt-dist/Cargo.toml" ,
20
- ] {
21
- paths. push ( builder. src . join ( p) ) ;
22
- }
23
-
24
- paths
7
+ /// Returns the cargo workspaces to vendor for `x vendor` and dist tarballs.
8
+ ///
9
+ /// Returns a `Vec` of `(path_to_manifest, submodules_required)` where
10
+ /// `path_to_manifest` is the cargo workspace, and `submodules_required` is
11
+ /// the set of submodules that must be available.
12
+ pub fn default_paths_to_vendor ( builder : & Builder < ' _ > ) -> Vec < ( PathBuf , Vec < & ' static str > ) > {
13
+ [
14
+ ( "src/tools/cargo/Cargo.toml" , vec ! [ "src/tools/cargo" ] ) ,
15
+ ( "src/tools/rust-analyzer/Cargo.toml" , vec ! [ ] ) ,
16
+ ( "compiler/rustc_codegen_cranelift/Cargo.toml" , vec ! [ ] ) ,
17
+ ( "compiler/rustc_codegen_gcc/Cargo.toml" , vec ! [ ] ) ,
18
+ ( "library/Cargo.toml" , vec ! [ ] ) ,
19
+ ( "src/bootstrap/Cargo.toml" , vec ! [ ] ) ,
20
+ ( "src/tools/rustbook/Cargo.toml" , SUBMODULES_FOR_RUSTBOOK . into ( ) ) ,
21
+ ( "src/tools/rustc-perf/Cargo.toml" , vec ! [ "src/tools/rustc-perf" ] ) ,
22
+ ( "src/tools/opt-dist/Cargo.toml" , vec ! [ ] ) ,
23
+ ]
24
+ . into_iter ( )
25
+ . map ( |( path, submodules) | ( builder. src . join ( path) , submodules) )
26
+ . collect ( )
25
27
}
26
28
27
29
#[ derive( Debug , Clone , Hash , PartialEq , Eq ) ]
@@ -56,15 +58,16 @@ impl Step for Vendor {
56
58
cmd. arg ( "--versioned-dirs" ) ;
57
59
}
58
60
61
+ let to_vendor = default_paths_to_vendor ( builder) ;
59
62
// These submodules must be present for `x vendor` to work.
60
- for submodule in
61
- SUBMODULES_FOR_RUSTBOOK . iter ( ) . chain ( [ "src/tools/cargo" , "src/tools/rustc-perf" ] . iter ( ) )
62
- {
63
- builder . build . require_submodule ( submodule , None ) ;
63
+ for ( _ , submodules ) in & to_vendor {
64
+ for submodule in submodules {
65
+ builder . build . require_submodule ( submodule , None ) ;
66
+ }
64
67
}
65
68
66
69
// Sync these paths by default.
67
- for p in default_paths_to_vendor ( builder ) {
70
+ for ( p , _ ) in & to_vendor {
68
71
cmd. arg ( "--sync" ) . arg ( p) ;
69
72
}
70
73
0 commit comments