pactest: move filelist/backup generation into package object

These are definite methods that operate on a package, so move them there
which cleans up util a bit more.

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2011-06-22 15:05:53 -05:00
parent 3ace8ceb23
commit f15cce1d41
3 changed files with 39 additions and 38 deletions

View File

@ -22,31 +22,6 @@
import pmpkg
import util
def _mkfilelist(files):
"""Generate a list of files from the list supplied as an argument.
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 f in files:
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" % (util.getfilename(i), util.mkmd5sum(i)) for i in backup]
def _getsection(fd):
i = []
while 1:
@ -244,8 +219,8 @@ def db_write(self, pkg):
# files and install
if self.is_local:
data = []
make_section(data, "FILES", _mkfilelist(pkg.files))
make_section(data, "BACKUP", _mkbackuplist(pkg.backup))
make_section(data, "FILES", pkg.full_filelist())
make_section(data, "BACKUP", pkg.local_backup_entries())
filename = os.path.join(path, "files")
util.mkfile(filename, "\n".join(data))

View File

@ -89,6 +89,17 @@ def filename(self):
"""
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 Arch Linux package archive.
@ -104,7 +115,7 @@ def makepkg(self, path):
# 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]
@ -150,4 +161,29 @@ def makepkg(self, path):
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]
# vim: set ts=4 sw=4 et:

View File

@ -47,16 +47,6 @@ def vprint(msg):
# Methods to generate files
#
def getfilename(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 mkfile(name, data = ""):
isdir = 0
islink = 0