summaryrefslogtreecommitdiffstats
path: root/test/pacman/pmpkg.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/pacman/pmpkg.py')
-rw-r--r--[-rwxr-xr-x]test/pacman/pmpkg.py58
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: