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:
parent
3ace8ceb23
commit
f15cce1d41
3 changed files with 39 additions and 38 deletions
|
@ -22,31 +22,6 @@ import tarfile
|
||||||
import pmpkg
|
import pmpkg
|
||||||
import util
|
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):
|
def _getsection(fd):
|
||||||
i = []
|
i = []
|
||||||
while 1:
|
while 1:
|
||||||
|
@ -244,8 +219,8 @@ class pmdb(object):
|
||||||
# files and install
|
# files and install
|
||||||
if self.is_local:
|
if self.is_local:
|
||||||
data = []
|
data = []
|
||||||
make_section(data, "FILES", _mkfilelist(pkg.files))
|
make_section(data, "FILES", pkg.full_filelist())
|
||||||
make_section(data, "BACKUP", _mkbackuplist(pkg.backup))
|
make_section(data, "BACKUP", pkg.local_backup_entries())
|
||||||
filename = os.path.join(path, "files")
|
filename = os.path.join(path, "files")
|
||||||
util.mkfile(filename, "\n".join(data))
|
util.mkfile(filename, "\n".join(data))
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,17 @@ class pmpkg(object):
|
||||||
"""
|
"""
|
||||||
return "%s%s" % (self.fullname(), util.PM_EXT_PKG)
|
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):
|
def makepkg(self, path):
|
||||||
"""Creates an Arch Linux package archive.
|
"""Creates an Arch Linux package archive.
|
||||||
|
|
||||||
|
@ -104,7 +115,7 @@ class pmpkg(object):
|
||||||
# Generate package file system
|
# Generate package file system
|
||||||
for f in self.files:
|
for f in self.files:
|
||||||
util.mkfile(f, f)
|
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
|
# .PKGINFO
|
||||||
data = ["pkgname = %s" % self.name]
|
data = ["pkgname = %s" % self.name]
|
||||||
|
@ -150,4 +161,29 @@ class pmpkg(object):
|
||||||
os.chdir(curdir)
|
os.chdir(curdir)
|
||||||
shutil.rmtree(tmpdir)
|
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:
|
# vim: set ts=4 sw=4 et:
|
||||||
|
|
|
@ -47,16 +47,6 @@ def vprint(msg):
|
||||||
# Methods to generate files
|
# 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 = ""):
|
def mkfile(name, data = ""):
|
||||||
isdir = 0
|
isdir = 0
|
||||||
islink = 0
|
islink = 0
|
||||||
|
|
Loading…
Add table
Reference in a new issue