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