diff options
Diffstat (limited to 'test/pacman/pmdb.py')
-rwxr-xr-x | test/pacman/pmdb.py | 188 |
1 files changed, 47 insertions, 141 deletions
diff --git a/test/pacman/pmdb.py b/test/pacman/pmdb.py index 218e3b58..b31498a7 100755 --- a/test/pacman/pmdb.py +++ b/test/pacman/pmdb.py @@ -17,13 +17,10 @@ import os -import tempfile -import shutil import tarfile import pmpkg -from util import * - +import util def _mkfilelist(files): """Generate a list of files from the list supplied as an argument. @@ -38,19 +35,19 @@ def _mkfilelist(files): usr/local/bin/ usr/local/bin/dummy """ - file_list = set() + file_set = set() for f in files: - dir = getfilename(f) - file_list.add(dir) - while "/" in dir: - [dir, tmp] = dir.rsplit("/", 1) - file_list.add(dir + "/") - return sorted(file_list) + name = util.getfilename(f) + file_set.add(name) + while "/" in name: + [name, tmp] = name.rsplit("/", 1) + file_set.add(name + "/") + return sorted(file_set) def _mkbackuplist(backup): """ """ - return ["%s\t%s" % (getfilename(i), mkmd5sum(i)) for i in backup] + return ["%s\t%s" % (util.getfilename(i), util.mkmd5sum(i)) for i in backup] def _getsection(fd): """ @@ -75,15 +72,19 @@ def _mksection(title, data): "%s\n" % (title, s) -class pmdb: +class pmdb(object): """Database object """ - def __init__(self, treename, dbdir): + def __init__(self, treename, root): self.treename = treename - self.dbdir = dbdir self.pkgs = [] self.option = {} + if self.treename == "local": + self.dbdir = os.path.join(root, util.PM_DBPATH, treename) + else: + self.dbdir = os.path.join(root, util.PM_SYNCDBPATH, treename) + self.dbfile = os.path.join(root, util.PM_SYNCDBPATH, treename + ".db") def __str__(self): return "%s" % self.treename @@ -98,8 +99,7 @@ class pmdb: def db_read(self, name): """ """ - - path = os.path.join(self.dbdir, self.treename) + path = self.dbdir if not os.path.isdir(path): return None @@ -152,12 +152,15 @@ class pmdb: pkg.md5sum = fd.readline().strip("\n") elif line == "%REPLACES%": pkg.replaces = _getsection(fd) - elif line == "%FORCE%": - fd.readline() - pkg.force = 1 + elif line == "%DEPENDS%": + pkg.depends = _getsection(fd) + elif line == "%OPTDEPENDS%": + pkg.optdepends = _getsection(fd) + elif line == "%CONFLICTS%": + pkg.conflicts = _getsection(fd) + elif line == "%PROVIDES%": + pkg.provides = _getsection(fd) fd.close() - pkg.checksum["desc"] = getmd5sum(filename) - pkg.mtime["desc"] = getmtime(filename) # files filename = os.path.join(path, "files") @@ -178,43 +181,9 @@ class pmdb: if line == "%BACKUP%": pkg.backup = _getsection(fd) fd.close() - pkg.checksum["files"] = getmd5sum(filename) - pkg.mtime["files"] = getmtime(filename) - - # depends - filename = os.path.join(path, "depends") - if not os.path.isfile(filename): - print "invalid db entry found (depends missing) for pkg", pkgname - return None - fd = file(filename, "r") - while 1: - line = fd.readline() - if not line: - break - line = line.strip("\n") - if line == "%DEPENDS%": - pkg.depends = _getsection(fd) - elif line == "%OPTDEPENDS%": - pkg.optdepends = _getsection(fd) - elif line == "%CONFLICTS%": - pkg.conflicts = _getsection(fd) - elif line == "%PROVIDES%": - pkg.provides = _getsection(fd) - # TODO this was going to be changed, but isn't anymore - #elif line == "%REPLACES%": - # pkg.replaces = _getsection(fd) - #elif line == "%FORCE%": - # fd.readline() - # pkg.force = 1 - fd.close() - pkg.checksum["depends"] = getmd5sum(filename) - pkg.mtime["depends"] = getmtime(filename) # install filename = os.path.join(path, "install") - if os.path.isfile(filename): - pkg.checksum["install"] = getmd5sum(filename) - pkg.mtime["install"] = getmtime(filename) return pkg @@ -224,19 +193,15 @@ class pmdb: def db_write(self, pkg): """ """ - - if self.treename == "local": - path = os.path.join(self.dbdir, self.treename, pkg.fullname()) - else: - path = os.path.join(self.dbdir, "sync", self.treename, pkg.fullname()) - mkdir(path) + path = os.path.join(self.dbdir, pkg.fullname()) + util.mkdir(path) # desc # for local db entries: name, version, desc, groups, url, license, # arch, builddate, installdate, packager, - # size, reason + # size, reason, depends, conflicts, provides # for sync entries: name, version, desc, groups, csize, md5sum, - # replaces, force + # replaces, force, depends, conflicts, provides data = [_mksection("NAME", pkg.name)] data.append(_mksection("VERSION", pkg.version)) if pkg.desc: @@ -251,6 +216,14 @@ class pmdb: data.append(_mksection("BUILDDATE", pkg.builddate)) if pkg.packager: data.append(_mksection("PACKAGER", pkg.packager)) + if pkg.depends: + data.append(_mksection("DEPENDS", pkg.depends)) + if pkg.optdepends: + data.append(_mksection("OPTDEPENDS", pkg.optdepends)) + if pkg.conflicts: + data.append(_mksection("CONFLICTS", pkg.conflicts)) + if pkg.provides: + data.append(_mksection("PROVIDES", pkg.provides)) if self.treename == "local": if pkg.url: data.append(_mksection("URL", pkg.url)) @@ -264,8 +237,6 @@ class pmdb: data.append(_mksection("FILENAME", pkg.filename())) if pkg.replaces: data.append(_mksection("REPLACES", pkg.replaces)) - if pkg.force: - data.append(_mksection("FORCE", "")) if pkg.csize: data.append(_mksection("CSIZE", pkg.csize)) if pkg.md5sum: @@ -273,9 +244,7 @@ class pmdb: if data: data.append("") filename = os.path.join(path, "desc") - mkfile(filename, "\n".join(data)) - pkg.checksum["desc"] = getmd5sum(filename) - pkg.mtime["desc"] = getmtime(filename) + util.mkfile(filename, "\n".join(data)) # files # for local entries, fields are: files, backup @@ -289,33 +258,7 @@ class pmdb: if data: data.append("") filename = os.path.join(path, "files") - mkfile(filename, "\n".join(data)) - pkg.checksum["files"] = getmd5sum(filename) - pkg.mtime["files"] = getmtime(filename) - - # depends - # for local db entries: depends, conflicts, provides - # for sync ones: depends, conflicts, provides - data = [] - if pkg.depends: - data.append(_mksection("DEPENDS", pkg.depends)) - if pkg.optdepends: - data.append(_mksection("OPTDEPENDS", pkg.optdepends)) - if pkg.conflicts: - data.append(_mksection("CONFLICTS", pkg.conflicts)) - if pkg.provides: - data.append(_mksection("PROVIDES", pkg.provides)) - #if self.treename != "local": - # if pkg.replaces: - # data.append(_mksection("REPLACES", pkg.replaces)) - # if pkg.force: - # data.append(_mksection("FORCE", "")) - if data: - data.append("") - filename = os.path.join(path, "depends") - mkfile(filename, "\n".join(data)) - pkg.checksum["depends"] = getmd5sum(filename) - pkg.mtime["depends"] = getmtime(filename) + util.mkfile(filename, "\n".join(data)) # install if self.treename == "local": @@ -325,60 +268,23 @@ class pmdb: empty = 0 if not empty: filename = os.path.join(path, "install") - mkinstallfile(filename, pkg.install) - pkg.checksum["install"] = getmd5sum(filename) - pkg.mtime["install"] = getmtime(filename) + util.mkinstallfile(filename, pkg.install) - def gensync(self, path): + def gensync(self): """ """ + if not self.dbfile: + return curdir = os.getcwd() - tmpdir = tempfile.mkdtemp() - os.chdir(tmpdir) - - for pkg in self.pkgs: - mkdescfile(pkg.fullname(), pkg) + os.chdir(self.dbdir) # Generate database archive - mkdir(path) - archive = os.path.join(path, "%s%s" % (self.treename, PM_EXT_DB)) - tar = tarfile.open(archive, "w:gz") - for root, dirs, files in os.walk('.'): - for d in dirs: - tar.add(os.path.join(root, d), recursive=False) - for f in files: - tar.add(os.path.join(root, f)) + tar = tarfile.open(self.dbfile, "w:gz") + for i in os.listdir("."): + tar.add(i) tar.close() os.chdir(curdir) - shutil.rmtree(tmpdir) - - def ispkgmodified(self, pkg): - """ - """ - - modified = 0 - - oldpkg = self.getpkg(pkg.name) - if not oldpkg: - return 0 - - vprint("\toldpkg.checksum : %s" % oldpkg.checksum) - vprint("\toldpkg.mtime : %s" % oldpkg.mtime) - - for key in pkg.mtime.keys(): - if key == "install" \ - and oldpkg.mtime[key] == (0, 0, 0) \ - and pkg.mtime[key] == (0, 0, 0): - continue - if oldpkg.mtime[key][1:3] != pkg.mtime[key][1:3]: - modified += 1 - - return modified - -if __name__ == "__main__": - db = pmdb("local") - print db # vim: set ts=4 sw=4 et: |