Restore README.txt, scripts.
This commit is contained in:
		
							parent
							
								
									7f2b706ac8
								
							
						
					
					
						commit
						11487c5358
					
				
							
								
								
									
										67
									
								
								README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								README.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,67 @@ | |||||||
|  | 
 | ||||||
|  | 		Kernel package tips & tricks. | ||||||
|  | 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  | 
 | ||||||
|  | The kernel is one of the more complicated packages in the distro, and | ||||||
|  | for the newcomer, some of the voodoo in the spec file can be somewhat scary. | ||||||
|  | This file attempts to document some of the magic. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Speeding up make prep | ||||||
|  | --------------------- | ||||||
|  | The kernel is nearly 500MB of source code, and as such, 'make prep' | ||||||
|  | takes a while. The spec file employs some trickery so that repeated | ||||||
|  | invocations of make prep don't take as long.  Ordinarily the %prep | ||||||
|  | phase of a package will delete the tree it is about to untar/patch. | ||||||
|  | The kernel %prep keeps around an unpatched version of the tree, | ||||||
|  | and makes a symlink tree clone of that clean tree and than applies | ||||||
|  | the patches listed in the spec to the symlink tree. | ||||||
|  | This makes a huge difference if you're doing multiple make preps a day. | ||||||
|  | As an added bonus, doing a diff between the clean tree and the symlink | ||||||
|  | tree is slightly faster than it would be doing two proper copies of the tree. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | build logs. | ||||||
|  | ----------- | ||||||
|  | There's a convenience helper script in scripts/grab-logs.sh | ||||||
|  | that will grab the build logs from koji for the kernel version reported | ||||||
|  | by make verrel | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | config heirarchy. | ||||||
|  | ----------------- | ||||||
|  | Instead of having to maintain a config file for every arch variant we build on, | ||||||
|  | the kernel spec uses a nested system of configs.  At the top level, is | ||||||
|  | config-generic. Add options here that should be present in every possible | ||||||
|  | config on all architectures. | ||||||
|  | Beneath this are per-arch overrides. For example config-x86-generic add | ||||||
|  | additional x86 specific options, and also _override_ any options that were | ||||||
|  | set in config-generic. | ||||||
|  | There exist two additional overrides, config-debug, and config-nodebug, | ||||||
|  | which override -generic, and the per-arch overrides. It is documented | ||||||
|  | further below. | ||||||
|  | 
 | ||||||
|  | debug options. | ||||||
|  | -------------- | ||||||
|  | This is a little complicated, as the purpose & meaning of this changes | ||||||
|  | depending on where we are in the release cycle. | ||||||
|  | If we are building for a current stable release, 'make release' has | ||||||
|  | typically been run already, which sets up the following.. | ||||||
|  | - Two builds occur, a 'kernel' and a 'kernel-debug' flavor. | ||||||
|  | - kernel-debug will get various heavyweight debugging options like | ||||||
|  |   lockdep etc turned on. | ||||||
|  | 
 | ||||||
|  | If we are building for rawhide, 'make debug' has been run, which changes | ||||||
|  | the status quo to: | ||||||
|  | - We only build one kernel 'kernel' | ||||||
|  | - The debug options from 'config-debug' are always turned on. | ||||||
|  | This is done to increase coverage testing, as not many people actually | ||||||
|  | run kernel-debug. | ||||||
|  | 
 | ||||||
|  | To add new debug options, add an option to _both_ config-debug and config-nodebug, | ||||||
|  | and also new stanzas to the Makefile 'debug' and 'release' targets. | ||||||
|  | 
 | ||||||
|  | Sometimes debug options get added to config-generic, or per-arch overrides | ||||||
|  | instead of config-[no]debug. In this instance, the options should have no | ||||||
|  | discernable performance impact, otherwise they belong in the debug files. | ||||||
|  | 
 | ||||||
							
								
								
									
										71
									
								
								scripts/bumpspecfile.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										71
									
								
								scripts/bumpspecfile.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,71 @@ | |||||||
|  | #!/usr/bin/python | ||||||
|  | # | ||||||
|  | # Needs $GIT_COMMITTER_NAME and $GIT_COMMITTER_EMAIL set. | ||||||
|  | # | ||||||
|  | import re | ||||||
|  | import sys | ||||||
|  | import time | ||||||
|  | import os | ||||||
|  | import string | ||||||
|  | 
 | ||||||
|  | class Specfile: | ||||||
|  |     def __init__(self,filename): | ||||||
|  |         file=open(filename,"r") | ||||||
|  |         self.lines=file.readlines() | ||||||
|  |         self.vr="" | ||||||
|  | 
 | ||||||
|  |     def getNextVR(self,aspec): | ||||||
|  |          # Get VR for changelog entry. | ||||||
|  |         (ver,rel) = os.popen("LC_ALL=C rpm --specfile -q --qf '%%{version} %%{release}\n' --define 'dist %%{nil}' %s | head -1" % aspec).read().strip().split(' ') | ||||||
|  | 	pos = 0 | ||||||
|  |         # general released kernel case, bump 1st field | ||||||
|  |         fedora_build = rel.split('.')[pos] | ||||||
|  |         if fedora_build == "0": | ||||||
|  |             # this is a devel kernel, bump 2nd field | ||||||
|  |             pos = 1 | ||||||
|  |         elif rel.split('.')[-1] != fedora_build: | ||||||
|  |             # this is a branch, must bump 3rd field | ||||||
|  |             pos = 2 | ||||||
|  |         fedora_build = rel.split('.')[pos] | ||||||
|  |         if pos == 1 and len(rel.split('.')) > 4: | ||||||
|  |             # uh... what? devel kernel in a branch? private build? just do no VR in clog... | ||||||
|  |             print "Warning: not adding any VR to changelog, couldn't tell for sure which field to bump" | ||||||
|  |             pos = -1 | ||||||
|  |         next_fedora_build = int(fedora_build) + 1 | ||||||
|  |         if pos == 0: | ||||||
|  |             nextrel = str(next_fedora_build) | ||||||
|  |         elif pos == 1: | ||||||
|  |             nextrel = "0." + str(next_fedora_build) | ||||||
|  |         elif pos == 2: | ||||||
|  |             nextrel = rel.split('.')[0] + "." + rel.split('.')[1] + "." + str(next_fedora_build) | ||||||
|  |         if pos >= 0: | ||||||
|  |             for s in rel.split('.')[pos + 1:]: | ||||||
|  |                 nextrel = nextrel + "." + s | ||||||
|  |             self.vr = " "+ver+'-'+nextrel | ||||||
|  | 
 | ||||||
