#!/usr/bin/perl # Copyright Martin J. Bligh (mbligh@aracnet.com), Dec 2003 $kernel = shift(@ARGV); $kernel =~ /^(2.[56].\d+(-test\d+|-rc\d+)?)-mjb(\d+)$/ || die "Kernel invalid: $kernel"; $base = $1; $mjb = $3; $basedir = $ENV{'HOME'} . "/linux"; $psetdir = "$basedir/pset/$kernel/current"; $patchdir = "$basedir/patches/$kernel"; $user = 'mbligh@master.kernel.org'; $targetdest = 'ftp'; $dest = "$user:$targetdest"; print "Releasing ${base}-mjb${mjb} from $patchdir\n"; ########## init print "\n"; print "chdir $psetdir\n"; chdir $psetdir || die "Can't switch to $psetdir"; if (-e $patchdir) { printsys ("rm $patchdir/[0-9]*"); printsys ("rm $patchdir/patch-*"); printsys ("rm $patchdir/COMBINED $patchdir/SUMMARY"); } else { printsys ("mkdir $patchdir"); } die "No patch dir: $patchdir" unless (-e $patchdir); ########## the main patch print "\n"; $lastview = `ls -d [0-9]* | tail -1`; $lastview =~ s/\n//g; printsys ("pset release $patchdir"); printsys ("mv $patchdir/COMBINED $patchdir/patch-$kernel"); printsys ("gzip $patchdir/patch-$kernel"); printsys ("/usr/bin/ssh $user mkdir $targetdest/$base"); printsys ("/usr/bin/scp $patchdir/patch-$kernel.gz $dest/$base/.patch-$kernel.gz"); printsys ("/usr/bin/ssh $user mv $targetdest/$base/.patch-$kernel.gz $targetdest/$base/patch-$kernel.gz"); ########## the incremental patch # print "\n"; # # if ($mjb > 1) { # $prevmjb = $base . "-mjb" . ($mjb-1); # $incpatch = "patch-${prevmjb}-mjb$mjb"; # print "Attempting to create incremental patch $incpatch ... "; # $oldlastview = `cd ../$prevmjb; ls -d [0-9]* | tail -1`; # $oldlastview = "../$prevmjb/$oldlastview"; # if (-e $oldlastview) { # print "\n"; # printsys("diffview $oldlastview $lastview $incpatch"); # printsys("gzip $patchdir/$incpatch"); # printsys("/usr/bin/scp $patchdir/$incpatch.gz $dest/$base/"); # } else { # print "failed.\n"; # } # } # ########## the individual patches print "\n"; printsys ("/usr/bin/ssh $user mkdir -p $targetdest/patches/$base/$kernel"); printsys ("/usr/bin/scp $patchdir/notes $patchdir/[0-9]* $dest/patches/$base/$kernel/"); sub printsys { my $command = shift(@_); print $command . "\n"; system $command; }