about summary refs log tree commit diff
diff options
context:
space:
mode:
authoronur-ozkan <work@onurozkan.dev>2024-08-03 08:58:53 +0300
committeronur-ozkan <work@onurozkan.dev>2024-08-06 20:33:21 +0300
commit37984bbde11e6bcd0a009d2bbdbe7a73f9605b05 (patch)
tree8606a610f7bf91f8e71e4bbc1686ca305b444bab
parent60d146580c10036ce89e019422c6bc2fd9729b65 (diff)
downloadrust-37984bbde11e6bcd0a009d2bbdbe7a73f9605b05.tar.gz
rust-37984bbde11e6bcd0a009d2bbdbe7a73f9605b05.zip
unify path syncing logic for vendor and dist
Signed-off-by: onur-ozkan <work@onurozkan.dev>
-rw-r--r--src/bootstrap/src/core/build_steps/dist.rs34
-rw-r--r--src/bootstrap/src/core/build_steps/vendor.rs32
2 files changed, 31 insertions, 35 deletions
diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs
index c14709ffb63..cd7d602e859 100644
--- a/src/bootstrap/src/core/build_steps/dist.rs
+++ b/src/bootstrap/src/core/build_steps/dist.rs
@@ -19,6 +19,7 @@ use object::BinaryFormat;
 
 use crate::core::build_steps::doc::DocumentationFormat;
 use crate::core::build_steps::tool::{self, Tool};
+use crate::core::build_steps::vendor::default_paths_to_vendor;
 use crate::core::build_steps::{compile, llvm};
 use crate::core::builder::{Builder, Kind, RunConfig, ShouldRun, Step};
 use crate::core::config::TargetSelection;
@@ -1016,35 +1017,18 @@ impl Step for PlainSourceTarball {
         if builder.rust_info().is_managed_git_subrepository()
             || builder.rust_info().is_from_tarball()
         {
-            // FIXME: This code looks _very_ similar to what we have in `src/core/build_steps/vendor.rs`
-            // perhaps it should be removed in favor of making `dist` perform the `vendor` step?
-
             builder.require_and_update_all_submodules();
 
             // Vendor all Cargo dependencies
             let mut cmd = command(&builder.initial_cargo);
-            cmd.arg("vendor")
-                .arg("--versioned-dirs")
-                .arg("--sync")
-                .arg(builder.src.join("./src/tools/cargo/Cargo.toml"))
-                .arg("--sync")
-                .arg(builder.src.join("./src/tools/rust-analyzer/Cargo.toml"))
-                .arg("--sync")
-                .arg(builder.src.join("./compiler/rustc_codegen_cranelift/Cargo.toml"))
-                .arg("--sync")
-                .arg(builder.src.join("./compiler/rustc_codegen_gcc/Cargo.toml"))
-                .arg("--sync")
-                .arg(builder.src.join("./library/Cargo.toml"))
-                .arg("--sync")
-                .arg(builder.src.join("./src/bootstrap/Cargo.toml"))
-                .arg("--sync")
-                .arg(builder.src.join("./src/tools/opt-dist/Cargo.toml"))
-                .arg("--sync")
-                .arg(builder.src.join("./src/tools/rustc-perf/Cargo.toml"))
-                .arg("--sync")
-                .arg(builder.src.join("./src/tools/rustbook/Cargo.toml"))
-                // Will read the libstd Cargo.toml
-                // which uses the unstable `public-dependency` feature.
+            cmd.arg("vendor").arg("--versioned-dirs");
+
+            for p in default_paths_to_vendor(builder) {
+                cmd.arg("--sync").arg(p);
+            }
+
+            cmd
+                // Will read the libstd Cargo.toml which uses the unstable `public-dependency` feature.
                 .env("RUSTC_BOOTSTRAP", "1")
                 .current_dir(plain_dst_src);
 
diff --git a/src/bootstrap/src/core/build_steps/vendor.rs b/src/bootstrap/src/core/build_steps/vendor.rs
index 33768465225..82a6b4d4f28 100644
--- a/src/bootstrap/src/core/build_steps/vendor.rs
+++ b/src/bootstrap/src/core/build_steps/vendor.rs
@@ -4,6 +4,26 @@ use crate::core::build_steps::tool::SUBMODULES_FOR_RUSTBOOK;
 use crate::core::builder::{Builder, RunConfig, ShouldRun, Step};
 use crate::utils::exec::command;
 
+/// List of default paths used for vendoring for `x vendor` and dist tarballs.
+pub fn default_paths_to_vendor(builder: &Builder<'_>) -> Vec<PathBuf> {
+    let mut paths = vec![];
+    for p in [
+        "src/tools/cargo/Cargo.toml",
+        "src/tools/rust-analyzer/Cargo.toml",
+        "compiler/rustc_codegen_cranelift/Cargo.toml",
+        "compiler/rustc_codegen_gcc/Cargo.toml",
+        "library/Cargo.toml",
+        "src/bootstrap/Cargo.toml",
+        "src/tools/rustbook/Cargo.toml",
+        "src/tools/rustc-perf/Cargo.toml",
+        "src/tools/opt-dist/Cargo.toml",
+    ] {
+        paths.push(builder.src.join(p));
+    }
+
+    paths
+}
+
 #[derive(Debug, Clone, Hash, PartialEq, Eq)]
 pub(crate) struct Vendor {
     sync_args: Vec<PathBuf>,
@@ -42,16 +62,8 @@ impl Step for Vendor {
         }
 
         // Sync these paths by default.
-        for p in [
-            "src/tools/cargo/Cargo.toml",
-            "src/tools/rust-analyzer/Cargo.toml",
-            "compiler/rustc_codegen_cranelift/Cargo.toml",
-            "compiler/rustc_codegen_gcc/Cargo.toml",
-            "library/Cargo.toml",
-            "src/bootstrap/Cargo.toml",
-            "src/tools/rustbook/Cargo.toml",
-        ] {
-            cmd.arg("--sync").arg(builder.src.join(p));
+        for p in default_paths_to_vendor(builder) {
+            cmd.arg("--sync").arg(p);
         }
 
         // Also sync explicitly requested paths.