|  |     def addChangelogEntry(self,entry): | ||||||
|  |         user = os.environ.get("GIT_COMMITTER_NAME","unknown") | ||||||
|  |         email = os.environ.get("GIT_COMMITTER_EMAIL","unknown") | ||||||
|  |         if (email == "unknown"): | ||||||
|  |             email = os.environ.get("USER","unknown")+"@fedoraproject.org" | ||||||
|  |         changematch=re.compile(r"^%changelog") | ||||||
|  |         date=time.strftime("%a %b %d %Y",   time.localtime(time.time())) | ||||||
|  |         newchangelogentry="%changelog\n* "+date+" "+user+" <"+email+">"+self.vr+"\n"+entry+"\n\n" | ||||||
|  |         for i in range(len(self.lines)): | ||||||
|  |             if(changematch.match(self.lines[i])): | ||||||
|  |                 self.lines[i]=newchangelogentry | ||||||
|  |                 break | ||||||
|  | 
 | ||||||
|  |     def writeFile(self,filename): | ||||||
|  |         file=open(filename,"w") | ||||||
|  |         file.writelines(self.lines) | ||||||
|  |         file.close() | ||||||
|  | 
 | ||||||
|  | if __name__=="__main__": | ||||||
|  |   aspec=(sys.argv[1]) | ||||||
|  |   s=Specfile(aspec) | ||||||
|  |   entry=(sys.argv[2]) | ||||||
|  |   s.getNextVR(aspec) | ||||||
|  |   s.addChangelogEntry(entry) | ||||||
|  |   s.writeFile(aspec) | ||||||
|  | 
 | ||||||
							
								
								
									
										27
									
								
								scripts/check-TODO.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								scripts/check-TODO.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,27 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | for i in `grep ^* TODO  | awk '{ print $2 }'` | ||||||
|  | do | ||||||
|  |  if [ ! -f $i ]; then | ||||||
|  |    echo "$i referenced in the TODO, but isn't in CVS!" | ||||||
|  |  fi; | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # sometimes dead stuff lingers in cvs, even though it's not in the specfile. | ||||||
|  | for i in *.patch | ||||||
|  | do | ||||||
|  |    for j in $(grep $i kernel.spec | grep Apply.*Patch | awk '{ print $2 }' | wc -l) | ||||||
|  |    do | ||||||
|  |      if [ "$j" = "0" ]; then | ||||||
|  |        echo $i is in CVS, but not applied in spec file. | ||||||
|  |        grep $i TODO | awk '{ print $2 " is also still in the TODO" }' | ||||||
|  |      fi | ||||||
|  |    done | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | #for i in `grep ApplyPatch kernel.spec | awk '{ print $2 }'` | ||||||
|  | #do | ||||||
|  | #	R=$(grep $i TODO) | ||||||
|  | #	echo "$i is in CVS, but not mentioned in the TODO!" | ||||||
|  | #done | ||||||
|  | 
 | ||||||
							
								
								
									
										34
									
								
								scripts/combine.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								scripts/combine.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | #! /bin/sh | ||||||
|  | 
 | ||||||
|  | # combine a set of quilt patches | ||||||
|  | 
 | ||||||
|  | # $1 : base dir (source tree) | ||||||
|  | # $2 : quilt dir (patches to apply) | ||||||
|  | # $3 : pre-patch to apply first (optional) | ||||||
|  | 
 | ||||||
|  | # e.g.: | ||||||
|  | # combine.sh /home/user/fedora/trunk/kernel/F-11/kernel-2.6.30/vanilla-2.6.30 \ | ||||||
|  | #            /home/user/git/stable-queue/queue-2.6.30 \ | ||||||
|  | #            /home/user/fedora/trunk/kernel/F-11/patch-2.6.30.5.bz2 | ||||||
|  | 
 | ||||||
