def __init__(self, fn=None): self.package = None self.version = 'none' self.parsed_version = None self.architecture = None self.maintainer = None self.source = None self.description = None self.depends = None self.provides = None self.replaces = None self.conflicts = None self.recommends = None self.suggests = None self.section = None self.filename_header = None self.file_list = [] # md5 is lazy attribute, computed on demand #self.md5 = None self.size = None self.installed_size = None self.filename = None self.isdeb = 0 self.homepage = None self.oe = None self.priority = None self.fn = fn if fn: # see if it is deb format f = open(fn, "rb") magic = f.read(4) f.seek(0, 0) if (magic == "!<ar"): self.isdeb = 1 stat = os.stat(fn) self.size = stat[ST_SIZE] self.filename = os.path.basename(fn) ## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,)) if self.isdeb: ar = arfile.ArFile(f) tarStream = ar.open("control.tar.gz") tarf = tarfile.open("control.tar.gz", "r", tarStream) try: control = tarf.extractfile("control") except KeyError: control = tarf.extractfile("./control") else: control = os.popen( "tar -xzO -f " + fn + " './control.tar.gz' | tar xfzO - './control'", "r") self.read_control(control) control.close() self.scratch_dir = None self.file_dir = None self.meta_dir = None
def __init__(self, fn=None, relpath=None): self.package = None self.version = 'none' self.parsed_version = None self.architecture = None self.maintainer = None self.source = None self.description = None self.depends = None self.provides = None self.replaces = None self.conflicts = None self.recommends = None self.suggests = None self.section = None self.filename_header = None self.file_list = [] # md5 and size is lazy attribute, computed on demand #self.md5 = None #self.size = None self.installed_size = None self.filename = None self.file_ext_opk = "ipk" self.homepage = None self.oe = None self.priority = None self.tags = None self.fn = fn self.license = None if fn: # see if it is deb format f = open(fn, "rb") if relpath: self.filename = os.path.relpath(fn, relpath) else: self.filename = os.path.basename(fn) ## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,)) ar = arfile.ArFile(f, fn) tarStream = ar.open("control.tar.gz") tarf = tarfile.open("control.tar.gz", "r", tarStream) try: control = tarf.extractfile("control") except KeyError: control = tarf.extractfile("./control") try: self.read_control(control) except TypeError as e: sys.stderr.write("Cannot read control file '%s' - %s\n" % (fn, e)) control.close() self.scratch_dir = None self.file_dir = None self.meta_dir = None
def __init__(self, fn=None): self.package = None self.version = 'none' self.parsed_version = None self.architecture = None self.maintainer = None self.source = None self.description = None self.depends = None self.provides = None self.replaces = None self.conflicts = None self.recommends = None self.suggests = None self.section = None self.filename_header = None self.file_list = [] # md5 and size is lazy attribute, computed on demand #self.md5 = None #self.size = None self.installed_size = None self.filename = None self.isdeb = 0 self.file_ext_opk = "ipk" self.homepage = None self.oe = None self.priority = None self.tags = None self.fn = fn if fn: # see if it is deb format f = open(fn, "rb") magic = f.read(4) f.seek(0, 0) if (magic == "!<ar"): self.isdeb = 1 self.filename = os.path.basename(fn) assert self.isdeb == 1, "Old ipk format (non-deb) is unsupported" ## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,)) ar = arfile.ArFile(f) tarStream = ar.open("control.tar.gz") tarf = tarfile.open("control.tar.gz", "r", tarStream) try: control = tarf.extractfile("control") except KeyError: control = tarf.extractfile("./control") self.read_control(control) control.close() self.scratch_dir = None self.file_dir = None self.meta_dir = None
def get_file_list(self): if not self.fn: return [] f = open(self.fn, "rb") ar = arfile.ArFile(f) tarStream = ar.open("data.tar.gz") tarf = tarfile.open("data.tar.gz", "r", tarStream) self.file_list = tarf.getnames() self.file_list = map(lambda a: ["./", ""][a.startswith("./")] + a, self.file_list) f.close() return self.file_list
def get_file_list(self): if not self.fn: sys.stderr.write("Package '%s' has empty fn, returning empty filelist\n" % (self.package)) return [] f = open(self.fn, "rb") ar = arfile.ArFile(f, self.fn) tarStream = ar.open("data.tar.gz") tarf = tarfile.open("data.tar.gz", "r", tarStream) self.file_list = tarf.getnames() self.file_list = map(lambda a: ["./", ""][a.startswith("./")] + a, self.file_list) f.close() return self.file_list
def __init__(self, debfile): self.debfile = debfile self.fds = {} f = open(debfile, 'rb') a = arfile.ArFile(f) f2 = a.open('data.tar.xz') xz = lzma.LZMAFile(f2) tar = tarfile.open(fileobj=xz) self.store = tar print(tar.getmembers())
def get_file_list(self): if not self.fn: sys.stderr.write("Package '%s' has empty fn, returning empty filelist\n" % (self.package)) return [] f = open(self.fn, "rb") ar = arfile.ArFile(f, self.fn) try: tarStream = ar.open("data.tar.gz") tarf = tarfile.open("data.tar.gz", "r", tarStream) except IOError: tarStream = ar.open("data.tar.xz") tarf = tarfile.open("data.tar.xz", "r:xz", tarStream) self.file_list = tarf.getnames() self.file_list = [["./", ""][a.startswith("./")] + a for a in self.file_list] f.close() return self.file_list
def get_file_list(self): if not self.fn: return [] if self.isdeb: f = open(self.fn, "rb") ar = arfile.ArFile(f) tarStream = ar.open("data.tar.gz") tarf = tarfile.open("data.tar.gz", "r", tarStream) self.file_list = tarf.getnames() f.close() else: f = os.popen("tar xfzO " + self.fn + " '*data.tar.gz' | tar tfz -","r") while 1: line = f.readline() if not line: break self.file_list.append(string.rstrip(line)) f.close() # Make sure that filelist has consistent format regardless of tar version self.file_list = map(lambda a: ["./", ""][a.startswith("./")] + a, self.file_list) return self.file_list
def setUp(self): os.system("ar r test.ar test_debfile.py test_changelog test_deb822.py >/dev/null 2>&1") assert os.path.exists("test.ar") self.testmembers = [ x.strip() for x in os.popen("ar t test.ar").readlines() ] self.a = arfile.ArFile("test.ar")
def setUp(self): TestArFile.setUp(self) self.a = arfile.ArFile(fileobj=open("test.ar", "r"))