Python 3 fixes and cleanups

This commit is contained in:
Ville Skyttä 2015-07-04 00:41:11 +03:00
parent 01d8877519
commit 1ac94e65d9
7 changed files with 36 additions and 34 deletions

View File

@ -278,7 +278,7 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
multi_pkg = False
srpm = pkg[rpm.RPMTAG_SOURCERPM]
if srpm:
res = srcname_regex.search(Pkg.b2s(srpm))
res = srcname_regex.search(srpm)
if res:
multi_pkg = (pkg.name != res.group(1))

View File

@ -626,7 +626,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
elif not install_info_regex.search(postin):
printError(pkg, 'postin-without-install-info', f)
preun = b2s(pkg[rpm.RPMTAG_PREUN]) or \
preun = pkg[rpm.RPMTAG_PREUN] or \
pkg.scriptprog(rpm.RPMTAG_PREUNPROG)
if not postun and not preun:
printError(pkg,

View File

@ -59,14 +59,14 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
printError(pkg, 'init-script-name-with-dot', fname)
# check chkconfig call in %post and %preun
postin = Pkg.b2s(pkg[rpm.RPMTAG_POSTIN]) or \
postin = pkg[rpm.RPMTAG_POSTIN] or \
pkg.scriptprog(rpm.RPMTAG_POSTINPROG)
if not postin:
printError(pkg, 'init-script-without-chkconfig-postin', fname)
elif not chkconfig_regex.search(postin):
printError(pkg, 'postin-without-chkconfig', fname)
preun = Pkg.b2s(pkg[rpm.RPMTAG_PREUN]) or \
preun = pkg[rpm.RPMTAG_PREUN] or \
pkg.scriptprog(rpm.RPMTAG_PREUNPROG)
if not preun:
printError(pkg, 'init-script-without-chkconfig-preun', fname)

View File

@ -198,14 +198,14 @@ class MenuCheck(AbstractCheck.AbstractCheck):
printError(pkg, 'menu-in-wrong-dir', fname)
if menus:
postin = Pkg.b2s(pkg[rpm.RPMTAG_POSTIN]) or \
postin = pkg[rpm.RPMTAG_POSTIN] or \
pkg.scriptprog(rpm.RPMTAG_POSTINPROG)
if not postin:
printError(pkg, 'menu-without-postin')
elif not update_menus_regex.search(postin):
printError(pkg, 'postin-without-update-menus')
postun = Pkg.b2s(pkg[rpm.RPMTAG_POSTUN]) or \
postun = pkg[rpm.RPMTAG_POSTUN] or \
pkg.scriptprog(rpm.RPMTAG_POSTUNPROG)
if not postun:
printError(pkg, 'menu-without-postun')

34
Pkg.py
View File

@ -62,6 +62,17 @@ PREREQ_FLAG = (rpm.RPMSENSE_PREREQ or 64) | \
rpm.RPMSENSE_SCRIPT_PREUN | \
rpm.RPMSENSE_SCRIPT_POSTUN
SCRIPT_TAGS = [
(rpm.RPMTAG_PREIN, rpm.RPMTAG_PREINPROG, '%pre'),
(rpm.RPMTAG_POSTIN, rpm.RPMTAG_POSTINPROG, '%post'),
(rpm.RPMTAG_PREUN, rpm.RPMTAG_PREUNPROG, '%preun'),
(rpm.RPMTAG_POSTUN, rpm.RPMTAG_POSTUNPROG, '%postun'),
(rpm.RPMTAG_TRIGGERSCRIPTS, rpm.RPMTAG_TRIGGERSCRIPTPROG, '%trigger'),
(rpm.RPMTAG_PRETRANS, rpm.RPMTAG_PRETRANSPROG, '%pretrans'),
(rpm.RPMTAG_POSTTRANS, rpm.RPMTAG_POSTTRANSPROG, '%posttrans'),
(rpm.RPMTAG_VERIFYSCRIPT, rpm.RPMTAG_VERIFYSCRIPTPROG, '%verifyscript'),
]
var_regex = re.compile('^(.*)\${?(\w+)}?(.*)$')
@ -511,7 +522,12 @@ class Pkg:
else:
if key in (rpm.RPMTAG_VERSION, rpm.RPMTAG_RELEASE, rpm.RPMTAG_ARCH,
rpm.RPMTAG_GROUP, rpm.RPMTAG_BUILDHOST,
rpm.RPMTAG_LICENSE):
rpm.RPMTAG_LICENSE, rpm.RPMTAG_CHANGELOGNAME,
rpm.RPMTAG_CHANGELOGTEXT, rpm.RPMTAG_SUMMARY,
rpm.RPMTAG_DESCRIPTION, rpm.RPMTAG_HEADERI18NTABLE,
rpm.RPMTAG_PACKAGER, rpm.RPMTAG_SOURCERPM) \
or key in (x[0] for x in SCRIPT_TAGS) \
or key in (x[1] for x in SCRIPT_TAGS):
val = b2s(val)
return val
@ -573,7 +589,7 @@ class Pkg:
# LANGUAGE trumps other env vars per GNU gettext docs, see also #166
orig = os.environ.get('LANGUAGE')
os.environ['LANGUAGE'] = lang
ret = b2s(self[tag])
ret = self[tag]
if orig is not None:
os.environ['LANGUAGE'] = orig
return ret
@ -666,8 +682,8 @@ class Pkg:
self.dirName() or '/', pkgfile.name.lstrip('/')))
pkgfile.flags = flags[idx]
pkgfile.mode = modes[idx]
pkgfile.user = users[idx]
pkgfile.group = groups[idx]
pkgfile.user = b2s(users[idx])
pkgfile.group = b2s(groups[idx])
pkgfile.linkto = links[idx] and safe_normpath(links[idx])
pkgfile.size = sizes[idx]
pkgfile.md5 = md5s[idx]
@ -676,7 +692,7 @@ class Pkg:
pkgfile.inode = inodes[idx]
pkgfile.requires = parse_deps(requires[idx])
pkgfile.provides = parse_deps(provides[idx])
pkgfile.lang = langs[idx]
pkgfile.lang = b2s(langs[idx])
pkgfile.magic = magics[idx]
if not pkgfile.magic and _magic:
pkgfile.magic = _magic.file(pkgfile.path)
@ -846,11 +862,11 @@ class Pkg:
interpreter arguments, if any."""
prog = self[which]
if prog is None:
prog = b''
prog = ""
elif isinstance(prog, (list, tuple)):
# http://rpm.org/ticket/847#comment:2
prog = b' '.join(prog)
return b2s(prog)
prog = "".join(prog)
return prog
def getInstalledPkgs(name):
@ -879,7 +895,7 @@ class InstalledPkg(Pkg):
if not mi:
raise KeyError(name)
try:
hdr = mi.next()
hdr = next(mi)
except StopIteration:
raise KeyError(name)

View File

@ -61,17 +61,6 @@ for p in prereq_assoc:
# pychecker fix
del p
script_tags = [
(rpm.RPMTAG_PREIN, rpm.RPMTAG_PREINPROG, '%pre'),
(rpm.RPMTAG_POSTIN, rpm.RPMTAG_POSTINPROG, '%post'),
(rpm.RPMTAG_PREUN, rpm.RPMTAG_PREUNPROG, '%preun'),
(rpm.RPMTAG_POSTUN, rpm.RPMTAG_POSTUNPROG, '%postun'),
(rpm.RPMTAG_TRIGGERSCRIPTS, rpm.RPMTAG_TRIGGERSCRIPTPROG, '%trigger'),
(rpm.RPMTAG_PRETRANS, rpm.RPMTAG_PRETRANSPROG, '%pretrans'),
(rpm.RPMTAG_POSTTRANS, rpm.RPMTAG_POSTTRANSPROG, '%posttrans'),
(rpm.RPMTAG_VERIFYSCRIPT, rpm.RPMTAG_VERIFYSCRIPTPROG, '%verifyscript'),
]
def incorrect_shell_script(prog, shellscript):
return check_syntax_script(prog, '-n', shellscript)
@ -105,7 +94,7 @@ class PostCheck(AbstractCheck.AbstractCheck):
prereq = [x[0] for x in pkg.prereq()]
files = pkg.files()
for tag in script_tags:
for tag in Pkg.SCRIPT_TAGS:
script = pkg[tag[0]]
if not isinstance(script, list):

View File

@ -547,7 +547,7 @@ class TagsCheck(AbstractCheck.AbstractCheck):
def check(self, pkg):
packager = Pkg.b2s(pkg[rpm.RPMTAG_PACKAGER])
packager = pkg[rpm.RPMTAG_PACKAGER]
if packager:
self._unexpanded_macros(pkg, 'Packager', packager)
if Config.getOption('Packager') and \
@ -684,10 +684,8 @@ class TagsCheck(AbstractCheck.AbstractCheck):
ignored_words.update((x[0] for x in pkg.obsoletes()))
langs = pkg[rpm.RPMTAG_HEADERI18NTABLE]
if langs:
langs = [Pkg.b2s(x) for x in langs]
summary = Pkg.b2s(pkg[rpm.RPMTAG_SUMMARY])
summary = pkg[rpm.RPMTAG_SUMMARY]
if summary:
if not langs:
self._unexpanded_macros(pkg, 'Summary', summary)
@ -697,7 +695,7 @@ class TagsCheck(AbstractCheck.AbstractCheck):
else:
printError(pkg, 'no-summary-tag')
description = Pkg.b2s(pkg[rpm.RPMTAG_DESCRIPTION])
description = pkg[rpm.RPMTAG_DESCRIPTION]
if description:
if not langs:
self._unexpanded_macros(pkg, '%description', description)
@ -726,8 +724,7 @@ class TagsCheck(AbstractCheck.AbstractCheck):
if not changelog:
printError(pkg, 'no-changelogname-tag')
else:
changelog = [Pkg.b2s(x) for x in changelog]
clt = [Pkg.b2s(x) for x in pkg[rpm.RPMTAG_CHANGELOGTEXT]]
clt = pkg[rpm.RPMTAG_CHANGELOGTEXT]
if use_version_in_changelog:
ret = changelog_version_regex.search(changelog[0])
if not ret and clt: