Пример #1
0
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
Пример #2
0
 def getDict(self, pkg):
     filename = self._filenames[pkg.loaders[self]]
     filepath = os.path.join(self._dir, filename)
     control = getControl(filepath)
     tf = TagFile(StringIO(control))
     tf.advanceSection()
     return tf
Пример #3
0
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
Пример #4
0
 def getDict(self, pkg):
     filename = self._filenames[pkg.loaders[self]]
     filepath = os.path.join(self._dir, filename)
     control = getControl(filepath)
     tf = TagFile(StringIO(control))
     tf.advanceSection()
     return tf
Пример #5
0
 def getSections(self, prog):
     for i, filename in enumerate(self._filenames):
         filepath = os.path.join(self._dir, filename)
         control = getControl(filepath)
         tf = TagFile(StringIO(control))
         tf.advanceSection()
         yield (tf, i)
         prog.add(1)
         prog.show()
Пример #6
0
 def getSections(self, prog):
     for i, filename in enumerate(self._filenames):
         filepath = os.path.join(self._dir, filename)
         control = getControl(filepath)
         tf = TagFile(StringIO(control))
         tf.advanceSection()
         yield (tf, i)
         prog.add(1)
         prog.show()
Пример #7
0
 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)
Пример #8
0
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
Пример #9
0
 def __init__(self, filename, baseurl=None):
     DebTagLoader.__init__(self, baseurl)
     self._filename = filename
     self._tagfile = TagFile(self._filename)
Пример #10
0
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
Пример #11
0
 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)
Пример #12
0
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
Пример #13
0
 def __init__(self, filename, baseurl=None):
     DebTagLoader.__init__(self, baseurl)
     self._filename = filename
     self._tagfile = TagFile(self._filename)