mirror of
https://github.com/moparisthebest/pacman
synced 2025-03-01 01:41:52 -05:00
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
@ -22,31 +22,6 @@ import tarfile
|
||||
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 @@ class pmdb(object):
|
||||
# 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))
|
||||
|
||||
|
@ -89,6 +89,17 @@ 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 Arch Linux package archive.
|
||||
|
||||
@ -104,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]
|
||||
@ -150,4 +161,29 @@ 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]
|
||||
|
||||
# vim: set ts=4 sw=4 et:
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user