From 1751f4f39e5a28513886ae749e32e5f9087f5ed3 Mon Sep 17 00:00:00 2001 From: trivernis Date: Sat, 3 Sep 2022 19:03:30 +0200 Subject: [PATCH] Partially fix base pkg build stuff --- src/internal/dependencies.rs | 3 +++ src/operations/aur_install.rs | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/internal/dependencies.rs b/src/internal/dependencies.rs index 790f63d..cce6eaa 100644 --- a/src/internal/dependencies.rs +++ b/src/internal/dependencies.rs @@ -76,6 +76,7 @@ impl DependencyInformation { Self::filter_fulfilled_dependencies(&mut packages_to_resolve).await?; let mut already_searched = HashSet::new(); + already_searched.insert(package.metadata.name.to_owned()); let mut dependencies = DependencyCollection::default(); while !packages_to_resolve.is_empty() { @@ -108,8 +109,10 @@ impl DependencyInformation { .iter() .filter_map(|d| Self::map_dep_to_name(d)) .collect(); + Self::filter_fulfilled_dependencies(&mut packages_to_resolve).await?; let mut already_searched = HashSet::new(); + already_searched.insert(package.metadata.name.to_owned()); let mut dependencies = DependencyCollection::default(); while !packages_to_resolve.is_empty() { diff --git a/src/operations/aur_install.rs b/src/operations/aur_install.rs index e0abd47..2038f1a 100644 --- a/src/operations/aur_install.rs +++ b/src/operations/aur_install.rs @@ -288,6 +288,7 @@ async fn build_and_install( async fn download_aur_source(mut ctx: BuildContext) -> AppResult { let pb = get_logger().new_progress_spinner(); let pkg_name = &ctx.package.metadata.name; + let base_pkg = &ctx.package.metadata.package_base; pb.set_message(format!("{}: Downloading sources", pkg_name.clone().bold())); let cache_dir = get_cache_dir(); @@ -301,7 +302,7 @@ async fn download_aur_source(mut ctx: BuildContext) -> AppResult { GitPullBuilder::default().directory(&pkg_dir).pull().await?; } else { let aur_url = crate::internal::rpc::URL; - let repository_url = format!("{aur_url}/{pkg_name}"); + let repository_url = format!("{aur_url}/{base_pkg}"); pb.set_message(format!( "{}: Cloning aur repository", pkg_name.clone().bold() @@ -409,6 +410,7 @@ fn create_dependency_batches(deps: Vec<&PackageInfo>) -> Vec> .map(|d| (d.metadata.name.clone(), d)) .collect(); let mut batches = Vec::new(); + let mut relaxed = false; while !deps.is_empty() { let mut current_batch = HashMap::new(); @@ -424,13 +426,21 @@ fn create_dependency_batches(deps: Vec<&PackageInfo>) -> Vec> .iter() .any(|d| current_batch.contains_key(d) || deps.contains_key(d)); - if !contains_dep && !contains_make_dep { + if (!contains_dep || relaxed) && contains_make_dep { deps.remove(&key); current_batch.insert(key, info); + if relaxed { + break; + } } } - batches.push(current_batch.into_iter().map(|(_, v)| v).collect()); + if current_batch.is_empty() { + relaxed = true; + } else { + batches.push(current_batch.into_iter().map(|(_, v)| v).collect()); + relaxed = false; + } } batches