blob: 2ffe47c42d970eacfbbcaf19c91d78864255bffa [file] [log] [blame]
#!/usr/bin/perl
#
# (C) Martin J. Bligh 2003
# Released under the GPL, version 2
use Getopt::Long;
my $mirror = "ftp://ftp.kernel.org/pub/linux/kernel";
my $kernelpset;
my $relative;
my $local_mirror;
GetOptions("mirror|m=s" => \$mirror,
"debug|d" => \$debug,
"relative|r" => \$relative,
"local|l=s" => \$local_mirror);
($kernelpset, @patches) = @ARGV;
if ($kernelpset eq "") {
print "Usage: $0 [-m <mirror>] [-r] <kernel-alias>\n";
exit 1;
}
if ($relative) {
$mirror = "";
}
if ($local_mirror) {
$mirror = "$local_mirror/kernel";
$akpm = "$local_mirror/akpm";
$mbligh = "$local_mirror/mbligh";
} else {
$akpm = "$mirror/people/akpm/patches";
$mbligh = "$mirror/people/mbligh";
}
if ( $kernelpset =~ /^(2\.(\d)\.(\d+(\.\d+)?)(-(test|pre|rc)\d+)?)(-(mm|mjb|bk|git)\d+)?$/ ) {
($kernel, $minor, $maintbug, $bugfix, $extra, $extraop) =
($1, $2, $3, $4, $5, $6);
$bugfix =~ s/\.//;
# From kernelpset "2.6.8.3-rc1-mm4" we get:
# $kernel 2.6.8.3-rc1
# $minor 6
# $maintbug 8.3
# $bugfix 3
# $extra -rc1
# $extraop rc
if ($debug) {
print "kernelpset: $kernelpset\n";
print "kernel: $kernel\n";
print "minor: $minor\n";
print "maintbug: $maintbug\n";
print "bugfix: $bugfix\n";
print "extra: $extra\n";
print "extraop $extraop\n";
}
} else {
die "Invalid kernel alias: $kernelpset";
}
# Hack any pset off the end, and deal with it as a patch
if ($kernelpset =~ /(-(mm|mjb|bk|git)\d+)$/) {
($pset, $psettype) = ($1, $2);
print "Found patchset $pset, type $psettype\n" if ($debug);
if ($psettype eq "mm") {
if ($local_mirror) {
$patch = "$akpm/$kernel/$kernelpset/$kernelpset.bz2";
} else {
$patch = "$akpm/2.$minor/$kernel/$kernelpset/$kernelpset.bz2";
}
} elsif ($psettype eq "mjb") {
$patch = "$mbligh/$kernel/patch-$kernelpset.bz2";
} elsif (($psettype eq "bk") || ($psettype eq "git")) {
$patch = "$mirror/v2.$minor/snapshots/patch-$kernelpset.bz2";
}
print "Appending patch: $patch\n" if ($debug);
unshift @patches, $patch;
}
if ($extraop eq "rc") {
$kernelurl = "$mirror/v2.$minor/testing/linux-$kernel.tar.bz2";
} elsif ($extraop eq "test") {
$kernelurl = "$mirror/v2.$minor/pre-releases/linux-$kernel.tar.bz2";
} else {
$kernelurl = "$mirror/v2.$minor/linux-$kernel.tar.bz2";
}
$patches = join(' ', @patches);
if ($onlyexppatch) {
print "$kernel $patches\n";
} else {
print "$kernelurl $patches\n";
}