From 7829ab74ed979f66e58a5bcac9b1414467cc6779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Thu, 15 Sep 2022 15:09:14 +0200 Subject: [PATCH] mirror: skip failed, non Packages references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit these contain extra data that is not that important for the main repository use case - providing deb packages. if they are not retrievable (e.g., Ubuntu *only* provides some of they via by-hash, which proxmox-offline-mirror doesn't yet support) a warning should be enough, instead of failing the whole snapshot creation. Signed-off-by: Fabian Grünbichler --- src/mirror.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/mirror.rs b/src/mirror.rs index 14b0c6a..f910e6a 100644 --- a/src/mirror.rs +++ b/src/mirror.rs @@ -534,6 +534,7 @@ pub fn create_snapshot( let mut packages_size = 0_usize; let mut packages_indices = HashMap::new(); + let mut failed_references = Vec::new(); for (component, references) in per_component { println!("\nFetching indices for component '{component}'"); let mut component_deb_size = 0; @@ -555,7 +556,18 @@ pub fn create_snapshot( } // this will ensure the uncompressed file will be written locally - let res = fetch_index_file(&config, prefix, reference, uncompressed_ref)?; + let res = match fetch_index_file(&config, prefix, reference, uncompressed_ref) { + Ok(res) => res, + Err(err) if !reference.file_type.is_package_index() => { + eprintln!( + "Failed to fetch '{:?}' type reference '{}', skipping - {err}", + reference.file_type, reference.path + ); + failed_references.push(reference); + continue; + } + Err(err) => bail!(err), + }; fetch_progress.update(&res); if package_index_data.is_none() && reference.file_type.is_package_index() { @@ -577,6 +589,12 @@ pub fn create_snapshot( total_progress += fetch_progress; } println!("Total deb size: {packages_size}"); + if !failed_references.is_empty() { + eprintln!("Failed to download non-package-index references:"); + for reference in failed_references { + eprintln!("\t{}", reference.path); + } + } println!("\nFetching packages.."); for (basename, references) in packages_indices {