summaryrefslogtreecommitdiffstats
path: root/src/package/dag.rs
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-06-29 09:19:50 +0200
committerMatthias Beyer <matthias.beyer@atos.net>2021-09-16 12:32:21 +0200
commit2224aa1061d01f4af1bf239a3e3739aa3d9493f1 (patch)
tree7363657687d714ccd7a00ab53aca19c7f8bbbf25 /src/package/dag.rs
parentc6917d3e1adac99ecce05b3c7fe6592b551dc410 (diff)
Refactor: Do not use Package::get_self_packaged_dependences() helper fn
We need to refactor because we want, in the next step, add filters in the dependency-processing mechanism, where we filter out dependencies by their condition. Thus, using the Package::get_self_packaged_dependences() helper fn does not work anymore and we remove it with this patch. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/package/dag.rs')
-rw-r--r--src/package/dag.rs32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/package/dag.rs b/src/package/dag.rs
index 46c0dc8..bf0c1fb 100644
--- a/src/package/dag.rs
+++ b/src/package/dag.rs
@@ -17,15 +17,17 @@ use anyhow::Error;
use anyhow::Result;
use anyhow::anyhow;
use daggy::Walker;
+use getset::Getters;
use indicatif::ProgressBar;
+use itertools::Itertools;
use log::trace;
use ptree::Style;
use ptree::TreeItem;
use resiter::AndThen;
-use getset::Getters;
use crate::package::Package;
use crate::package::condition::ConditionData;
+use crate::package::dependency::ParseDependency;
use crate::repository::Repository;
#[derive(Debug, Getters)]
@@ -51,7 +53,19 @@ impl Dag {
p: &'a Package,
progress: Option<&ProgressBar>
) -> Result<()> {
- p.get_self_packaged_dependencies()
+ let build_dependencies = p.dependencies()
+ .build()
+ .iter()
+ .map(|d| d.parse_as_name_and_version());
+
+ let runtime_dependencies = p.dependencies()
+ .runtime()
+ .iter()
+ .map(|d| d.parse_as_name_and_version());
+
+ build_dependencies
+ .chain(runtime_dependencies)
+ .unique_by(|res| res.as_ref().ok().cloned())
.and_then_ok(|(name, constr)| {
trace!("Dependency for {} {} found: {:?}", p.name(), p.version(), name);
let packs = repo.find_with_version(&name, &constr);
@@ -82,7 +96,19 @@ impl Dag {
fn add_edges(mappings: &HashMap<&Package, daggy::NodeIndex>, dag: &mut daggy::Dag<&Package, i8>) -> Result<()> {
for (package, idx) in mappings {
- package.get_self_packaged_dependencies()
+ let build_dependencies = package.dependencies()
+ .build()
+ .iter()
+ .map(|d| d.parse_as_name_and_version());
+
+ let runtime_dependencies = package.dependencies()
+ .runtime()
+ .iter()
+ .map(|d| d.parse_as_name_and_version());
+
+ build_dependencies
+ .chain(runtime_dependencies)
+ .unique_by(|res| res.as_ref().ok().cloned())
.and_then_ok(|(name, constr)| {
mappings
.iter()