1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-10-02 09:10:11 +02:00

update: use 'replace' mode to handle non-UTF8 description files

Fastlane/Triple-T app store metadata files must be in UTF-8.  Before this
would crash if they were not.  This changes the handling to just replace
the non-UTF8 chars with a �.  Here's the stacktrace:

CRITICAL: Unknown exception found!
Traceback (most recent call last):
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroid", line 164, in <module>
    main()
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroid", line 159, in main
    raise e
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroid", line 138, in main
    mod.main()
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 2010, in main
    insert_localized_app_metadata(apps)
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 885, in insert_localized_app_metadata
    os.path.join(root, f))
  File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 700, in _set_localized_text_entry
    text = fp.read()[:limit]
  File "/usr/lib/python3.5/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 94: invalid start byte
This commit is contained in:
Hans-Christoph Steiner 2018-10-19 15:06:16 +02:00
parent 57556aceee
commit 117d63cca5

View File

@ -695,7 +695,7 @@ def _get_localized_dict(app, locale):
def _set_localized_text_entry(app, locale, key, f):
limit = config['char_limits'][key]
localized = _get_localized_dict(app, locale)
with open(f) as fp:
with open(f, errors='replace') as fp:
text = fp.read()[:limit]
if len(text) > 0:
localized[key] = text
@ -703,7 +703,7 @@ def _set_localized_text_entry(app, locale, key, f):
def _set_author_entry(app, key, f):
limit = config['char_limits']['author']
with open(f) as fp:
with open(f, errors='replace') as fp:
text = fp.read()[:limit]
if len(text) > 0:
app[key] = text