From 18fc62ff32461e5bfbd74e18c82606ced569318a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Sun, 6 Jan 2019 20:41:58 +0100 Subject: [PATCH] Add a patch from Debian to fix wrong encoding of output message --- itstool-2.0.5-fix-crash-wrong-encoding.patch | 68 ++++++++++++++++++++ itstool.spec | 8 ++- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 itstool-2.0.5-fix-crash-wrong-encoding.patch diff --git a/itstool-2.0.5-fix-crash-wrong-encoding.patch b/itstool-2.0.5-fix-crash-wrong-encoding.patch new file mode 100644 index 0000000..46577d0 --- /dev/null +++ b/itstool-2.0.5-fix-crash-wrong-encoding.patch @@ -0,0 +1,68 @@ +Description: Fix the crash from #912099 + ITS Tool 2.0.4 crashes when building some documentation, as reported in + #912099. This comes from translations with invalid XML markup, which ITS Tool + fails to merge (which is not abnormal), and to report these issues, needlessly + encodes the original msgstr from unicode to bytes, causing it to be recoded + using the default ascii codec, which fails when the msgstr contains anything + out of ascii. + . + This patch removes the useless decoding, avoiding the failing subsequent + recoding. It also explicitly encodes the output strings to be able to print + them in all cases, even when the output encoding cannot be detected. +Bug: https://github.com/itstool/itstool/issues/25 +Bug-Debian: https://bugs.debian.org/912099 +Forwarded: https://github.com/itstool/itstool/issues/25 +Author: Tanguy Ortolo +Last-Update: 2018-12-071 + +Index: itstool/itstool.in +=================================================================== +--- itstool.orig/itstool.in 2018-12-10 18:31:23.762143539 +0100 ++++ itstool/itstool.in 2018-12-10 18:38:03.496777117 +0100 +@@ -44,9 +44,22 @@ + else: + return str(s) + ustr_type = str ++ def pr_str(s): ++ """Return a string that can be safely print()ed""" ++ # Since print works on both bytes and unicode, just return the argument ++ return s + else: + string_types = basestring, + ustr = ustr_type = unicode ++ def pr_str(s): ++ """Return a string that can be safely print()ed""" ++ if isinstance(s, str): ++ # Since print works on str, just return the argument ++ return s ++ else: ++ # print may not work on unicode if the output encoding cannot be ++ # detected, so just encode with UTF-8 ++ return unicode.encode(s, 'utf-8') + + NS_ITS = 'http://www.w3.org/2005/11/its' + NS_ITST = 'http://itstool.org/extensions/' +@@ -1060,9 +1073,9 @@ + if strict: + raise + else: +- sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( ++ sys.stderr.write(pr_str('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr.encode('utf-8'))) ++ msgstr))) + self._xml_err = '' + return node + def scan_node(node): +@@ -1087,9 +1100,9 @@ + if strict: + raise + else: +- sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( ++ sys.stderr.write(pr_str('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr.encode('utf-8'))) ++ msgstr))) + self._xml_err = '' + ctxt.doc().freeDoc() + return node diff --git a/itstool.spec b/itstool.spec index b3c2f7d..81006a9 100644 --- a/itstool.spec +++ b/itstool.spec @@ -1,11 +1,13 @@ Name: itstool Version: 2.0.5 -Release: 1%{?dist} +Release: 2%{?dist} Summary: ITS-based XML translation tool License: GPLv3+ URL: http://itstool.org/ Source0: http://files.itstool.org/itstool/%{name}-%{version}.tar.bz2 +# See: https://github.com/itstool/itstool/issues/25 +Patch0: https://sources.debian.org/data/main/i/itstool/2.0.5-2/debian/patches/fix_crash_912099.patch#/%{name}-2.0.5-fix-crash-wrong-encoding.patch BuildArch: noarch @@ -20,6 +22,7 @@ how to separate it into PO file messages. %prep %setup -q +%patch0 -p 1 -b .encoding %build export PYTHON=%{__python3} @@ -37,6 +40,9 @@ export PYTHON=%{__python3} %{_mandir}/man1/itstool.1* %changelog +* Sun Jan 06 2019 Björn Esser - 2.0.5-2 +- Add a patch from Debian to fix wrong encoding of output message + * Tue Dec 04 2018 Kalev Lember - 2.0.5-1 - Update to 2.0.5 - Use make_build and make_install macros