103 lines
3.7 KiB
Diff
103 lines
3.7 KiB
Diff
diff -up rpmlint-rpmlint-1.9/FilesCheck.py.unicodefix rpmlint-rpmlint-1.9/FilesCheck.py
|
|
--- rpmlint-rpmlint-1.9/FilesCheck.py.unicodefix 2016-07-08 10:45:32.988796231 -0400
|
|
+++ rpmlint-rpmlint-1.9/FilesCheck.py 2016-07-08 10:47:07.520138612 -0400
|
|
@@ -572,8 +572,14 @@ class FilesCheck(AbstractCheck.AbstractC
|
|
|
|
chunk = None
|
|
istext = False
|
|
- if os.access(pkgfile.path, os.R_OK):
|
|
- (chunk, istext) = peek(pkgfile.path, pkg)
|
|
+ res = None
|
|
+ try:
|
|
+ res = os.access(pkgfile.path, os.R_OK)
|
|
+ except UnicodeError as e: # e.g. non-ASCII, C locale, python 3
|
|
+ printWarning(pkg, 'inaccessible-filename', f, e)
|
|
+ else:
|
|
+ if res:
|
|
+ (chunk, istext) = peek(pkgfile.path, pkg)
|
|
|
|
(interpreter, interpreter_args) = script_interpreter(chunk)
|
|
|
|
@@ -1304,6 +1310,11 @@ it in the rpm header indicates that it i
|
|
but it actually is not in the filesystem. Because of this, some checks will
|
|
be skipped.''',
|
|
|
|
+'inaccessible-filename',
|
|
+'''An error occurred while trying to access this file due to some characters
|
|
+in its name. Because of this, some checks will be skipped. Access could work
|
|
+with some other locale settings.''',
|
|
+
|
|
'executable-crontab-file',
|
|
'''This crontab file has executable bit set, which is refused by newer version
|
|
of cron''',
|
|
diff -up rpmlint-rpmlint-1.9/Filter.py.unicodefix rpmlint-rpmlint-1.9/Filter.py
|
|
--- rpmlint-rpmlint-1.9/Filter.py.unicodefix 2016-07-08 10:43:35.135616091 -0400
|
|
+++ rpmlint-rpmlint-1.9/Filter.py 2016-07-08 10:45:25.885845645 -0400
|
|
@@ -9,6 +9,7 @@
|
|
|
|
from __future__ import print_function
|
|
|
|
+import codecs
|
|
import locale
|
|
import sys
|
|
import textwrap
|
|
@@ -25,17 +26,20 @@ _diagnostic = list()
|
|
_badness_score = 0
|
|
printed_messages = {"I": 0, "W": 0, "E": 0}
|
|
|
|
-__stdout = sys.stdout
|
|
__preferred_encoding = locale.getpreferredencoding()
|
|
if sys.version_info[0] < 3:
|
|
- import codecs
|
|
__stdout = codecs.getwriter(__preferred_encoding)(sys.stdout, 'replace')
|
|
|
|
+ def __print(s):
|
|
+ if isinstance(s, str):
|
|
+ s = s.decode(__preferred_encoding, 'replace')
|
|
+ print(s, file=__stdout)
|
|
+else:
|
|
+ __stdout = codecs.getwriter(__preferred_encoding)(
|
|
+ sys.stdout.buffer, 'replace')
|
|
|
|
-def __print(s):
|
|
- if isinstance(s, str) and hasattr(s, 'decode'):
|
|
- s = s.decode(__preferred_encoding, 'replace')
|
|
- print(s, file=__stdout)
|
|
+ def __print(s):
|
|
+ print(s, file=__stdout)
|
|
|
|
|
|
def printInfo(pkg, reason, *details):
|
|
diff -up rpmlint-rpmlint-1.9/Makefile.unicodefix rpmlint-rpmlint-1.9/Makefile
|
|
--- rpmlint-rpmlint-1.9/Makefile.unicodefix 2016-07-08 10:47:23.748025724 -0400
|
|
+++ rpmlint-rpmlint-1.9/Makefile 2016-07-08 10:47:38.945919999 -0400
|
|
@@ -22,10 +22,6 @@ PYTHON = /usr/bin/python
|
|
# update this variable to create a new release
|
|
VERSION := 1.9
|
|
|
|
-# for the [A-Z]* part
|
|
-LC_ALL:=C
|
|
-export LC_ALL
|
|
-
|
|
all: __version__.py __isocodes__.py
|
|
|
|
clean:
|
|
diff -up rpmlint-rpmlint-1.9/test.sh.unicodefix rpmlint-rpmlint-1.9/test.sh
|
|
--- rpmlint-rpmlint-1.9/test.sh.unicodefix 2016-07-08 10:47:52.116828374 -0400
|
|
+++ rpmlint-rpmlint-1.9/test.sh 2016-07-08 10:48:34.045536691 -0400
|
|
@@ -18,9 +18,14 @@ for i in $TESTPATH/test.*.py; do
|
|
done
|
|
|
|
echo "Check that rpmlint executes with no unexpected errors"
|
|
+echo "...in default locale"
|
|
$PYTHON ./rpmlint -C $(pwd) test/*/*.rpm test/spec/*.spec >/dev/null
|
|
rc=$?
|
|
test $rc -eq 0 -o $rc -eq 64 || exit $rc
|
|
+echo "...in the C locale"
|
|
+LC_ALL=C $PYTHON ./rpmlint -C $(pwd) test/*/*.rpm test/spec/*.spec >/dev/null
|
|
+rc=$?
|
|
+test $rc -eq 0 -o $rc -eq 64 || exit $rc
|
|
|
|
echo "$PYTEST tests"
|
|
$PYTEST -v || exit $?
|