forked from rpms/kernel
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl -w
 | |
| #
 | |
| # Script to rediff all patches in the spec
 | |
| # Usage: perl -w rediffall.pl < kernel-2.4.spec
 | |
| #
 | |
| # $workdir is where the new rediff'ed patches are created
 | |
| # $origdir is where the original patches and tarball are located
 | |
| #
 | |
| # Note that both $workdir and $origdir must be absolute path names.
 | |
| # Suggestion: create a /kernel symbolic link to the top of your CVS tree.
 | |
| 
 | |
| my $workdir = "/dev/shm/redifftree";
 | |
| my $origdir = "/home/davej/devel";
 | |
| my $kernver = "linux-2.6.17";
 | |
| my $datestrip = "s/^\\(\\(+++\\|---\\) [^[:blank:]]\\+\\)[[:blank:]].*/\\1/";
 | |
| my $patchindex = 0;
 | |
| my @patchlist;
 | |
| 
 | |
| # phase 1: create a tree
 | |
| print "Extracting pristine source..\n";
 | |
| system("mkdir -p $workdir");
 | |
| system("rm -rf $workdir/*");
 | |
| chdir("$workdir");
 | |
| system("tar -jxvf $origdir/$kernver.tar.bz2 > /dev/null");
 | |
| system("cp -al $kernver linux-$patchindex");
 | |
| 
 | |
| # phase 2: read the spec from stdin and store all patches
 | |
| print "Reading specfile..\n";
 | |
| 
 | |
| while (<>) {
 | |
| 	my $line = $_;
 | |
| 	if ($line =~ /^Patch([0-9]+)\: ([a-zA-Z0-9\-\_\.\+]+\.patch)/) {
 | |
| 		$patchlist[$1] = $2;
 | |
| 	} else {
 | |
| 		if ($line =~ /^Patch([0-9]+)\: ([a-zA-Z0-9\-\_\.]+\.bz2)/) {
 | |
| 			$patchlist[$1] = $2;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	if ($line =~ /^%patch([0-9]+) -p1/) {
 | |
| 		# copy the tree, apply the patch, diff and remove the old tree
 | |
| 		my $oldindex = $patchindex;
 | |
| 		$patchindex = $1;
 | |
| 
 | |
| 		print "rediffing patch number $patchindex: $patchlist[$patchindex]\n";
 | |
| 
 | |
| 		system("cp -al linux-$oldindex linux-$patchindex");
 | |
| 		chdir("linux-$patchindex");
 | |
| 		if ($patchlist[$patchindex] =~ /bz2/) {
 | |
| 			system("bzcat $origdir/$patchlist[$patchindex] | patch -p1 &>/dev/null");
 | |
| 		} else {
 | |
| 			system("cat $origdir/$patchlist[$patchindex] | patch -p1 &>/dev/null");
 | |
| 		}
 | |
| 		chdir("$workdir");
 | |
| 		system("rm -f `find -name \"*orig\"`");
 | |
| 		if ($patchlist[$patchindex] =~ /bz2/) {
 | |
| 		} else {
 | |
| 			system("diff -urNp --exclude-from=/home/davej/.exclude linux-$oldindex linux-$patchindex | sed '$datestrip' > $patchlist[$patchindex]");
 | |
| 		}
 | |
| 		system("rm -rf linux-$oldindex");
 | |
| 	}
 | |
| };
 | |
| 
 | |
| 1;
 |