[packages/itstool] - added fix-crash-wrong-encoding patch from Fedora; release 2

qboosh qboosh at pld-linux.org
Mon May 4 21:42:19 CEST 2020


commit 26c25ac4e3cfed3f0e31bed65a59d6bbef88333b
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Mon May 4 21:42:42 2020 +0200

    - added fix-crash-wrong-encoding patch from Fedora; release 2

 itstool-fix-crash-wrong-encoding.patch | 68 ++++++++++++++++++++++++++++++++++
 itstool.spec                           | 10 ++++-
 2 files changed, 76 insertions(+), 2 deletions(-)
---
diff --git a/itstool.spec b/itstool.spec
index 47efe81..bf71601 100644
--- a/itstool.spec
+++ b/itstool.spec
@@ -2,12 +2,16 @@ Summary:	ITS-based XML translation tool
 Summary(pl.UTF-8):	Narzędzie do tłumaczenia XML-a oparte na ITS
 Name:		itstool
 Version:	2.0.6
-Release:	1
+Release:	2
 License:	GPL v3+
 Group:		Applications/Text
 Source0:	http://files.itstool.org/itstool/%{name}-%{version}.tar.bz2
 # Source0-md5:	4306eeba4f4aee6b393d14f9c3c57ca1
+Patch0:		%{name}-fix-crash-wrong-encoding.patch
 URL:		http://itstool.org/
+BuildRequires:	python >= 1:2.6
+BuildRequires:	python-libxml2
+Requires:	python >= 1:2.6
 Requires:	python-libxml2
 BuildArch:	noarch
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
@@ -25,9 +29,11 @@ komunikaty w pliku PO.
 
 %prep
 %setup -q
+%patch0 -p1
 
 %build
-%configure
+%configure \
+	PYTHON="%{__python}"
 %{__make}
 
 %install
diff --git a/itstool-fix-crash-wrong-encoding.patch b/itstool-fix-crash-wrong-encoding.patch
new file mode 100644
index 0000000..46577d0
--- /dev/null
+++ b/itstool-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 <tanguy+debian at ortolo.eu>
+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
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/itstool.git/commitdiff/26c25ac4e3cfed3f0e31bed65a59d6bbef88333b



More information about the pld-cvs-commit mailing list