diff --git a/src/cargo/core/summary.rs b/src/cargo/core/summary.rs index 53b6a4af0..e964922b2 100644 --- a/src/cargo/core/summary.rs +++ b/src/cargo/core/summary.rs @@ -35,7 +35,7 @@ impl Summary { pub fn new( pkg_id: PackageId, dependencies: Vec, - features: BTreeMap>>, + features: &BTreeMap>>, links: Option>, namespaced_features: bool, ) -> CargoResult diff --git a/src/cargo/ops/cargo_compile.rs b/src/cargo/ops/cargo_compile.rs index 45d2afef1..9dbece383 100644 --- a/src/cargo/ops/cargo_compile.rs +++ b/src/cargo/ops/cargo_compile.rs @@ -185,7 +185,8 @@ pub fn compile<'a>( ws: &Workspace<'a>, options: &CompileOptions<'a>, ) -> CargoResult> { - compile_with_exec(ws, options, Arc::new(DefaultExecutor)) + let exec: Arc = Arc::new(DefaultExecutor); + compile_with_exec(ws, options, &exec) } /// Like `compile` but allows specifying a custom `Executor` that will be able to intercept build @@ -193,7 +194,7 @@ pub fn compile<'a>( pub fn compile_with_exec<'a>( ws: &Workspace<'a>, options: &CompileOptions<'a>, - exec: Arc, + exec: &Arc, ) -> CargoResult> { ws.emit_warnings()?; compile_ws(ws, None, options, exec) @@ -203,7 +204,7 @@ pub fn compile_ws<'a>( ws: &Workspace<'a>, source: Option>, options: &CompileOptions<'a>, - exec: Arc, + exec: &Arc, ) -> CargoResult> { let CompileOptions { config, diff --git a/src/cargo/ops/cargo_install.rs b/src/cargo/ops/cargo_install.rs index 82e04d65d..a103a2b61 100644 --- a/src/cargo/ops/cargo_install.rs +++ b/src/cargo/ops/cargo_install.rs @@ -12,7 +12,7 @@ use toml; use core::{Dependency, Edition, Package, PackageIdSpec, Source, SourceId}; use core::{PackageId, Workspace}; -use core::compiler::DefaultExecutor; +use core::compiler::{DefaultExecutor, Executor}; use ops::{self, CompileFilter}; use sources::{GitSource, PathSource, SourceConfigMap}; use util::{internal, Config}; @@ -262,8 +262,9 @@ fn install_one( check_overwrites(&dst, pkg, &opts.filter, &list, force)?; } + let exec: Arc = Arc::new(DefaultExecutor); let compile = - ops::compile_ws(&ws, Some(source), opts, Arc::new(DefaultExecutor)).chain_err(|| { + ops::compile_ws(&ws, Some(source), opts, &exec).chain_err(|| { if let Some(td) = td_opt.take() { // preserve the temporary directory, so the user can inspect it td.into_path(); diff --git a/src/cargo/ops/cargo_package.rs b/src/cargo/ops/cargo_package.rs index fb0ff6a21..94a302107 100644 --- a/src/cargo/ops/cargo_package.rs +++ b/src/cargo/ops/cargo_package.rs @@ -10,7 +10,7 @@ use git2; use tar::{Archive, Builder, EntryType, Header}; use core::{Package, Source, SourceId, Workspace}; -use core::compiler::{BuildConfig, CompileMode, DefaultExecutor}; +use core::compiler::{BuildConfig, CompileMode, DefaultExecutor, Executor}; use sources::PathSource; use util::{self, internal, Config, FileLock}; use util::paths; @@ -333,6 +333,7 @@ fn run_verify(ws: &Workspace, tar: &FileLock, opts: &PackageOpts) -> CargoResult let pkg_fingerprint = src.last_modified_file(&new_pkg)?; let ws = Workspace::ephemeral(new_pkg, config, None, true)?; + let exec: Arc = Arc::new(DefaultExecutor); ops::compile_ws( &ws, None, @@ -350,7 +351,7 @@ fn run_verify(ws: &Workspace, tar: &FileLock, opts: &PackageOpts) -> CargoResult target_rustc_args: None, export_dir: None, }, - Arc::new(DefaultExecutor), + &exec, )?; // Check that build.rs didn't modify any files in the src directory. diff --git a/src/cargo/sources/registry/index.rs b/src/cargo/sources/registry/index.rs index 7541dd70c..d869b1b46 100644 --- a/src/cargo/sources/registry/index.rs +++ b/src/cargo/sources/registry/index.rs @@ -253,7 +253,7 @@ impl<'cfg> RegistryIndex<'cfg> { .into_iter() .map(|dep| dep.into_dep(&self.source_id)) .collect::>>()?; - let summary = Summary::new(pkgid, deps, features, links, false)?; + let summary = Summary::new(pkgid, deps, &features, links, false)?; let summary = summary.set_checksum(cksum.clone()); self.hashes .entry(name.as_str()) diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 220eab5c5..ab8e0adf2 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -893,7 +893,7 @@ impl TomlManifest { let summary = Summary::new( pkgid, deps, - me.features + &me.features .as_ref() .map(|x| { x.iter() diff --git a/tests/testsuite/resolve.rs b/tests/testsuite/resolve.rs index a658edfa1..ddbb83a02 100644 --- a/tests/testsuite/resolve.rs +++ b/tests/testsuite/resolve.rs @@ -38,7 +38,7 @@ fn resolve_with_config( } } let mut registry = MyRegistry(registry); - let summary = Summary::new(pkg.clone(), deps, BTreeMap::>::new(), None::, false).unwrap(); + let summary = Summary::new(pkg.clone(), deps, &BTreeMap::>::new(), None::, false).unwrap(); let method = Method::Everything; let resolve = resolver::resolve( &[(summary, method)], @@ -100,13 +100,13 @@ macro_rules! pkg { let pkgid = $pkgid.to_pkgid(); let link = if pkgid.name().ends_with("-sys") {Some(pkgid.name().as_str())} else {None}; - Summary::new(pkgid, d, BTreeMap::>::new(), link, false).unwrap() + Summary::new(pkgid, d, &BTreeMap::>::new(), link, false).unwrap() }); ($pkgid:expr) => ({ let pkgid = $pkgid.to_pkgid(); let link = if pkgid.name().ends_with("-sys") {Some(pkgid.name().as_str())} else {None}; - Summary::new(pkgid, Vec::new(), BTreeMap::>::new(), link, false).unwrap() + Summary::new(pkgid, Vec::new(), &BTreeMap::>::new(), link, false).unwrap() }) } @@ -121,7 +121,7 @@ fn pkg(name: &str) -> Summary { } else { None }; - Summary::new(pkg_id(name), Vec::new(), BTreeMap::>::new(), link, false).unwrap() + Summary::new(pkg_id(name), Vec::new(), &BTreeMap::>::new(), link, false).unwrap() } fn pkg_id(name: &str) -> PackageId { @@ -145,7 +145,7 @@ fn pkg_loc(name: &str, loc: &str) -> Summary { Summary::new( pkg_id_loc(name, loc), Vec::new(), - BTreeMap::>::new(), + &BTreeMap::>::new(), link, false, ).unwrap()