]> git.proxmox.com Git - cargo.git/commitdiff
Hoist Context creation out of compile_targets()
authorDirkjan Ochtman <dirkjan@ochtman.nl>
Wed, 11 Apr 2018 20:50:07 +0000 (22:50 +0200)
committerDirkjan Ochtman <dirkjan@ochtman.nl>
Wed, 11 Apr 2018 22:11:28 +0000 (00:11 +0200)
src/cargo/ops/cargo_compile.rs
src/cargo/ops/cargo_rustc/mod.rs

index e5b0f8132b5d7b1cbe35471511126442d894df7f..59a9e027532b42c21c56c436fbed2c4787ee3bee 100644 (file)
@@ -29,7 +29,7 @@ use std::sync::Arc;
 use core::{Package, Source, Target};
 use core::{PackageId, PackageIdSpec, Profile, Profiles, TargetKind, Workspace};
 use core::resolver::{Method, Resolve};
-use ops::{self, BuildOutput, DefaultExecutor, Executor};
+use ops::{self, BuildOutput, Context, DefaultExecutor, Executor};
 use util::config::Config;
 use util::{profile, CargoResult, CargoResultExt};
 
@@ -347,17 +347,15 @@ pub fn compile_ws<'a>(
     }
     let mut ret = {
         let _p = profile::start("compiling");
-        ops::compile_targets(
+        let mut cx = Context::new(
             ws,
-            &package_targets,
-            &packages,
             &resolve_with_overrides,
+            &packages,
             config,
             build_config,
             profiles,
-            export_dir.clone(),
-            &exec,
-        )?
+        )?;
+        ops::compile_targets(cx, &package_targets, export_dir.clone(), &exec)?
     };
 
     ret.to_doc_test = to_builds.into_iter().cloned().collect();
index fb865f565e4a11de28ca84608efbc4ad822c4281..4da9dbe61d88dc379786eb1056b560361c75c23b 100644 (file)
@@ -9,12 +9,11 @@ use std::sync::Arc;
 use same_file::is_same_file;
 use serde_json;
 
-use core::{Feature, Package, PackageId, PackageSet, Resolve, Target};
-use core::{Profile, Profiles, Workspace};
+use core::{Feature, Package, PackageId, Profile, Target};
 use core::manifest::Lto;
 use core::shell::ColorChoice;
 use util::{self, machine_message, ProcessBuilder};
-use util::{internal, join_paths, profile, Config};
+use util::{internal, join_paths, profile};
 use util::paths;
 use util::errors::{CargoResult, CargoResultExt, Internal};
 use util::Freshness;
@@ -150,20 +149,15 @@ impl Executor for DefaultExecutor {}
 // Returns a mapping of the root package plus its immediate dependencies to
 // where the compiled libraries are all located.
 pub fn compile_targets<'a, 'cfg: 'a>(
-    ws: &Workspace<'cfg>,
+    mut cx: Context<'a, 'cfg>,
     pkg_targets: &'a PackagesToBuild<'a>,
-    packages: &'a PackageSet<'cfg>,
-    resolve: &'a Resolve,
-    config: &'cfg Config,
-    build_config: BuildConfig,
-    profiles: &'a Profiles,
     export_dir: Option<PathBuf>,
     exec: &Arc<Executor>,
 ) -> CargoResult<Compilation<'cfg>> {
     let units = pkg_targets
         .iter()
         .flat_map(|&(pkg, ref targets)| {
-            let default_kind = if build_config.requested_target.is_some() {
+            let default_kind = if cx.build_config.requested_target.is_some() {
                 Kind::Target
             } else {
                 Kind::Host
@@ -181,7 +175,6 @@ pub fn compile_targets<'a, 'cfg: 'a>(
         })
         .collect::<Vec<_>>();
 
-    let mut cx = Context::new(ws, resolve, packages, config, build_config, profiles)?;
     let mut queue = JobQueue::new(&cx);
     cx.prepare_units(export_dir, &units)?;
     cx.prepare()?;