diff --git a/syscare-build/src/main.rs b/syscare-build/src/main.rs index 27754afe4d37597f3117963c5df1100e0994d669..7d4d20193991b889e5309c286eb8d6e6005b84a8 100644 --- a/syscare-build/src/main.rs +++ b/syscare-build/src/main.rs @@ -122,7 +122,8 @@ impl SyscareBuild { } fn collect_package_info(&self) -> Result> { - let mut pkg_list = Vec::new(); + let mut source_pkg_list = Vec::new(); + let mut debug_pkg_list = Vec::new(); for pkg_path in self.args.source.clone() { let mut pkg_info = PKG_IMPL.parse_package_info(&pkg_path)?; @@ -139,7 +140,7 @@ impl SyscareBuild { bail!("File {} is not a source package", pkg_info.short_name()); } - pkg_list.push(pkg_info); + source_pkg_list.push(pkg_info); } for pkg_path in self.args.debuginfo.clone() { @@ -160,10 +161,22 @@ impl SyscareBuild { self.args.patch_arch ); } + debug_pkg_list.push(pkg_info); } info!("------------------------------"); - Ok(pkg_list) + for source_pkg in &source_pkg_list { + ensure!( + debug_pkg_list.iter().any(|debug_pkg| { + source_pkg.version == debug_pkg.version + && source_pkg.release == debug_pkg.release + }), + "Package {} has no matching debuginfo package", + source_pkg.full_name(), + ); + } + + Ok(source_pkg_list) } fn prepare_source_code(