For developers who need to maintain control over the source packages and
stage them appropriately (e.g. for ISO or other policy requirements), it is
imperative to make sure that the download.pl script doesn't continue its
best effort download if it can't find the local mirror copy. This patch
adds a developer config value to only download from the local mirrors.
Signed-off-by: Peter Holland <pholland27 at gmail.com>
Config.in | 6 ++++++
scripts/download.pl | 114
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------
2 files changed, 68 insertions(+), 52 deletions(-)
diff --git a/Config.in b/Config.in
--- a/Config.in
+++ b/Config.in
@@ -300,6 +300,12 @@
string "Local mirror for source packages" if DEVEL
default ""
+ config LOCALMIRROR_ONLY
+ bool "Only local mirrors are used for source packages" if DEVEL
+ default n
+ help
+ Only use local mirrors for source packages, never any others
+
config AUTOREBUILD
bool "Automatic rebuild of packages" if DEVEL
default y
diff --git a/scripts/download.pl b/scripts/download.pl
--- a/scripts/download.pl
+++ b/scripts/download.pl
@@ -18,9 +18,11 @@
my $scriptdir = dirname($0);
my @mirrors;
my $ok;
+my $local_mirror_only;
sub localmirrors {
my @mlist;
+ my $local_only="n";
open LM, "$scriptdir/localmirrors" and do {
while (<LM>) {
chomp $_;
@@ -35,11 +37,14 @@
my @local_mirrors = split(/;/, $1);
push @mlist, @local_mirrors;
};
+ /^CONFIG_LOCALMIRROR_ONLY=([yn])/ and do {
+ $local_only=$1;
+ };
}
close CONFIG;
};
- return @mlist;
+ return (\@mlist, $local_only);
}
sub which($) {
@@ -117,63 +122,68 @@
unlink "$target/$filename.md5sum";
}
-@mirrors = localmirrors();
+my $mirrors_ref;
+($mirrors_ref, $local_mirror_only) = localmirrors();
+@mirrors = @$mirrors_ref;
-foreach my $mirror (@ARGV) {
- if ($mirror =~ /^\@SF\/(.+)$/) {
- # give sourceforge a few more tries, because it redirects to different
mirrors
- for (1 .. 5) {
- push @mirrors, "http://downloads.sourceforge.net/$1";
+if ($local_mirror_only eq "n") {
+
+ foreach my $mirror (@ARGV) {
+ if ($mirror =~ /^\@SF\/(.+)$/) {
+ # give sourceforge a few more tries, because it redirects to different
mirrors
+ for (1 .. 5) {
+ push @mirrors, "http://downloads.sourceforge.net/$1";
+ }
+ } elsif ($mirror =~ /^\@GNU\/(.+)$/) {
+ push @mirrors, "ftp://ftp.gnu.org/gnu/$1";
+ push @mirrors, "ftp://ftp.belnet.be/mirror/ftp.gnu.org/gnu/$1";
+ push @mirrors, "ftp://ftp.mirror.nl/pub/mirror/gnu/$1";
+ push @mirrors, "http://mirror.switch.ch/ftp/mirror/gnu/$1";
+ push @mirrors, "ftp://ftp.uu.net/archive/systems/gnu/$1";
+ push @mirrors, "ftp://ftp.eu.uu.net/pub/gnu/$1";
+ push @mirrors, "ftp://ftp.leo.org/pub/comp/os/unix/gnu/$1";
+ push @mirrors, "ftp://ftp.digex.net/pub/gnu/$1";
+ } elsif ($mirror =~ /^\@KERNEL\/(.+)$/) {
+ my @extra = ( $1 );
+ if ($filename =~ /linux-\d+\.\d+\.\d+-rc/) {
+ push @extra, "$extra[0]/testing";
+ } elsif ($filename =~ /linux-(\d+\.\d+\.\d+)/) {
+ push @extra, "$extra[0]/longterm/v$1";
+ }
+ foreach my $dir (@extra) {
+ push @mirrors, "ftp://ftp.geo.kernel.org/pub/$dir";
+ push @mirrors, "http://ftp.geo.kernel.org/pub/$dir";
+ push @mirrors, "ftp://ftp.all.kernel.org/pub/$dir";
+ push @mirrors, "http://ftp.all.kernel.org/pub/$dir";
+ push @mirrors, "ftp://ftp.de.kernel.org/pub/$dir";
+ push @mirrors, "http://ftp.de.kernel.org/pub/$dir";
+ push @mirrors, "ftp://ftp.fr.kernel.org/pub/$dir";
+ push @mirrors, "http://ftp.fr.kernel.org/pub/$dir";
+ }
+ } elsif ($mirror =~ /^\@GNOME\/(.+)$/) {
+ push @mirrors, "http://ftp.gnome.org/pub/GNOME/sources/$1";
+ push @mirrors, "http://ftp.unina.it/pub/linux/GNOME/sources/$1";
+ push @mirrors, "http://fr2.rpmfind.net/linux/gnome.org/sources/$1";
+ push @mirrors, "ftp://ftp.dit.upm.es/pub/GNOME/sources/$1";
+ push @mirrors, "ftp://ftp.no.gnome.org/pub/GNOME/sources/$1";
+ push @mirrors, "http://ftp.acc.umu.se/pub/GNOME/sources/$1";
+ push @mirrors, "http://ftp.belnet.be/mirror/ftp.gnome.org/sources/$1";
+ push @mirrors, "http://linorg.usp.br/gnome/sources/$1";
+ push @mirrors, "http://mirror.aarnet.edu.au/pub/GNOME/sources/$1";
+ push @mirrors, "http://mirrors.ibiblio.org/pub/mirrors/gnome/sources/$1";
+ push @mirrors, "ftp://ftp.cse.buffalo.edu/pub/Gnome/sources/$1";
+ push @mirrors, "ftp://ftp.nara.wide.ad.jp/pub/X11/GNOME/sources/$1";
}
- } elsif ($mirror =~ /^\@GNU\/(.+)$/) {
- push @mirrors, "ftp://ftp.gnu.org/gnu/$1";
- push @mirrors, "ftp://ftp.belnet.be/mirror/ftp.gnu.org/gnu/$1";
- push @mirrors, "ftp://ftp.mirror.nl/pub/mirror/gnu/$1";
- push @mirrors, "http://mirror.switch.ch/ftp/mirror/gnu/$1";
- push @mirrors, "ftp://ftp.uu.net/archive/systems/gnu/$1";
- push @mirrors, "ftp://ftp.eu.uu.net/pub/gnu/$1";
- push @mirrors, "ftp://ftp.leo.org/pub/comp/os/unix/gnu/$1";
- push @mirrors, "ftp://ftp.digex.net/pub/gnu/$1";
- } elsif ($mirror =~ /^\@KERNEL\/(.+)$/) {
- my @extra = ( $1 );
- if ($filename =~ /linux-\d+\.\d+\.\d+-rc/) {
- push @extra, "$extra[0]/testing";
- } elsif ($filename =~ /linux-(\d+\.\d+\.\d+)/) {
- push @extra, "$extra[0]/longterm/v$1";
- }
- foreach my $dir (@extra) {
- push @mirrors, "ftp://ftp.geo.kernel.org/pub/$dir";
- push @mirrors, "http://ftp.geo.kernel.org/pub/$dir";
- push @mirrors, "ftp://ftp.all.kernel.org/pub/$dir";
- push @mirrors, "http://ftp.all.kernel.org/pub/$dir";
- push @mirrors, "ftp://ftp.de.kernel.org/pub/$dir";
- push @mirrors, "http://ftp.de.kernel.org/pub/$dir";
- push @mirrors, "ftp://ftp.fr.kernel.org/pub/$dir";
- push @mirrors, "http://ftp.fr.kernel.org/pub/$dir";
+ else {
+ push @mirrors, $mirror;
}
- } elsif ($mirror =~ /^\@GNOME\/(.+)$/) {
- push @mirrors, "http://ftp.gnome.org/pub/GNOME/sources/$1";
- push @mirrors, "http://ftp.unina.it/pub/linux/GNOME/sources/$1";
- push @mirrors, "http://fr2.rpmfind.net/linux/gnome.org/sources/$1";
- push @mirrors, "ftp://ftp.dit.upm.es/pub/GNOME/sources/$1";
- push @mirrors, "ftp://ftp.no.gnome.org/pub/GNOME/sources/$1";
- push @mirrors, "http://ftp.acc.umu.se/pub/GNOME/sources/$1";
- push @mirrors, "http://ftp.belnet.be/mirror/ftp.gnome.org/sources/$1";
- push @mirrors, "http://linorg.usp.br/gnome/sources/$1";
- push @mirrors, "http://mirror.aarnet.edu.au/pub/GNOME/sources/$1";
- push @mirrors, "http://mirrors.ibiblio.org/pub/mirrors/gnome/sources/$1";
- push @mirrors, "ftp://ftp.cse.buffalo.edu/pub/Gnome/sources/$1";
- push @mirrors, "ftp://ftp.nara.wide.ad.jp/pub/X11/GNOME/sources/$1";
- }
- else {
- push @mirrors, $mirror;
}
+
+ #push @mirrors, 'http://mirror1.openwrt.org';
+ push @mirrors, 'http://mirror2.openwrt.org/sources';
+ push @mirrors, 'http://downloads.openwrt.org/sources';
}
-#push @mirrors, 'http://mirror1.openwrt.org';
-push @mirrors, 'http://mirror2.openwrt.org/sources';
-push @mirrors, 'http://downloads.openwrt.org/sources';
-
while (!$ok) {
my $mirror = shift @mirrors;
$mirror or die "No more mirrors to try - giving up.\n";
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel