diff options
Diffstat (limited to 'test/pacman/pmpkg.py')
-rw-r--r--[-rwxr-xr-x] | test/pacman/pmpkg.py | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/test/pacman/pmpkg.py b/test/pacman/pmpkg.py index be177f35..64c4f5ef 100755..100644 --- a/test/pacman/pmpkg.py +++ b/test/pacman/pmpkg.py @@ -27,7 +27,7 @@ import util class pmpkg(object): """Package object. - Object holding data from an ArchLinux package. + Object holding data from an Arch Linux package. """ def __init__(self, name, version = "1.0-1"): @@ -45,8 +45,10 @@ class pmpkg(object): self.packager = "" self.size = 0 self.csize = 0 + self.isize = 0 self.reason = 0 self.md5sum = "" # sync only + self.pgpsig = "" # sync only self.replaces = [] self.depends = [] self.optdepends = [] @@ -62,7 +64,7 @@ class pmpkg(object): "pre_remove": "", "post_remove": "", "pre_upgrade": "", - "post_upgrade": "" + "post_upgrade": "", } def __str__(self): @@ -87,8 +89,19 @@ class pmpkg(object): """ return "%s%s" % (self.fullname(), util.PM_EXT_PKG) + @staticmethod + def parse_filename(name): + filename = name + if filename[-1] == "*": + filename = filename.rstrip("*") + if filename.find(" -> ") != -1: + filename, extra = filename.split(" -> ") + elif filename.find("|") != -1: + filename, extra = filename.split("|") + return filename + def makepkg(self, path): - """Creates an ArchLinux package archive. + """Creates an Arch Linux package archive. A package archive is generated in the location 'path', based on the data from the object. @@ -102,7 +115,7 @@ class pmpkg(object): # Generate package file system for f in self.files: util.mkfile(f, f) - self.size += os.lstat(util.getfilename(f))[stat.ST_SIZE] + self.size += os.lstat(self.parse_filename(f))[stat.ST_SIZE] # .PKGINFO data = ["pkgname = %s" % self.name] @@ -133,8 +146,8 @@ class pmpkg(object): util.mkfile(".PKGINFO", "\n".join(data)) # .INSTALL - if len(self.install.values()) > 0: - util.mkinstallfile(".INSTALL", self.install) + if any(self.install.values()): + util.mkfile(".INSTALL", self.installfile()) # safely create the dir util.mkdir(os.path.dirname(self.path)) @@ -148,4 +161,37 @@ class pmpkg(object): os.chdir(curdir) shutil.rmtree(tmpdir) + def full_filelist(self): + """Generate a list of package files. + + Each path is decomposed to generate the list of all directories leading + to the file. + + Example with 'usr/local/bin/dummy': + The resulting list will be: + usr/ + usr/local/ + usr/local/bin/ + usr/local/bin/dummy + """ + file_set = set() + for name in self.files: + name = self.parse_filename(name) + file_set.add(name) + while "/" in name: + name, tmp = name.rsplit("/", 1) + file_set.add(name + "/") + return sorted(file_set) + + def local_backup_entries(self): + return ["%s\t%s" % (self.parse_filename(i), util.mkmd5sum(i)) for i in self.backup] + + def installfile(self): + data = [] + for key, value in self.install.iteritems(): + if value: + data.append("%s() {\n%s\n}\n" % (key, value)) + + return "\n".join(data) + # vim: set ts=4 sw=4 et: |