|  | if [ $# -lt 2 ] ; then | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | TD="combine_temp.d" | ||||||
|  | 
 | ||||||
|  | cd $1 || exit 1 | ||||||
|  | cd .. | ||||||
|  | [ -d $TD ] && rm -Rf $TD | ||||||
|  | mkdir $TD || exit 1 | ||||||
|  | cd $TD | ||||||
|  | 
 | ||||||
|  | cp -al ../$(basename $1) work.d | ||||||
|  | cd work.d | ||||||
|  | [ "$3" ] && bzcat $3 | patch -p1 -s | ||||||
|  | ln -s $2 patches | ||||||
|  | [ -h patches ] || exit 1 | ||||||
|  | quilt snapshot | ||||||
|  | quilt upgrade | ||||||
|  | quilt push -a -q | ||||||
|  | quilt diff --snapshot >../combined.patch | ||||||
							
								
								
									
										82
									
								
								scripts/configcommon.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								scripts/configcommon.pl
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,82 @@ | |||||||
|  | #! /usr/bin/perl | ||||||
|  | 
 | ||||||
|  | my @args=@ARGV; | ||||||
|  | my @configoptions; | ||||||
|  | my @configvalues; | ||||||
|  | my @common; | ||||||
|  | my $configcounter = 0; | ||||||
|  | 
 | ||||||
|  | # first, read the 1st file | ||||||
|  | 
 | ||||||
|  | open (FILE,"$args[0]") || die "Could not open $args[0]"; | ||||||
|  | while (<FILE>) { | ||||||
|  | 	my $str = $_; | ||||||
|  | 	if (/\# ([\w]+) is not set/) { | ||||||
|  | 		$configoptions[$configcounter] = $1; | ||||||
|  | 		$configvalues[$configcounter] = $str; | ||||||
|  | 		$common[$configcounter] = 1; | ||||||
|  | 		$configcounter ++; | ||||||
|  | 	} else { | ||||||
|  | 		if (/([\w]+)=/) { | ||||||
|  | 			$configoptions[$configcounter] = $1; | ||||||
|  | 			$configvalues[$configcounter] = $str; | ||||||
|  | 			$common[$configcounter] = 1; | ||||||
|  | 			$configcounter ++; | ||||||
|  | 		} else { | ||||||
|  | 			$configoptions[$configcounter] = "foobarbar"; | ||||||
|  | 			$configvalues[$configcounter] = $str; | ||||||
|  | 			$common[$configcounter] = 1; | ||||||
|  | 			$configcounter ++; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | # now, read all configfiles and see of the options match the initial one. | ||||||
|  | # if not, mark it not common | ||||||
|  | my $cntr=1; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | while ($cntr < @ARGV) { | ||||||
|  | 	open (FILE,$args[$cntr]) || die "Could not open $args[$cntr]";	 | ||||||
|  | 	while (<FILE>) { | ||||||
|  | 		my $nooutput; | ||||||
|  | 		my $counter; | ||||||
|  | 		my $configname; | ||||||
|  | 
 | ||||||
|  | 		if (/\# ([\w]+) is not set/) { | ||||||
|  | 			$configname = $1; | ||||||
|  | 		} else { | ||||||
|  | 			if (/([\w]+)=/) { | ||||||
|  | 				$configname  = $1; | ||||||
|  | 			}  | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		$counter = 0; | ||||||
|  | 		$nooutput = 0; | ||||||
|  | 		while ($counter < $configcounter) {	 | ||||||
|  | 			if ("$configname" eq "$configoptions[$counter]") {	 | ||||||
|  | 				if ("$_" eq "$configvalues[$counter]") { | ||||||
|  | 					1; | ||||||
|  | 				} else { | ||||||
|  | 					$common[$counter] = 0; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			$counter++; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	$cntr++; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # now print the common values | ||||||
|  | my $counter = 0; | ||||||
|  | 
 | ||||||
|  | while ($counter < $configcounter) {	 | ||||||
|  | 	if ($common[$counter]!=0) { | ||||||
|  | 		print "$configvalues[$counter]"; | ||||||
|  | 	} | ||||||
|  | 	$counter++; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 1; | ||||||
|  | 
 | ||||||
							
								
								
									
										76
									
								
								scripts/configdiff.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								scripts/configdiff.pl
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | |||||||
|  | #! /usr/bin/perl | ||||||
|  | 
 | ||||||
|  | my @args=@ARGV; | ||||||
|  | my @configoptions; | ||||||
|  | my @configvalues; | ||||||
|  | my @alreadyprinted; | ||||||
|  | my $configcounter = 0; | ||||||
|  | 
 | ||||||
|  | # first, read the override file | ||||||
|  | 
 | ||||||
|  | open (FILE,"$args[0]") || die "Could not open $args[0]"; | ||||||
|  | while (<FILE>) { | ||||||
|  | 	my $str = $_; | ||||||
|  | 	if (/\# ([\w]+) is not set/) { | ||||||
|  | 		$configoptions[$configcounter] = $1; | ||||||
|  | 		$configvalues[$configcounter] = $str; | ||||||
|  | 		$alreadprinted[$configcounter] = 0; | ||||||
|  | 		$configcounter ++; | ||||||
|  | 	} else { | ||||||
|  | 		if (/([\w]+)=/) { | ||||||
|  | 			$configoptions[$configcounter] = $1; | ||||||
|  | 			$configvalues[$configcounter] = $str; | ||||||
|  | 			$alreadprinted[$configcounter] = 0; | ||||||
|  | 			$configcounter ++; | ||||||
|  | 		} else { | ||||||
|  | 			$configoptions[$configcounter] = "$_"; | ||||||
|  | 			$configvalues[$configcounter] = $str; | ||||||
|  | 			$alreadprinted[$configcounter] = 0; | ||||||
|  | 			$configcounter ++; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | # now, read and output the entire configfile, except for the overridden | ||||||
|  | # parts... for those the new value is printed. | ||||||
|  | # O(N^2) algorithm so if this is slow I need to look at it later | ||||||
|  | 
 | ||||||
|  | open (FILE2,"$args[1]") || die "Could not open $args[1]"; | ||||||
|  | while (<FILE2>) { | ||||||
|  | 	my $nooutput; | ||||||
|  | 	my $counter; | ||||||
|  | 	my $configname="$_"; | ||||||
|  | 	my $match; | ||||||
|  | 
 | ||||||
|  | 	if (/\# ([\w]+) is not set/) { | ||||||
|  | 		$configname = $1; | ||||||
|  | 	} else { | ||||||
|  | 		if (/([\w]+)=/) { | ||||||
|  | 			$configname  = $1; | ||||||
|  | 		}  | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	$counter = 0; | ||||||
|  | 	$nooutput = 0; | ||||||
|  | 	$match = 0; | ||||||
|  | #	print "C : $configname"; | ||||||
|  | 	while ($counter < $configcounter) {	 | ||||||
|  | 		if ("$configname" eq "$configoptions[$counter]") {	 | ||||||
|  | 			if ( ("$_" eq "$configvalues[$counter]") || ("$configname" eq "") ) { | ||||||
|  | 				$match = 1; | ||||||
|  | 			} else { | ||||||
|  | 				$alreadyprinted[$configcounter] = 1; | ||||||
|  | 				print "$_"; | ||||||
|  | 				$match = 1; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		$counter++; | ||||||
|  | 	} | ||||||
|  | 	if ($match == 0) { | ||||||
|  | 		print "$_"; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 1; | ||||||
							
								
								
									
										3
									
								
								scripts/cross-amd64.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-amd64.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=x86_64-linux- ARCH=x86_64 hammer | ||||||
|  | 
 | ||||||
							
								
								
									
										3
									
								
								scripts/cross-i586.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-i586.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make ARCH=i386 i586 | ||||||
|  | 
 | ||||||
							
								
								
									
										3
									
								
								scripts/cross-i686.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-i686.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make ARCH=i386 i686 | ||||||
|  | 
 | ||||||
							
								
								
									
										2
									
								
								scripts/cross-ia64.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								scripts/cross-ia64.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=ia64-linux- ARCH=ia64  ia64 | ||||||
							
								
								
									
										3
									
								
								scripts/cross-iseries.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-iseries.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=ppc64-linux- ARCH=ppc64 ppc64iseries | ||||||
|  | 
 | ||||||
							
								
								
									
										3
									
								
								scripts/cross-ppc.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-ppc.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=ppc-linux- ARCH=ppc ppc | ||||||
|  | 
 | ||||||
							
								
								
									
										3
									
								
								scripts/cross-ppc64.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-ppc64.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=ppc64-linux- ARCH=ppc64 ppc64 | ||||||
|  | 
 | ||||||
							
								
								
									
										3
									
								
								scripts/cross-ppc8260.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-ppc8260.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=ppc-linux- ARCH=ppc ppc8260 | ||||||
|  | 
 | ||||||
							
								
								
									
										3
									
								
								scripts/cross-ppc8560.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-ppc8560.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=ppc-linux- ARCH=ppc ppc8560 | ||||||
|  | 
 | ||||||
							
								
								
									
										3
									
								
								scripts/cross-pseries.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/cross-pseries.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=ppc64-linux- ARCH=ppc64 pseries64 | ||||||
|  | 
 | ||||||
							
								
								
									
										2
									
								
								scripts/cross-s390.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								scripts/cross-s390.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=s390-linux- ARCH=s390  s390 | ||||||
							
								
								
									
										2
									
								
								scripts/cross-s390x.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								scripts/cross-s390x.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | export PATH=$PATH:/opt/cross/bin | ||||||
|  | make CROSS_COMPILE=s390x-linux- ARCH=s390  s390x | ||||||
							
								
								
									
										35
									
								
								scripts/get-snapshot.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								scripts/get-snapshot.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,35 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | VER=$(tail -n1 upstream | sed s/bz2/id/) | ||||||
|  | rm -f $VER | ||||||
|  | wget -c http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/$VER | ||||||
|  | SHA1=$(cat $VER) | ||||||
|  | rm -f patch-2.6.*-git*.id | ||||||
|  | 
 | ||||||
|  | cd ~/src/git-trees/kernel/linux-2.6 | ||||||
|  | git pull | ||||||
|  | 
 | ||||||
|  | DIF=$(git diff $SHA1.. | wc -l) | ||||||
|  | if [ "$DIF" = "0" ]; then | ||||||
|  |   echo Nothing changed. | ||||||
|  |   exit | ||||||
|  | fi | ||||||
|  | TOT=$(git log | head -n1) | ||||||
|  | 
 | ||||||
|  | git diff $SHA1.. > ~/src/fedora/kernel/devel/git-linus-new.diff | ||||||
|  | cd ~/src/fedora/kernel/devel/ | ||||||
|  | DIF=$(cmp git-linus.diff git-linus-new.diff) | ||||||
|  | if [ "$?" = "0" ]; then | ||||||
|  |   echo Nothing new in git | ||||||
|  |   rm -f git-linus-new.diff | ||||||
|  |   exit | ||||||
|  | fi | ||||||
|  | mv git-linus-new.diff git-linus.diff | ||||||
|  | 
 | ||||||
|  | perl -p -i -e 's|^#ApplyPatch\ git-linus.diff|ApplyPatch\ git-linus.diff|' kernel.spec | ||||||
|  | 
 | ||||||
|  | echo "- Merge Linux-2.6 up to" $TOT > ~/src/fedora/kernel/devel/clog.tmp | ||||||
|  | cd ~/src/fedora/kernel/devel/ | ||||||
|  | bumpspecfile.py kernel.spec "$(cat clog.tmp)" | ||||||
|  | rm -f clog.tmp | ||||||
|  | make clog | ||||||
							
								
								
									
										16
									
								
								scripts/grab-logs.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								scripts/grab-logs.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | VER=$(make verrel) | ||||||
|  | ver=$(echo $VER | sed -e 's/-/ /g' | awk '{print $2}') | ||||||
|  | rev=$(echo $VER | sed -e 's/-/ /g' | awk '{print $3}') | ||||||
|  | 
 | ||||||
|  | if [ -d logs ]; then | ||||||
|  |   DIR=logs/ | ||||||
|  | else | ||||||
|  |   DIR=./ | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | wget -O $DIR/build-$VER-i686.log http://kojipkgs.fedoraproject.org/packages/kernel/$ver/$rev/data/logs/i686/build.log | ||||||
|  | wget -O $DIR/build-$VER-x86-64.log http://kojipkgs.fedoraproject.org/packages/kernel/$ver/$rev/data/logs/x86_64/build.log | ||||||
|  | wget -O $DIR/build-$VER-noarch.log http://kojipkgs.fedoraproject.org/packages/kernel/$ver/$rev/data/logs/noarch/build.log | ||||||
|  | 
 | ||||||
							
								
								
									
										21
									
								
								scripts/newpatch.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								scripts/newpatch.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | # Easy application of new patches. | ||||||
|  | # Always adds to the very end. (Bumps last patch nr by 100) | ||||||
|  | # Parameters: | ||||||
|  | # $1 - patch filename  | ||||||
|  | # $2 - description | ||||||
|  | 
 | ||||||
|  | OLD=$(grep ^Patch kernel.spec  | tail -n1 | awk '{ print $1 }' | sed s/Patch// | sed s/://) | ||||||
|  | NEW=$(($OLD/100*100+100)) | ||||||
|  | 
 | ||||||
|  | sed -i "/^Patch$OLD:\ /a#\ $2\nPatch$NEW:\ $1" kernel.spec | ||||||
|  | 
 | ||||||
|  | LAST=$(grep ^ApplyPatch kernel.spec | tail -n1 | awk '{ print $2 }') | ||||||
|  | 
 | ||||||
|  | sed -i "/^ApplyPatch $LAST/aApplyPatch $1" kernel.spec | ||||||
|  | 
 | ||||||
|  | cvs add $1 | ||||||
|  | 
 | ||||||
|  | scripts/bumpspecfile.py kernel.spec "- $2" | ||||||
|  | make clog | ||||||
|  | 
 | ||||||
							
								
								
									
										13
									
								
								scripts/pull-upstreams.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								scripts/pull-upstreams.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | utrace_base=2.6-current | ||||||
|  | utrace_base=2.6.34 | ||||||
|  | 
 | ||||||
|  | url=http://people.redhat.com/roland/utrace/${1:-$utrace_base} | ||||||
|  | 
 | ||||||
|  | wget -q -O /dev/stdout $url/series | grep 'patch$' | | ||||||
|  | while read i | ||||||
|  | do | ||||||
|  |   rm -f linux-2.6-$i | ||||||
|  |   wget -nv -O linux-2.6-$i $url/$i | ||||||
|  | done | ||||||
							
								
								
									
										199
									
								
								scripts/rebase.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										199
									
								
								scripts/rebase.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,199 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | if [ ! -f /usr/bin/curl ]; then | ||||||
|  |   echo yum install curl | ||||||
|  |   exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Current kernel bits | ||||||
|  | if [ `grep -c ^patch upstream` -ge 1 ]; then | ||||||
|  |   export OLD=`grep ^patch upstream | tail -n1 | sed s/patch-// | sed s/\.bz2//` | ||||||
|  | else | ||||||
|  |   export OLD=`grep linux-2.6 upstream | tail -n1 | sed s/linux-// | sed s/\.tar\.bz2//` | ||||||
|  | fi | ||||||
|  | export OLDBASE=`echo $OLD | sed s/-/\ /g | sed s/2\.6\.// | awk '{ print $1 }'` | ||||||
|  | if [ `echo $OLD | grep -c rc` -ge 1 ]; then | ||||||
|  |   export OLDRC=`echo $OLD | sed s/-/\ /g | sed s/rc// | awk '{ print $2 }'` | ||||||
|  |   if [ `echo $OLD | grep -c git` -ge 1 ]; then | ||||||
|  |     export OLDGIT=`echo $OLD | sed s/-/\ /g | sed s/git// | awk '{ print $3 }'` | ||||||
|  |   else | ||||||
|  |     export OLDGIT=0 | ||||||
|  |   fi | ||||||
|  | else | ||||||
|  |   export OLDRC=0 | ||||||
|  |   if [ `echo $OLD | grep -c git` -ge 1 ]; then | ||||||
|  |     export OLDGIT=`echo $OLD | sed s/-/\ /g | sed s/git// | awk '{ print $2 }'` | ||||||
|  |   else | ||||||
|  |     export OLDGIT=0 | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Is there a new snapshot or prepatch ? | ||||||
|  | NEW=`curl -s http://www.kernel.org/kdist/finger_banner | grep "latest snapshot 2.6 version"` | ||||||
|  | if [ -z "$NEW" ] ; then | ||||||
|  |   NEW=`curl -s http://www.kernel.org/kdist/finger_banner | grep "latest mainline 2.6 version"` | ||||||
|  |   if [ -z "$NEW" ] ; then | ||||||
|  |     if [ "$OLDRC" -ne 0 ] ; then | ||||||
|  |       NEW=`curl -s http://www.kernel.org/kdist/finger_banner | grep "latest stable 2.6." | head -n1` | ||||||
|  |     else | ||||||
|  |       echo "No new rc or git snapshot of stable branch". | ||||||
|  |       exit 0 | ||||||
|  |     fi | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | export N=`echo $NEW | awk '{ print $11 }'` | ||||||
|  | if [ -z "$N" ]; then | ||||||
|  |   # "Stable version" | ||||||
|  |   export NEW=`echo $NEW | awk '{ print $10 }'` | ||||||
|  | else | ||||||
|  |   export NEW=`echo $NEW | awk '{ print $11 }'` | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | export NEWBASE=`echo $NEW | sed s/-/\ /g | sed s/2\.6\.// | awk '{ print $1 }'` | ||||||
|  | if [ `echo $NEW | grep -c rc` -ge 1 ]; then | ||||||
|  |   export NEWRC=`echo $NEW | sed s/-/\ /g | sed s/rc// | awk '{ print $2 }'` | ||||||
|  |   if [ `echo $NEW | grep -c git` -ge 1 ]; then | ||||||
|  |     export NEWGIT=`echo $NEW | sed s/-/\ /g | sed s/git// | awk '{ print $3 }'` | ||||||
|  |   else | ||||||
|  |     export NEWGIT=0 | ||||||
|  |   fi | ||||||
|  | else | ||||||
|  |   export NEWRC=0 | ||||||
|  |   if [ `echo $NEW | grep -c git` -ge 1 ]; then | ||||||
|  |     export NEWGIT=`echo $NEW | sed s/-/\ /g | sed s/git// | awk '{ print $2 }'` | ||||||
|  |   else | ||||||
|  |     export NEWGIT=0 | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | echo "OLD kernel was $OLD  BASE=$OLDBASE RC=$OLDRC GIT=$OLDGIT" | ||||||
|  | echo "NEW kernel is  $NEW  BASE=$NEWBASE RC=$NEWRC GIT=$NEWGIT" | ||||||
|  | 
 | ||||||
|  | if [ "$OLDRC" -eq 0 -a "$OLDGIT" -eq 0 -a "$OLDGIT" -ne "$NEWGIT" ]; then | ||||||
|  |   echo "Rebasing from a stable release to a new git snapshot" | ||||||
|  |   perl -p -i -e 's/^%define\ released_kernel\ 1/\%define\ released_kernel\ 0/' kernel.spec | ||||||
|  |   perl -p -i -e 's/^%define\ rawhide_skip_docs\ 1/\%define\ rawhide_skip_docs\ 0/' kernel.spec | ||||||
|  |   # force these to zero in this case, they may not have been when we rebased to stable | ||||||
|  |   perl -p -i -e 's/^%define\ rcrev.*/\%define\ rcrev\ 0/' kernel.spec | ||||||
|  |   perl -p -i -e 's/^%define\ gitrev.*/\%define\ gitrev\ 0/' kernel.spec | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # make sure we build docs at least once per -rc kernel, shut it off otherwise | ||||||
|  | if [ "$OLDRC" -ne 0 -a "$NEWRC" -gt "$OLDRC" ]; then | ||||||
|  |   perl -p -i -e 's/^%define\ rawhide_skip_docs\ 1/\%define\ rawhide_skip_docs\ 0/' kernel.spec | ||||||
|  | else | ||||||
|  |   if [ "$NEWRC" -eq "$OLDRC" -a "$NEWGIT" -gt "$OLDGIT" ]; then | ||||||
|  |     # common case, same -rc, new -git, make sure docs are off. | ||||||
|  |     perl -p -i -e 's/^%define\ rawhide_skip_docs\ 0/\%define\ rawhide_skip_docs\ 1/' kernel.spec | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$NEWRC" -eq 0 -a "$NEWGIT" -eq 0 ]; then | ||||||
|  |   echo "Rebasing from -rc to final release." | ||||||
|  |   perl -p -i -e 's/^%define\ released_kernel\ 0/\%define\ released_kernel\ 1/' kernel.spec | ||||||
|  |   perl -p -i -e 's/^%define\ rawhide_skip_docs\ 1/\%define\ rawhide_skip_docs\ 0/' kernel.spec | ||||||
|  |   export OLD_TARBALL_BASE=$(($OLDBASE-1)) | ||||||
|  |   perl -p -i -e 's/^%define\ base_sublevel\ $ENV{OLD_TARBALL_BASE}/%define\ base_sublevel\ $ENV{NEWBASE}/' kernel.spec | ||||||
|  |   perl -p -i -e 's/^%define\ rcrev.*/\%define\ rcrev\ 0/' kernel.spec | ||||||
|  |   perl -p -i -e 's/^%define\ gitrev.*/\%define\ gitrev\ 0/' kernel.spec | ||||||
|  | 
 | ||||||
|  |   grep -v kernel-2.6.$OLD_TARBALL_BASE .cvsignore >.cvsignore.tmp ; mv .cvsignore.tmp .cvsignore | ||||||
|  |   echo kernel-2.6.$NEWBASE >> .cvsignore | ||||||
|  | 
 | ||||||
|  |   for i in upstream sources .cvsignore | ||||||
|  |   do | ||||||
|  |    grep -v linux-2.6.$OLD_TARBALL_BASE.tar.bz2 $i > .$i.tmp; mv .$i.tmp $i | ||||||
|  |    grep -v patch-2.6.$OLDBASE-rc$OLDRC.bz2 $i > .$i.tmp; mv .$i.tmp $i | ||||||
|  |    grep -v patch-2.6.$OLDBASE-rc$OLDRC-git$OLDGIT.bz2 $i > .$i.tmp; mv .$i.tmp $i | ||||||
|  |   done | ||||||
|  | 
 | ||||||
|  |   echo linux-2.6.$NEWBASE.tar.bz2 >> upstream | ||||||
|  | 
 | ||||||
|  |   rm -f linux-2.6.$OLD_TARBALL_BASE.tar.bz2 | ||||||
|  |   rm -f linux-2.6.$OLD_TARBALL_BASE.tar.bz2.sign | ||||||
|  |   rm -f patch-2.6.$OLDBASE-rc$OLDRC.bz2 | ||||||
|  |   rm -f patch-2.6.$OLDBASE-rc$OLDRC.bz2.sign | ||||||
|  |   rm -f patch-2.6.$OLDBASE-rc$OLDRC-git$OLDGIT.bz2 | ||||||
|  |   rm -f patch-2.6.$OLDBASE-rc$OLDRC-git$OLDGIT.bz2.sign | ||||||
|  | 
 | ||||||
|  |   cvs remove linux-2.6.$OLD_TARBALL_BASE.tar.bz2.sign | ||||||
|  |   cvs remove patch-2.6.$OLDBASE-rc$OLDRC.bz2.sign | ||||||
|  |   cvs remove patch-2.6.$OLDBASE-rc$OLDRC-git$OLDGIT.bz2.sign | ||||||
|  | 
 | ||||||
|  |   make download | ||||||
|  |   make upload FILES=linux-$NEW.tar.bz2 | ||||||
|  | 
 | ||||||
|  |   cvs add linux-$NEW.tar.bz2.sign | ||||||
|  | 
 | ||||||
|  |   bumpspecfile.py kernel.spec "- $NEW" | ||||||
|  |   make clog | ||||||
|  |   echo FIXME! Fix up fedora_cvs_origin | ||||||
|  |   make verrel | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$OLDRC" != "$NEWRC" ]; then | ||||||
|  |   echo "Different rc. Rebasing from $OLDRC to $NEWRC" | ||||||
|  |   perl -p -i -e 's/^%define\ rcrev.*/\%define\ rcrev\ $ENV{"NEWRC"}/' kernel.spec | ||||||
|  |   perl -p -i -e 's/$ENV{OLDBASE}-rc$ENV{OLDRC}.bz2/$ENV{NEWBASE}-rc$ENV{NEWRC}.bz2/' .cvsignore | ||||||
|  |   perl -p -i -e 's/$ENV{OLDBASE}-rc$ENV{OLDRC}.bz2/$ENV{NEWBASE}-rc$ENV{NEWRC}.bz2/' upstream | ||||||
|  |   grep -v patch-2.6.$OLDBASE-rc$OLDRC.bz2 sources > .sources.tmp; mv .sources.tmp sources | ||||||
|  |   grep -v patch-2.6.$OLDBASE-rc$OLDRC-git$OLDGIT.bz2 .cvsignore >.cvsignore.tmp ; mv .cvsignore.tmp .cvsignore | ||||||
|  |   if [ `grep -c patch-2.6.$NEWBASE-rc$NEWRC.bz2 upstream` -eq 0 ]; then | ||||||
|  |     echo patch-2.6.$NEWBASE-rc$NEWRC.bz2 >> .cvsignore | ||||||
|  |     echo patch-2.6.$NEWBASE-rc$NEWRC.bz2 >> upstream | ||||||
|  |   fi | ||||||
|  |   rm -f patch-2.6.$OLDBASE-rc$OLDRC.bz2 | ||||||
|  |   rm -f patch-2.6.$OLDBASE-rc$OLDRC.bz2.sign | ||||||
|  |   cvs remove patch-2.6.$OLDBASE-rc$OLDRC.bz2.sign | ||||||
|  |   make download | ||||||
|  |   make upload FILES=patch-2.6.$NEWBASE-rc$NEWRC.bz2 | ||||||
|  |   cvs add patch-2.6.$NEWBASE-rc$NEWRC.bz2.sign | ||||||
|  | 
 | ||||||
|  |   # Another awkward (albeit unlikely) corner case. | ||||||
|  |   # Moving from say 26-rc3-git1 to 26-rc4-git1 | ||||||
|  |   # The above will grab the new -rc, but the below will | ||||||
|  |   # think that the -git hasn't changed. | ||||||
|  |   # Fudge around this, by pretending the old git was something crazy. | ||||||
|  |   OLDGIT=99 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$OLDGIT" != "$NEWGIT" ]; then | ||||||
|  |   if [ "$OLDRC" -eq 0 -a "$OLDGIT" -eq 0 ]; then | ||||||
|  |     echo "Rebasing to pre-rc git$NEWGIT" | ||||||
|  |   else | ||||||
|  |     echo "Different git. Rebasing from git$OLDGIT to git$NEWGIT" | ||||||
|  |   fi | ||||||
|  |   perl -p -i -e 's/^%define\ gitrev.*/\%define\ gitrev\ $ENV{"NEWGIT"}/' kernel.spec | ||||||
|  |   if [ "$OLDGIT" -ne 0 ]; then | ||||||
|  |     if [ "$NEWGIT" -ne 0 ]; then | ||||||
|  |       perl -p -i -e 's/$ENV{OLD}/$ENV{NEW}/' .cvsignore | ||||||
|  |       perl -p -i -e 's/$ENV{OLD}/$ENV{NEW}/' upstream | ||||||
|  |     fi | ||||||
|  |     grep -v patch-$OLD.bz2 sources > .sources.tmp; mv .sources.tmp sources | ||||||
|  |     grep -v patch-$OLD.bz2 upstream > .upstream.tmp; mv .upstream.tmp upstream | ||||||
|  |   else | ||||||
|  |     echo patch-$NEW.bz2 >> .cvsignore | ||||||
|  |     echo patch-$NEW.bz2 >> upstream | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   make download | ||||||
|  |   make upload FILES=patch-$NEW.bz2 | ||||||
|  | 
 | ||||||
|  |   cvs add patch-$NEW.bz2.sign | ||||||
|  |   if [ "$OLDGIT" -ne 0 ]; then | ||||||
|  |     rm -f patch-$OLD.bz2 | ||||||
|  |     rm -f patch-$OLD.bz2.sign | ||||||
|  |     cvs remove patch-$OLD.bz2.sign | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$OLDRC" != "$NEWRC" -o "$OLDGIT" != "$NEWGIT" ]; then | ||||||
|  |   perl -p -i -e 's|^ApplyPatch\ git-linus.diff|#ApplyPatch\ git-linus.diff|' kernel.spec | ||||||
|  |   > git-linus.diff | ||||||
|  |   bumpspecfile.py kernel.spec "- $NEW" | ||||||
|  |   make clog | ||||||
|  |   exit 1 | ||||||
|  | else | ||||||
|  |   exit 0 | ||||||
|  | fi | ||||||
							
								
								
									
										26
									
								
								scripts/reconfig.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								scripts/reconfig.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | base_sublevel=$(grep "^%define base_sublevel" kernel.spec | head -n1 | awk '{ print $3 }') | ||||||
|  | 
 | ||||||
|  | #if [ `grep -c "^%define released_kernel 1" kernel.spec` -ge 1 ]; then | ||||||
|  |   V=$base_sublevel | ||||||
|  | #else | ||||||
|  | #  let V=$base_sublevel+1 | ||||||
|  | #fi | ||||||
|  | 
 | ||||||
|  | cd kernel-2.6.$base_sublevel/linux-2.6.$base_sublevel.noarch/ | ||||||
|  | rm -f kernel-*.config | ||||||
|  | cp ../../kernel-2.6.$V-*.config . | ||||||
|  | 
 | ||||||
|  | for i in kernel-*.config | ||||||
|  | do | ||||||
|  | 	echo $i | ||||||
|  | 	rm -f .config | ||||||
|  | 	cp $i .config | ||||||
|  | 	Arch=`head -1 .config | cut -b 3-` | ||||||
|  | 	make ARCH=$Arch nonint_oldconfig > /dev/null || exit 1 | ||||||
|  | 	echo "# $Arch" > configs/$i | ||||||
|  | 	cat .config >> configs/$i | ||||||
|  | 	echo | ||||||
|  | done | ||||||
|  | 
 | ||||||
							
								
								
									
										64
									
								
								scripts/rediffall.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								scripts/rediffall.pl
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | |||||||
|  | #!/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; | ||||||
							
								
								
									
										222
									
								
								scripts/sort-config
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										222
									
								
								scripts/sort-config
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,222 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | SRC=($(ls config-* 2>/dev/null)) | ||||||
|  | TGT=($(ls kernel-*/linux-*.noarch/configs/kernel-2.6.*-*.config \ | ||||||
|  |           kernel-*/linux-*.noarch/configs/kernel-2.6.*-*-debug.config 2>/dev/null)) | ||||||
|  | TGT1=(${TGT[*]#kernel-*/linux-*.noarch/configs/kernel-2.6.*-}) | ||||||
|  | 
 | ||||||
|  | ALL_OPTS="cdfimn" | ||||||
|  | if [ $# -lt 2 ] ; then | ||||||
|  |    echo -e "Usage:\n   $(basename $0) [-$ALL_OPTS] input target\n" | ||||||
|  |    echo -e " Sort input config file into the same order as the target\n" | ||||||
|  |    echo -e "      -c: insert comments about non-matching/impossible items" | ||||||
|  |    echo -e "      -d: show raw unsorted output with extra debug text" | ||||||
|  |    echo -e "      -f: force output to match what is in the target config," | ||||||
|  |    echo -e "          and/or remove impossible config items" | ||||||
|  |    echo -e "      -i: find impossible config items" | ||||||
|  |    echo -e "      -m: find changed config items" | ||||||
|  |    echo -e "      -n: do not sort output\n" | ||||||
|  |    echo -e "   input: source config file" ' [' "${SRC[*]#config-}" ']\n' | ||||||
|  |    echo -e "  target: output arch name" ' [' "${TGT1[*]%.config}" ']\n' | ||||||
|  |    exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | while getopts "$ALL_OPTS" OPTION ; do | ||||||
|  | case $OPTION in | ||||||
|  | c) | ||||||
|  |    ADDCOMMENT=1 ;; | ||||||
|  | d) | ||||||
|  |    DEBUG=1 ;; | ||||||
|  | f) | ||||||
|  |    FORCE=1 ;; | ||||||
|  | i) | ||||||
|  |    FIND_IMPOSS=1 ;; | ||||||
|  | m) | ||||||
|  |    FIND_CHANGED=1 ;; | ||||||
|  | n) | ||||||
|  |    NOSORT=1 ;; | ||||||
|  | \?) | ||||||
|  |    exit 2 ;; | ||||||
|  | esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | if [ "$FORCE" -a "$ADDCOMMENT" ] ; then | ||||||
|  | 	echo "-f and -c options cannot be used together" | ||||||
|  | 	exit 2 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | shift $((OPTIND-1)) | ||||||
|  | 
 | ||||||
|  | TEMPFILES="xx00 xx01 xx98 xx99" | ||||||
|  | TEMPLEFT= | ||||||
|  | for FILE in $TEMPFILES ; do | ||||||
|  |    [ -f "$FILE" ] && TEMPLEFT="Y" | ||||||
|  | done | ||||||
|  | if [ "$TEMPLEFT" ] ; then | ||||||
|  |    echo "WARNING! Output files named xx?? already exist." >&2 | ||||||
|  |    read -p "Press <Enter> to erase files, or Ctrl-C to exit..." | ||||||
|  |    echo >&2 | ||||||
|  | fi | ||||||
|  | rm -f $TEMPFILES | ||||||
|  | 
 | ||||||
|  | SRCFILE=config-$1 | ||||||
|  | [ ! -f $SRCFILE ] && echo "Input file" $SRCFILE "missing" && exit 2 | ||||||
|  | 
 | ||||||
|  | TGTFILE=kernel-*/linux-*.noarch/configs/kernel-2.6.*-$2.config | ||||||
|  | [ ! -f $TGTFILE ] && echo "No target file matching" $TGTFILE "exists" && exit 2 | ||||||
|  | 
 | ||||||
|  | [ "$FIND_IMPOSS" ] && \ | ||||||
|  |    find kernel-*/*.noarch -name Kconfig\* -type f \ | ||||||
|  |    | xargs egrep -s -h '^[[:space:]]*(menu)?config[[:space:]]+' \ | ||||||
|  |    | sed -r 's/^[[:space:]]*(menu)?config[[:space:]]+/CONFIG_/' \ | ||||||
|  |    | sort | uniq >xx98 | ||||||
|  | 
 | ||||||
|  | extract_optname() { | ||||||
|  |          # extract the option name from $TEXT, setting $OPTNAME | ||||||
|  |          OPTNAME= | ||||||
|  |          if [ "${TEXT:0:7}" = "CONFIG_" ] ; then | ||||||
|  |             OPTNAME=${TEXT%%=*} | ||||||
|  |          elif [ "${TEXT:0:9}" = "# CONFIG_" ] ; then | ||||||
|  |             OPTNAME=${TEXT%" is not set"} | ||||||
|  |             OPTNAME=${OPTNAME#\# } | ||||||
|  |          fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | print_saved_comments() { | ||||||
|  |       if [ $IX -gt 0 ] ; then | ||||||
|  |          [ "$DEBUG" ] && echo "            ->" $IX "comments were saved" | ||||||
|  |          (( IX-- )) | ||||||
|  |          for IX in $(seq 0 $IX) ; do | ||||||
|  |             echo "$LINE":"${SAVECOMMENT[$IX]}" | ||||||
|  |          done | ||||||
|  |          unset SAVECOMMENT | ||||||
|  |          IX=0 | ||||||
|  |       fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | assign_line_number() { | ||||||
|  |       # use input line numbers if not sorting | ||||||
|  |       [ "$NOSORT" ] && LINE=$IN | ||||||
|  |       # make sure it has a line number | ||||||
|  |       [ -z "$LINE" ] && LINE=999999 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | IX=0 | ||||||
|  | IN=0 | ||||||
|  | declare -a SAVECOMMENT | ||||||
|  | 
 | ||||||
|  | cat ${SRCFILE} | { | ||||||
|  | while read TEXT ; do | ||||||
|  | 
 | ||||||
|  |    LINE= | ||||||
|  |    COMMENT= | ||||||
|  | 
 | ||||||
|  |    # replace empty lines | ||||||
|  |    [ -z "$TEXT" ] && TEXT='//' | ||||||
|  | 
 | ||||||
|  |    if [ "${TEXT:0:7}" = "CONFIG_" -o "${TEXT:0:9}" = "# CONFIG_" ] ; then | ||||||
|  | 
 | ||||||
|  |       LINE=$(grep -n "^$TEXT" $TGTFILE | head -1 | cut -f 1 -d ':') | ||||||
|  |       if [ -z "$LINE" ] ; then | ||||||
|  |          [ "$DEBUG" ] && echo "nofind      ->" "$TEXT" | ||||||
|  | 
 | ||||||
|  |          extract_optname | ||||||
|  |          if [ "$OPTNAME" ] ; then | ||||||
|  | 
 | ||||||
|  |             if [ "$FIND_CHANGED" ] ; then | ||||||
|  |                for FINDTEXT in "^${OPTNAME}=" "^# ${OPTNAME} is not set" ; do | ||||||
|  |                   if [ -z "$LINE" ] ; then | ||||||
|  |                      [ "$DEBUG" ] && echo "looking for ->" "$FINDTEXT" | ||||||
|  |                      LINE=$(grep -n "$FINDTEXT" $TGTFILE | head -1 | cut -f 1 -d ':') | ||||||
|  |                      if [ "$LINE" ] ; then | ||||||
|  |                         CHANGED=$(grep "$FINDTEXT" $TGTFILE | head -1) | ||||||
|  |                         if [ "$FORCE" ] ; then | ||||||
|  |                            TEXT=$CHANGED | ||||||
|  |                            [ "$DEBUG" ] && echo 'forced      ->' "$TEXT" | ||||||
|  |                         else | ||||||
|  |                            if [ "$ADDCOMMENT" ] ; then | ||||||
|  |                               if [ ${CHANGED:0:1} = '#' ] ; then | ||||||
|  |                                  NEWOPT="not set" | ||||||
|  |                               else | ||||||
|  |                                  NEWOPT=${CHANGED#$OPTNAME} | ||||||
|  |                               fi | ||||||
|  |                               COMMENT="# -- Next option changed to \"${NEWOPT}\" at target line $LINE --" | ||||||
|  |                            fi | ||||||
|  |                         fi | ||||||
|  |                      fi | ||||||
|  |                   fi | ||||||
|  |                done | ||||||
|  |             fi | ||||||
|  | 
 | ||||||
|  |             if [ "$FIND_IMPOSS" -a -z "$LINE" -a -z "$COMMENT" ] ; then | ||||||
|  |                POSSIBLE=$(grep -n "^$OPTNAME" xx98) | ||||||
|  |                if [ -z "$POSSIBLE" ] ; then | ||||||
|  |                   if [ "$ADDCOMMENT" ] ; then | ||||||
|  |                      COMMENT="# -- Next option is impossible --" | ||||||
|  |                   elif [ "$FORCE" ] ; then | ||||||
|  |                      [ "$DEBUG" ] && echo 'impossible  ->' "$TEXT" | ||||||
|  |                      TEXT="" | ||||||
|  |                   fi | ||||||
|  |                fi | ||||||
|  |             fi | ||||||
|  | 
 | ||||||
|  |          fi | ||||||
|  | 
 | ||||||
|  |       fi | ||||||
|  | 
 | ||||||
|  |    else | ||||||
|  |       # not a config variable | ||||||
|  |       COMMENT="$TEXT" | ||||||
|  |       TEXT= | ||||||
|  |    fi | ||||||
|  | 
 | ||||||
|  |    [ "$DEBUG" -a "$COMMENT" ] && echo "comment     ->" "$LINE" "$COMMENT" | ||||||
|  |    [ "$DEBUG" -a "$TEXT" ]    && echo "text        ->" "$LINE" "$TEXT" | ||||||
|  | 
 | ||||||
|  |    if [ "$TEXT" ] ; then | ||||||
|  | 
 | ||||||
|  |       assign_line_number | ||||||
|  | 
 | ||||||
|  |       # print the saved comments first | ||||||
|  |       print_saved_comments | ||||||
|  |       # now print the latest comment and text | ||||||
|  |       [ "$COMMENT" ] && echo "$LINE":"$COMMENT" | ||||||
|  |       echo "$LINE":"$TEXT" | ||||||
|  | 
 | ||||||
|  |    elif [ "$COMMENT" ] ; then | ||||||
|  | 
 | ||||||
|  |       # no output yet, save the comment | ||||||
|  |       SAVECOMMENT[$IX]="$COMMENT" | ||||||
|  |       let IX++ | ||||||
|  |       [ "$DEBUG" ] && echo 'savecomment (#'${IX}')' | ||||||
|  | 
 | ||||||
|  |    fi | ||||||
|  | 
 | ||||||
|  |    let IN++ | ||||||
|  | 
 | ||||||
|  | done | ||||||
|  | # flush the buffers | ||||||
|  | assign_line_number | ||||||
|  | print_saved_comments | ||||||
|  | [ "$DEBUG" ] && echo "$IN lines read from input" | ||||||
|  | } >xx99 | ||||||
|  | 
 | ||||||
|  | if [ "$DEBUG" ] ; then | ||||||
|  |    # just show the raw output with debug info, then exit | ||||||
|  |    cat xx99 | ||||||
|  | else | ||||||
|  | 
 | ||||||
|  |    # split output into two files, for matched and unmatched items | ||||||
|  |    cat xx99 | sort -s -t ":" -k 1g | csplit -k -s - /^999999/ 2>/dev/null | ||||||
|  | 
 | ||||||
|  |    cat xx00 | cut -f 2- -d ':' | sed 's/^\/\/$//' | ||||||
|  |    if [ -s xx01 ] ; then | ||||||
|  |       echo | ||||||
|  |       echo '# ------------  UNMATCHED OPTIONS  ------------' | ||||||
|  |       echo | ||||||
|  |       cat xx01 | cut -f 2- -d ':' | sed 's/^\/\/$//' | ||||||
|  |    fi | ||||||
|  | 
 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | rm -f $TEMPFILES | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user