#!/usr/bin/python # Fetch the git repository for kernels up to 1.0. # Apply all patches up to 2.4 and commit to the repository. # From here old-2.6-bkcvs can be applied. # Some fixes are necessary these have to be downloaded seperately. import os, shutil, urllib # The local git directory local='kernel/' # Where to fetch patches remote='http://www.kernel.org/pub/linux/kernel/' # This can be a local directory, too #remote= 'file:///your_local_patch_dir/www.kernel.org/pub/linux/kernel/' def apply( patch ): os.system( 'bzcat ' + patch + ' | patch -s -p1 -d ' + local ) os.remove( patch ) def retrieve_apply( dir, patch ): print 'apply ' + patch urllib.urlretrieve( dir + patch, patch ) apply( patch ) def commit( msg ): os.system( 'cd ' + local + ' && git add * && git commit -q -a -m' + msg ) os.system( 'cd ' + local + ' && git tag ' + msg ) def apply_patches(dir,begin,end,patchbase,commitbase): for i in range(begin,end): patch=patchbase + str(i) + '.bz2' retrieve_apply( dir, patch ) commit( commitbase + str(i) ) def v10(): print 'v10' dir=remote + 'v1.0/' apply_patches(dir,1,7,'patch','v1.0.') def v11(): print 'v11' dir=remote + 'v1.1/' patch='1.0.6-1.1.0.diff.bz2' retrieve_apply( dir, patch ) commit( 'v1.1.0' ) apply_patches(dir,1,46,'patch','v1.1.') # patch 45 forgets to remove files os.system( 'cd ' + local + ' && cat ../fix.1 | patch -s -p1' ) commit( 'v1.1.45fix1' ) apply_patches(dir,46,54,'patch','v1.1.') # patch54 is screwed #os.remove( local + 'fs/binfmt_elf.c' ) apply_patches(dir,54,75,'patch','v1.1.') # patch75 is screwed os.remove( local + 'fs/msdos/mmap.c' ) commit( 'v1.1.74a: fixup' ) apply_patches(dir,75,77,'patch','v1.1.') # patch77 is whitespaced damaged os.system( 'cd ' + local + ' && cat ../fix.2 | patch -s -p1' ) commit( 'v1.1.76a: fixup' ) apply_patches(dir,77,96,'patch','v1.1.') # 1.1 patches add '-N' to diff os.system( 'cd ' + local + ' && cat ../fix.3 | patch -s -p1' ) commit( 'v1.1.95fix2' ) def v12(): print 'v12' dir=remote + 'v1.2/' patch='v1.1.95-1.2.0.patch.bz2' retrieve_apply( dir, patch ) commit( 'v1.2.0' ) apply_patches(dir,1,11,'patch-1.2.','v1.2.') def v13(): print 'v13' dir=remote + 'v1.3/' # found no patch for upgrade os.system( 'cat 1.2.10-1.3.0 | patch -s -p1 -d ' + local ) commit( 'v1.3.0' ) apply_patches(dir,1,101,'patch-1.3.','v1.3.') # Fix 1.3 patches os.system( 'cd ' + local + ' && cat ../fix.4 | patch -s -p1' ) commit( 'v1.3.100fix3' ) apply_patches(dir,1,15,'patch-pre2.0.','pre2.0.') # Fix pre2 patches os.system( 'cd ' + local + ' && cat ../fix.5 | patch -s -p1' ) commit( 'v2.0fix4' ) def v20(): print 'v20' dir=remote + 'v2.0/' apply_patches(dir,1,41,'patch-2.0.','v2.0.') def v21(): print 'v21' dir=remote + 'v2.1/' os.system( 'cd ' + local + ' && git checkout v2.0.21' ) retrieve_apply( dir, 'patch-2.0.21-2.1.0.bz2') commit( 'v2.1.0' ) apply_patches(dir,1,133,'patch-2.1.','v2.1.') apply_patches(dir,1,10,'patch-2.2.0-pre','v2.2.0-pre') retrieve_apply( dir, 'patch-2.2.0-final.bz2') commit( 'v2.2.0-final' ) def v22(): print 'v22' dir=remote + 'v2.2/' apply_patches(dir,1,27,'patch-2.2.','v2.2.') def v23(): print 'v23' dir=remote + 'v2.3/' os.system( 'cd ' + local + ' && git checkout v2.2.8' ) retrieve_apply( dir, 'patch-2.2.8-to-2.3.0.bz2') commit( 'v2.3.0' ) apply_patches(dir,1,52,'patch-2.3.','v2.3.') apply_patches(dir,1,10,'patch-2.3.99-pre','v2.3.99-pre') def v24(): print 'v24' dir=remote + 'v2.4/old-test-kernels/' apply_patches(dir,1,13,'patch-2.4.0-test','v2.4.0-test') retrieve_apply( dir, 'patch-2.4.0-prerelease.bz2' ) commit( 'v2.4.0-prerelease' ) retrieve_apply( dir, 'prerelease-to-final.bz2' ) commit( 'v2.4.0' ) if os.path.exists( local ): shutil.rmtree( local ) os.system( 'git clone git://git.kernel.org/pub/scm/linux/kernel/git/nico/archive.git ' + local ) v10() v11() v12() v13() v20() v21() v22() v23() v24()