diff --git a/scarb/src/ops/resolve.rs b/scarb/src/ops/resolve.rs index 791a8adcf..68a05a9db 100644 --- a/scarb/src/ops/resolve.rs +++ b/scarb/src/ops/resolve.rs @@ -179,12 +179,13 @@ pub fn generate_compilation_units( .filter(|member| !member.is_cairo_plugin()) .collect_vec(); validate_features(&members, enabled_features)?; + check_cairo_version_compatibility(&members, ws, ignore_cairo_version)?; + for member in members { units.extend(generate_cairo_compilation_units( &member, resolve, enabled_features, - ignore_cairo_version, ws, )?); } @@ -237,7 +238,7 @@ fn generate_cairo_compilation_units( member: &Package, resolve: &WorkspaceResolve, enabled_features: &FeaturesOpts, - ignore_cairo_version: bool, + ws: &Workspace<'_>, ) -> Result> { let profile = ws.current_profile()?; @@ -258,7 +259,6 @@ fn generate_cairo_compilation_units( member, profile.clone(), enabled_features, - ignore_cairo_version, &mut solution, )?)) }) @@ -274,7 +274,6 @@ fn generate_cairo_compilation_units( member, profile.clone(), enabled_features, - ignore_cairo_version, &mut solution, )?)) }) @@ -291,11 +290,11 @@ fn cairo_compilation_unit_for_target( member: &Package, profile: Profile, enabled_features: &FeaturesOpts, - ignore_cairo_version: bool, + solution: &mut PackageSolutionCollector<'_>, ) -> Result { let member_target = member_targets.first().cloned().unwrap(); - solution.collect(&member_target.kind, ignore_cairo_version)?; + solution.collect(&member_target.kind)?; let packages = solution.packages.as_ref().unwrap(); let cairo_plugins = solution.cairo_plugins.as_ref().unwrap(); @@ -485,7 +484,7 @@ impl<'a> PackageSolutionCollector<'a> { } } - pub fn collect(&mut self, target_kind: &TargetKind, ignore_cairo_version: bool) -> Result<()> { + pub fn collect(&mut self, target_kind: &TargetKind) -> Result<()> { // Do not traverse graph for each target of the same kind. if !self .target_kind @@ -493,7 +492,7 @@ impl<'a> PackageSolutionCollector<'a> { .map(|tk| tk == target_kind) .unwrap_or(false) { - let (p, c) = self.pull_from_graph(target_kind, ignore_cairo_version)?; + let (p, c) = self.pull_from_graph(target_kind)?; self.packages = Some(p.clone()); self.cairo_plugins = Some(c.clone()); self.target_kind = Some(target_kind.clone()); @@ -504,7 +503,6 @@ impl<'a> PackageSolutionCollector<'a> { fn pull_from_graph( &mut self, target_kind: &TargetKind, - ignore_cairo_version: bool, ) -> Result<(Vec, Vec)> { let mut classes = self .resolve @@ -541,8 +539,6 @@ impl<'a> PackageSolutionCollector<'a> { assert!(!packages.is_empty()); assert_eq!(packages[0].id, self.member.id); - check_cairo_version_compatibility(&packages, self.ws, ignore_cairo_version)?; - // Print warnings for dependencies that are not usable. let other = classes.remove(&PackageClass::Other).unwrap_or_default(); for pkg in other { diff --git a/scarb/tests/build.rs b/scarb/tests/build.rs index ac8c4dde3..7e3090f88 100644 --- a/scarb/tests/build.rs +++ b/scarb/tests/build.rs @@ -323,10 +323,6 @@ fn compile_ignore_cairo_version() { Cairo version required: ^33.33.0 Cairo version of Scarb: [..] - warn: the required Cairo version of package hello is not compatible with current version - Cairo version required: ^33.33.0 - Cairo version of Scarb: [..] - [..] Checking hello v0.1.0 ([..]Scarb.toml) [..] Finished checking `dev` profile target(s) in [..] "#});