rpmlint/rpm415-workaround.diff

59 lines
2.1 KiB
Diff

Ugly workaround for RPM 4.14 vs 4.15 python3 bindings incompatibility
Upstream commits:
a310a79f81f2b2dd3a31a101562e67915476a751
8fd904b53c028dded0b308ee95f1a5ff998584fd
diff --git a/rpmlint/Pkg.py b/rpmlint/Pkg.py
index 8d01f30..1b25771 100644
--- rpmlint-rpmlint-1.11.orig/Pkg.py
+++ rpmlint-rpmlint-1.11/Pkg.py
@@ -143,8 +143,17 @@ def is_utf8(fname):
def is_utf8_bytestr(s):
+ """Returns True whether the given text is UTF-8.
+ Due to changes in rpm, needs to handle both bytes and unicode."""
try:
- s.decode('UTF-8')
+ if hasattr(s, 'decode'):
+ s.decode('utf-8')
+ elif hasattr(s, 'encode'):
+ s.encode('utf-8')
+ else:
+ unexpected = type(s).__name__
+ raise TypeError(
+ 'Expected str/unicode/bytes, not {}'.format(unexpected))
except UnicodeError:
return False
return True
--- rpmlint-rpmlint-1.11.orig/PostCheck.py
+++ rpmlint-rpmlint-1.11/PostCheck.py
@@ -70,6 +70,8 @@ def incorrect_perl_script(prog, perlscri
def check_syntax_script(prog, commandline, script):
if not script:
return False
+ if isinstance(script, str):
+ script = script.encode('utf-8')
# TODO: test that "prog" is available/executable
tmpfd, tmpname = tempfile.mkstemp(prefix='rpmlint.')
tmpfile = os.fdopen(tmpfd, 'wb')
--- rpmlint-rpmlint-1.11.orig/rpmlint-checks-master/CheckFilelist.py
+++ rpmlint-rpmlint-1.11/rpmlint-checks-master/CheckFilelist.py
@@ -425,8 +425,13 @@ class FilelistCheck(AbstractCheck.Abstra
invalidfhs = set()
invalidopt = set()
- isSUSE = (pkg.header[RPMTAG_VENDOR] and
- b'SUSE' in pkg.header[RPMTAG_VENDOR])
+ isSUSE = False
+ if pkg.header[RPMTAG_VENDOR]:
+ vendor = pkg.header[RPMTAG_VENDOR]
+ if isinstance(vendor, str):
+ isSUSE = 'SUSE' in vendor
+ else:
+ isSUSE = b'SUSE' in vendor
# the checks here only warn about a directory once rather
# than reporting potentially hundreds of files individually