summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Bauer <mail@david-bauer.net>2020-11-18 16:02:23 +0100
committerDavid Bauer <mail@david-bauer.net>2020-11-20 11:58:01 +0100
commit39c5635714aacac4e94f4ac60d191e9b0582d6b5 (patch)
treec54d43847b7b43a27a19b3898c253a3dc5d200c4
parent2a8279c161efeb243084d78d8077661c9122bb18 (diff)
downloadopenwrt-39c5635714aacac4e94f4ac60d191e9b0582d6b5.tar.gz
openwrt-39c5635714aacac4e94f4ac60d191e9b0582d6b5.tar.bz2
openwrt-39c5635714aacac4e94f4ac60d191e9b0582d6b5.zip
scripts: download.pl: retry download using filename
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)
-rwxr-xr-xscripts/download.pl8
1 files changed, 6 insertions, 2 deletions
diff --git a/scripts/download.pl b/scripts/download.pl
index c14a44ba68..5739c20cea 100755
--- a/scripts/download.pl
+++ b/scripts/download.pl
@@ -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 {
@@ -266,7 +267,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;