def getInitrd(self,arch,shortname,chroot,kernel,suffix="",notsuffix=""): """Get initrd for kernel""" reInitrdVer = re.compile("(initrd|initramfs)-(.+?)(-install)?$",re.S) def initrd_version_by_name(filename): resInitrdVer = reInitrdVer.search(filename) if resInitrdVer: return resInitrdVer.groups()[1] return "" ftype = typeFile(magic=0x4).getMType kernelfile = path.join(chroot,'boot',kernel) typeKernelFile = ftype(kernelfile) if typeKernelFile == None: return "" resKernelVer = self.reFindVer.search(ftype(kernelfile)) if resKernelVer: kernelVersion = "%s-%s-%s"% \ (resKernelVer.group().replace('-calculate',''), arch, shortname) origKernelVer = resKernelVer.group() bootdir = path.join(chroot,'boot') initramfsFiles = self.getFilesByType(bootdir,"ASCII cpio archive") initramfsWithVer = \ filter(lambda x: (kernelVersion in x[1] or origKernelVer in x[1]) and \ x[0].endswith(suffix) and \ (not notsuffix or not x[0].endswith(notsuffix)), map(lambda x:(x[0],initrd_version_by_name(x[0])), initramfsFiles)) if initramfsWithVer: return path.split(min(initramfsWithVer, key=itemgetter(0))[0])[-1] return ""
def getFilesByType(self,pathname,descr): """Get files from "pathname" has "descr" in descriptions""" filelist = map(lambda x:path.join(pathname,x),os.listdir(pathname)) ftype = typeFile(magic=0x4).getMType filesWithType = map(lambda x:(x,ftype(x)), filelist) return filter(lambda x:descr in x[1],filesWithType)