diff -NaurB old/KernelPageParser.py new/KernelPageParser.py
--- old/KernelPageParser.py 2009-06-20 12:42:18.373073000 -0400
+++ new/KernelPageParser.py 2009-10-18 11:53:09.028558000 -0400
@@ -30,6 +30,7 @@
## Imports
import re
+import urllib2
import HTMLParser
## Define KernelPageParser Class
@@ -83,25 +84,69 @@
def get_patch_pkg(self, filter="patch"):
# Stable, normal performance patch
if filter == "patch":
- for item in self.LINK_DATA:
- ## Find the one that ends in x.bz2 where x is the patch number
- if re.match(r'^/pub/linux/kernel/v2.6/.*?\d[.]bz2$', item):
- return item
+ print "Finding patch"
+ # Grab the kernel.org download page for kernels and patches
+ html = urllib2.urlopen("http://kernel.org/pub/linux/kernel/v2.6/")
+ html = html.read()
+
+ # Fetch kernels list
+ kernels = re.findall('', html)
+
+ # Fetch patches list
+ patches = re.findall('', html)
+
+ # Reverse the kernels list
+ kernels.reverse()
+
+ # Reverse the patches list
+ patches.reverse()
+
+ # Sift through patches to find 'release' patches
+ rel_patches = []
+ for p in patches:
+ if re.match(r'^\d+[\.]\d+[\.]\d+[\.]\d+$', p):
+ rel_patches.append(p)
+
+ base_kernels = []
+ for k in kernels:
+ if re.match(r'^\d+[\.]\d+[\.]\d+$', k):
+ base_kernels.append(k)
+
+ if base_kernels[0] == rel_patches[0]:
+ return base_kernels[0]
+ else:
+ return rel_patches[0]
# Development patch
if filter == "prepatch":
- for item in self.LINK_DATA:
- ## find the one that ends in bz2, this the link we want
- if re.match(r'^/pub/linux/kernel/v2.6/testing/.*?bz2$', item):
- return item
+ print "Finding prepatch"
+ # Grab the kernel.org download page for kernels and patches
+ html = urllib2.urlopen("http://kernel.org/pub/linux/kernel/v2.6/testing/")
+ html = html.read()
+
+ # Fetch kernels list
+ kernels = re.findall('', html)
+
+ # Reverse the kernels list
+ kernels.reverse()
+
+ # Sift through patches to find 'release' patches
+ prepatches = []
+ for p in kernels:
+ if re.match(r'\d[\.]\d[\.]\d*[^?\:]*$', p):
+ prepatches.append(p)
+ if len(prepatches) > 0:
+ return prepatches[0]
+ else:
+ return None
# Adrew Mortons development patch
- if filter == "mmpatch":
- ## Find the url for the mm patch
- for item in self.LINK_DATA:
- ## Match on the link that ends in bz2
- if re.match(r'^/pub/linux/kernel/people/akpm/patches/.*?bz2$', item):
- return item
+ #if filter == "mmpatch":
+ # ## Find the url for the mm patch
+ # for item in self.LINK_DATA:
+ # ## Match on the link that ends in bz2
+ # if re.match(r'^/pub/linux/kernel/people/akpm/patches/.*?bz2$', item):
+ # return item
## Get patch version information
## - returns string
@@ -111,13 +156,15 @@
if re.match('^\d[\.]\d[\.]\d*[^?\:]*$', item):
return item
+ ## No longer works
## Get patch release date
## - returns string
def get_patch_release(self):
- for item in self.RAW_DATA:
- ## Match (UTC)
- if re.match('^.*?(UTC)$', item):
- return item
+ # for item in self.RAW_DATA:
+ # ## Match (UTC)
+ # if re.match('^.*?(UTC)$', item):
+ # return item
+ return
## End of File