From fd668bfa3b64d548b8ad669317d9ca765fbbfb2a Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Sat, 6 Nov 2021 19:54:43 +0000 Subject: [PATCH] Use locked versions in resolution --- Cargo.lock | 2 +- compiler-cli/src/dependencies.rs | 8 ++++---- compiler-core/src/hex.rs | 5 +++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7184c3764..4e466ecd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -791,7 +791,7 @@ dependencies = [ [[package]] name = "hexpm" version = "1.3.0" -source = "git+https://github.com/gleam-lang/hexpm-rust#17901620a18743f5be17bedb666fe7ffb4a7e9bc" +source = "git+https://github.com/gleam-lang/hexpm-rust#b44e16aa2ce4834de6eeb8f836170d79d8fe496b" dependencies = [ "bytes", "flate2", diff --git a/compiler-cli/src/dependencies.rs b/compiler-cli/src/dependencies.rs index c2d1feb19..bc2f40877 100644 --- a/compiler-cli/src/dependencies.rs +++ b/compiler-cli/src/dependencies.rs @@ -265,7 +265,7 @@ fn get_manifest( // If there's no manifest then resolve the versions anew if !paths::manifest_path().exists() { tracing::info!("manifest_not_present"); - return resolve_versions(runtime, mode, config); + return resolve_versions(runtime, mode, config, &HashMap::new()); } let manifest = Manifest::read_from_disc()?; @@ -277,8 +277,7 @@ fn get_manifest( Ok(manifest) } else { tracing::info!("manifest_outdated"); - // TODO: use the existing already locked versions - resolve_versions(runtime, mode, config) + resolve_versions(runtime, mode, config, &manifest.packages) } } @@ -286,10 +285,11 @@ fn resolve_versions( runtime: tokio::runtime::Handle, mode: Mode, config: &PackageConfig, + locked: &HashMap, ) -> Result { cli::print_resolving_versions(); let manifest = Manifest { - packages: hex::resolve_versions(PackageFetcher::boxed(runtime), mode, config)?, + packages: hex::resolve_versions(PackageFetcher::boxed(runtime), mode, config, locked)?, requirements: config.all_dependencies()?, }; Ok(manifest) diff --git a/compiler-core/src/hex.rs b/compiler-core/src/hex.rs index 3f33129e6..a75bbc36b 100644 --- a/compiler-core/src/hex.rs +++ b/compiler-core/src/hex.rs @@ -2,7 +2,7 @@ use debug_ignore::DebugIgnore; use flate2::read::GzDecoder; use futures::future; use hexpm::version::{PackageVersions, Version}; -use std::path::PathBuf; +use std::{collections::HashMap, path::PathBuf}; use tar::Archive; use crate::{ @@ -27,13 +27,14 @@ pub fn resolve_versions( package_fetcher: Box, mode: Mode, config: &PackageConfig, + locked: &HashMap, ) -> Result { let specified_dependencies = config.dependencies_for(mode)?.into_iter(); hexpm::version::resolve_versions( package_fetcher, config.name.clone(), - config.version.clone(), specified_dependencies, + locked, ) .map_err(Error::dependency_resolution_failed) }