Skip to content

Commit 3064c02

Browse files
committed
Add option to include submodules from vendoring
This adds a config option `exclude-submodules-from-vendoring` that explicitly filters out listed submodules from vendoring. This allows us to exclude submodules like `rustc-perf`, which vendors a number of libraries for benchmarking, and has a complicated licensing story. Closes #137272
1 parent 617aad8 commit 3064c02

File tree

5 files changed

+19
-0
lines changed

5 files changed

+19
-0
lines changed

config.example.toml

+3
Original file line numberDiff line numberDiff line change
@@ -981,3 +981,6 @@
981981

982982
# Whether to vendor dependencies for the dist tarball.
983983
#vendor = if "is a tarball source" || "is a git repository" { true } else { false }
984+
985+
# Exclude these submodules from vendoring.
986+
# exclude-submodules-from-vendoring = ["src/tools/rustc-perf"]

src/bootstrap/src/core/build_steps/run.rs

+3
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,9 @@ impl Step for GenerateCopyright {
212212
let paths_to_vendor = default_paths_to_vendor(builder);
213213
for (_, submodules) in &paths_to_vendor {
214214
for submodule in submodules {
215+
if builder.config.dist_exclude_submodules_from_vendoring.contains(&**submodule) {
216+
continue;
217+
}
215218
builder.build.require_submodule(submodule, None);
216219
}
217220
}

src/bootstrap/src/core/build_steps/vendor.rs

+3
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ impl Step for Vendor {
8686
// These submodules must be present for `x vendor` to work.
8787
for (_, submodules) in &to_vendor {
8888
for submodule in submodules {
89+
if builder.config.dist_exclude_submodules_from_vendoring.contains(&**submodule) {
90+
continue;
91+
}
8992
builder.build.require_submodule(submodule, None);
9093
}
9194
}

src/bootstrap/src/core/config/config.rs

+5
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ pub struct Config {
339339
pub dist_compression_profile: String,
340340
pub dist_include_mingw_linker: bool,
341341
pub dist_vendor: bool,
342+
pub dist_exclude_submodules_from_vendoring: BTreeSet<String>,
342343

343344
// libstd features
344345
pub backtrace: bool, // support for RUST_BACKTRACE
@@ -1001,6 +1002,7 @@ define_config! {
10011002
compression_profile: Option<String> = "compression-profile",
10021003
include_mingw_linker: Option<bool> = "include-mingw-linker",
10031004
vendor: Option<bool> = "vendor",
1005+
exclude_submodules_from_vendoring: Option<BTreeSet<String>> = "exclude-submodules-from-vendoring",
10041006
}
10051007
}
10061008

@@ -2227,10 +2229,13 @@ impl Config {
22272229
compression_profile,
22282230
include_mingw_linker,
22292231
vendor,
2232+
exclude_submodules_from_vendoring,
22302233
} = dist;
22312234
config.dist_sign_folder = sign_folder.map(PathBuf::from);
22322235
config.dist_upload_addr = upload_addr;
22332236
config.dist_compression_formats = compression_formats;
2237+
config.dist_exclude_submodules_from_vendoring =
2238+
exclude_submodules_from_vendoring.unwrap_or_else(BTreeSet::new);
22342239
set(&mut config.dist_compression_profile, compression_profile);
22352240
set(&mut config.rust_dist_src, src_tarball);
22362241
set(&mut config.dist_include_mingw_linker, include_mingw_linker);

src/bootstrap/src/utils/change_tracker.rs

+5
Original file line numberDiff line numberDiff line change
@@ -360,4 +360,9 @@ pub const CONFIG_CHANGE_HISTORY: &[ChangeInfo] = &[
360360
severity: ChangeSeverity::Info,
361361
summary: "Added `build.test-stage = 2` to 'tools' profile defaults",
362362
},
363+
ChangeInfo {
364+
change_id: 137583,
365+
severity: ChangeSeverity::Info,
366+
summary: "It is now possible to filter out submodules from vendoring with `dist.exclude-submodules-from-vendoring`",
367+
},
363368
];

0 commit comments

Comments
 (0)