diff --git a/syscare-build/src/main.rs b/syscare-build/src/main.rs index 7d4d20193991b889e5309c286eb8d6e6005b84a8..df38a17951e6fe54cc1f0937b85029943906aeb5 100644 --- a/syscare-build/src/main.rs +++ b/syscare-build/src/main.rs @@ -37,7 +37,7 @@ use package::{ PackageBuildRoot, PackageBuilderFactory, PackageFormat, PackageImpl, PackageSpecBuilderFactory, PackageSpecWriterFactory, }; -use patch::{PatchBuilderFactory, PatchHelper, PatchMetadata, PATCH_FILE_EXT}; +use patch::{PatchBuilderFactory, PatchHelper, PatchMetadata}; const CLI_NAME: &str = "syscare build"; const CLI_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -165,14 +165,14 @@ impl SyscareBuild { } info!("------------------------------"); - for source_pkg in &source_pkg_list { + for debug_pkg in &debug_pkg_list { ensure!( - debug_pkg_list.iter().any(|debug_pkg| { - source_pkg.version == debug_pkg.version - && source_pkg.release == debug_pkg.release + source_pkg_list.iter().any(|source_pkg| { + debug_pkg.version == source_pkg.version + && debug_pkg.release == source_pkg.release }), - "Package {} has no matching debuginfo package", - source_pkg.full_name(), + "Package {} has no matching source package", + debug_pkg.full_name(), ); } @@ -292,12 +292,13 @@ impl SyscareBuild { } // Override patch list - let mut new_patch_files = PatchHelper::collect_patch_files(fs::list_files_by_ext( - &patch_metadata.metadata_dir, - PATCH_FILE_EXT, - fs::TraverseOptions { recursive: false }, - )?) - .context("Failed to collect patch file from metadata directory")?; + let mut new_patch_files = PatchHelper::collect_patch_files( + saved_patch_info + .patches + .iter() + .map(|patch_file| &patch_file.path), + ) + .context("Failed to collect patch file from patch metadata")?; new_patch_files.extend(patch_files); patch_files = new_patch_files; diff --git a/syscare-build/src/patch/metadata.rs b/syscare-build/src/patch/metadata.rs index 09116936fe2583e044aba51bb83720b9903f5db1..5eadf523dd3bfa3d797bcf4c1679902cd0cc2b89 100644 --- a/syscare-build/src/patch/metadata.rs +++ b/syscare-build/src/patch/metadata.rs @@ -90,8 +90,16 @@ impl PatchMetadata { .decompress(&self.root_dir) .context("Failed to decompress patch metadata")?; - serde::deserialize_with_magic::(&self.metadata_path, PATCH_INFO_MAGIC) - .context("Failed to read patch metadata") + let mut patch_info: PatchInfo = + serde::deserialize_with_magic(&self.metadata_path, PATCH_INFO_MAGIC) + .context("Failed to read patch metadata")?; + + // rewrite file path to metadata directory path + for patch_file in &mut patch_info.patches { + patch_file.path = self.metadata_dir.join(&patch_file.name) + } + + Ok(patch_info) } pub fn write>( diff --git a/syscare-build/src/patch/mod.rs b/syscare-build/src/patch/mod.rs index f590b1c7f2826e63c22e6642bcce441998a2ab06..558bfeae33198b4f7aabd4ad6506b5c5b1566f39 100644 --- a/syscare-build/src/patch/mod.rs +++ b/syscare-build/src/patch/mod.rs @@ -12,8 +12,6 @@ * See the Mulan PSL v2 for more details. */ -pub const PATCH_FILE_EXT: &str = "patch"; - mod kernel_patch; mod metadata; mod patch_builder; diff --git a/syscare-build/src/patch/patch_helper.rs b/syscare-build/src/patch/patch_helper.rs index fc8324a94a57c532ecd7aa098b255b2d1c72feaa..9fc3ed175484e6b051b1bca48bdad87b4722ea01 100644 --- a/syscare-build/src/patch/patch_helper.rs +++ b/syscare-build/src/patch/patch_helper.rs @@ -47,7 +47,7 @@ impl PatchHelper { digest: file_digest, }); } - patch_list.sort(); + Ok(patch_list) } }