class DebTagFileLoader(DebTagLoader): def __init__(self, filename, baseurl=None): DebTagLoader.__init__(self, baseurl) self._filename = filename self._tagfile = TagFile(self._filename) def getLoadSteps(self): return os.path.getsize(self._filename)/800 def getSections(self, prog): tf = self._tagfile tf.setOffset(0) lastoffset = offset = mod = 0 while tf.advanceSection(): yield tf, offset offset = tf.getOffset() div, mod = divmod(offset-lastoffset+mod, 800) prog.add(div) prog.show() lastoffset = offset def getDict(self, pkg): self._tagfile.setOffset(pkg.loaders[self]) self._tagfile.advanceSection() return self._tagfile.copy() def getFileName(self, info): return info._dict.get("filename") def getSize(self, info): size = info._dict.get("size") if size: return long(size) return None
class DebTagFileLoader(DebTagLoader): def __init__(self, filename, baseurl=None): DebTagLoader.__init__(self, baseurl) self._filename = filename self._tagfile = TagFile(self._filename) def getLoadSteps(self): return os.path.getsize(self._filename) / 800 def getSections(self, prog): tf = self._tagfile tf.setOffset(0) lastoffset = offset = mod = 0 while tf.advanceSection(): yield tf, offset offset = tf.getOffset() div, mod = divmod(offset - lastoffset + mod, 800) prog.add(div) prog.show() lastoffset = offset def getDict(self, pkg): self._tagfile.setOffset(pkg.loaders[self]) self._tagfile.advanceSection() return self._tagfile.copy() def getFileName(self, info): return info._dict.get("filename") def getSize(self, info): size = info._dict.get("size") if size: return long(size) return None
class DebTagFileLoader(DebTagLoader): def __init__(self, filename, baseurl=None): DebTagLoader.__init__(self, baseurl) self._filename = filename self._tagfile = TagFile(self._filename) def getLoadSteps(self): return os.path.getsize(self._filename)/800 def getSections(self, prog): tf = self._tagfile tf.setOffset(0) lastoffset = offset = mod = 0 while tf.advanceSection(): yield tf, offset offset = tf.getOffset() div, mod = divmod(offset-lastoffset+mod, 800) prog.add(div) prog.show() lastoffset = offset def getDict(self, pkg): self._tagfile.setOffset(pkg.loaders[self]) self._tagfile.advanceSection() return self._tagfile.copy() def getFileName(self, info): return info._dict.get("filename") def getSize(self, info): size = info._dict.get("size") if size: return long(size) return None def getPaths(self, info): listname = os.path.join(os.path.dirname(self._filename), "info", info._package.name+".list") paths = {} if os.path.isfile(listname): md5name = listname[:-4]+"md5sums" dirs = {} if os.path.isfile(md5name): for line in open(md5name): toks = line.split() if len(toks) == 2: dirs["/"+toks[1]] = True for line in open(listname): path = line.strip() if path: paths[path] = path in dirs and "d" or "f" if "/." in paths: del paths["/."] return paths
class DebTagFileLoader(DebTagLoader): # It's important for the default to be here so that old pickled # instances which don't have these attributes still work fine. _filelistsname = None _changelogname = None def __init__(self, filename, baseurl=None, filelistsname="", changelogname=""): DebTagLoader.__init__(self, baseurl) self._filename = filename self._filelistsname = filelistsname self._changelogname = changelogname self._tagfile = TagFile(self._filename) def getLoadSteps(self): return os.path.getsize(self._filename) / 800 def getSections(self, prog): tf = self._tagfile tf.setOffset(0) lastoffset = offset = mod = 0 while tf.advanceSection(): yield tf, offset offset = tf.getOffset() div, mod = divmod(offset - lastoffset + mod, 800) prog.add(div) prog.show() lastoffset = offset def getDict(self, pkg): self._tagfile.setOffset(pkg.loaders[self]) self._tagfile.advanceSection() return self._tagfile.copy() def getFileName(self, info): return info._dict.get("filename") def getSize(self, info): size = info._dict.get("size") if size: return long(size) return None def getChanges(self, info): if not self._changelogname: return [] changes = [] for basename in ["changelog.Debian.gz", "changelog.gz"]: filename = os.path.join(self._changelogname, info._package.name, basename) if os.path.isfile(filename): if filename.endswith(".gz"): import gzip file = gzip.open(filename) else: file = open(filename) line = file.readline() while True: if not line: break changes.append(line.strip()) line = file.readline() change = "" while line.startswith(" ") or (line == "\n"): change += line line = file.readline() changes.append(change) break return changes def getPaths(self, info): if not self._filelistsname: listname = os.path.join(os.path.dirname(self._filename), "info", info._package.name + ".list") else: listname = os.path.join(self._filelistsname, info._package.name + ".list") paths = {} if os.path.isfile(listname): md5name = listname[:-4] + "md5sums" dirs = {} if os.path.isfile(md5name): for line in open(md5name): toks = line.split() if len(toks) == 2: dirs["/" + toks[1]] = True for line in open(listname): path = line.strip() if path: paths[path] = path in dirs and "d" or "f" if "/." in paths: del paths["/."] return paths
class DebTagFileLoader(DebTagLoader): # It's important for the default to be here so that old pickled # instances which don't have these attributes still work fine. _filelistsname = None _changelogname = None def __init__(self, filename, baseurl=None, filelistsname="", changelogname=""): DebTagLoader.__init__(self, baseurl) self._filename = filename self._filelistsname = filelistsname self._changelogname = changelogname self._tagfile = TagFile(self._filename) def getLoadSteps(self): return os.path.getsize(self._filename)/800 def getSections(self, prog): tf = self._tagfile tf.setOffset(0) lastoffset = offset = mod = 0 while tf.advanceSection(): yield tf, offset offset = tf.getOffset() div, mod = divmod(offset-lastoffset+mod, 800) prog.add(div) prog.show() lastoffset = offset def getDict(self, pkg): self._tagfile.setOffset(pkg.loaders[self]) self._tagfile.advanceSection() return self._tagfile.copy() def getFileName(self, info): return info._dict.get("filename") def getSize(self, info): size = info._dict.get("size") if size: return long(size) return None def getChanges(self, info): if not self._changelogname: return [] changes = [] for basename in ["changelog.Debian.gz", "changelog.gz"]: filename = os.path.join(self._changelogname, info._package.name, basename) if os.path.isfile(filename): if filename.endswith(".gz"): import gzip file = gzip.open(filename) else: file = open(filename) line = file.readline() while True: if not line: break changes.append(line.strip()) line = file.readline() change = "" while line.startswith(" ") or (line == "\n"): change += line line = file.readline() changes.append(change) break return changes def getPaths(self, info): if not self._filelistsname: listname = os.path.join(os.path.dirname(self._filename), "info", info._package.name+".list") else: listname = os.path.join(self._filelistsname, info._package.name+".list") paths = {} if os.path.isfile(listname): md5name = listname[:-4]+"md5sums" dirs = {} if os.path.isfile(md5name): for line in open(md5name): toks = line.split() if len(toks) == 2: dirs["/"+toks[1]] = True for line in open(listname): path = line.strip() if path: paths[path] = path in dirs and "d" or "f" if "/." in paths: del paths["/."] return paths