[Libguestfs] [PATCH 5/5] builder: ignore repositories with download failures
Pino Toscano
ptoscano at redhat.com
Wed Jan 16 14:17:35 UTC 2019
If any URL of a repository (the index itself, or any of the other
resources associated except the templates themselves) cannot be
downloaded, ignore the repository with a warning message.
This way, if a repository is temporary unavailable, the rest of the
repositories can still be used.
---
builder/builder.ml | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/builder/builder.ml b/builder/builder.ml
index 651db83f0..b8d36f6fa 100644
--- a/builder/builder.ml
+++ b/builder/builder.ml
@@ -199,18 +199,26 @@ let main () =
let sources = List.append sources repos in
let index : Index.index =
List.concat (
- List.map (
+ List.filter_map (
fun source ->
- let sigchecker =
- Sigchecker.create ~gpg:cmdline.gpg
- ~check_signature:cmdline.check_signature
- ~gpgkey:source.Sources.gpgkey
- ~tmpdir in
- match source.Sources.format with
- | Sources.FormatNative ->
- Index_parser.get_index ~downloader ~sigchecker source
- | Sources.FormatSimpleStreams ->
- Simplestreams_parser.get_index ~downloader ~sigchecker source
+ try
+ let sigchecker =
+ Sigchecker.create ~gpg:cmdline.gpg
+ ~check_signature:cmdline.check_signature
+ ~gpgkey:source.Sources.gpgkey
+ ~tmpdir in
+ let parsed_index =
+ match source.Sources.format with
+ | Sources.FormatNative ->
+ Index_parser.get_index ~downloader ~sigchecker source
+ | Sources.FormatSimpleStreams ->
+ Simplestreams_parser.get_index ~downloader ~sigchecker source in
+ Some parsed_index
+ with
+ | Curl.Curl_failed (code, url) ->
+ warning (f_"failed to download ‘%s’ (code %d), ignoring repository ‘%s’")
+ url code source.Sources.name;
+ None
) sources
) in
let index = remove_duplicates index in
--
2.20.1
More information about the Libguestfs
mailing list