scripts: download.pl: retry download using filename
authorDavid Bauer <mail@david-bauer.net>
Wed, 18 Nov 2020 15:02:23 +0000 (16:02 +0100)
committerRISCi_ATOM <bob@bobcall.me>
Fri, 27 Nov 2020 19:38:10 +0000 (14:38 -0500)
With this commit, the download script will try downloading source files
using the filename instead of the url-filename in case the previous
download attempt using the url-filename failed.

This is required, as the OpenWrt sources mirrors serve files using the
filename files might be renamed to after downloading. If the original
mirror for a file where url-filename and filename do not match goes
down, the download failed prior to this patch.

Further improvement can be done by performing this only for the
OpenWrt sources mirrors.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit d36999389890fb952fc7cc8c0db8e1bbb671af12)

scripts/download.pl

index d6503673d4a628ac62d7a3e2d72596b664f3d6d5..13fd5c8d8df6f5dc76f7ab6fcda343fce4ba8113 100755 (executable)
@@ -93,6 +93,7 @@ $hash_cmd or ($file_hash eq "skip") or die "Cannot find appropriate hash command
 sub download
 {
        my $mirror = shift;
+       my $download_filename = shift;
 
        $mirror =~ s!/$!!;
 
@@ -139,7 +140,7 @@ sub download
                        }
                };
        } else {
-               my @cmd = download_cmd("$mirror/$url_filename");
+               my @cmd = download_cmd("$mirror/$download_filename");
                print STDERR "+ ".join(" ",@cmd)."\n";
                open(FETCH_FD, '-|', @cmd) or die "Cannot launch curl or wget.\n";
                $hash_cmd and do {
@@ -274,7 +275,10 @@ while (!-f "$target/$filename") {
        my $mirror = shift @mirrors;
        $mirror or die "No more mirrors to try - giving up.\n";
 
-       download($mirror);
+       download($mirror, $url_filename);
+       if (!-f "$target/$filename" && $url_filename ne $filename) {
+               download($mirror, $filename);
+       }
 }
 
 $SIG{INT} = \&cleanup;