diff --git a/src/bin/cook.rs b/src/bin/cook.rs index d4e14756f..5dd888d58 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -1412,7 +1412,7 @@ fn main() { }; } - let recipes = match CookRecipe::new_recursive(&recipe_names, WALK_DEPTH) { + let recipes = match CookRecipe::get_build_deps_recursive(&recipe_names) { Ok(ok) => ok, Err(err) => { eprintln!( diff --git a/src/recipe.rs b/src/recipe.rs index 1e6a23eb0..f58e73765 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -6,6 +6,8 @@ use serde::{ Deserialize, Serialize, }; +use crate::WALK_DEPTH; + /// Specifies how to download the source for a recipe #[derive(Debug, Deserialize, PartialEq, Serialize)] #[serde(untagged)] @@ -186,9 +188,8 @@ impl CookRecipe { }, )?; - for mut dependency in dependencies { + for dependency in dependencies { if !recipes.contains(&dependency) { - dependency.is_deps = true; recipes.push(dependency); } } @@ -201,6 +202,18 @@ impl CookRecipe { Ok(recipes) } + pub fn get_build_deps_recursive( + names: &[PackageName], + ) -> Result, PackageError> { + let mut packages = Self::new_recursive(names, WALK_DEPTH)?; + + for package in packages.iter_mut() { + package.is_deps = !names.contains(&package.name); + } + + Ok(packages) + } + pub fn get_package_deps_recursive( names: &[PackageName], recursion: usize,