diff --git a/.gitignore b/.gitignore index d0139cc..82bfe9c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ gimp-help-2.4.2.tar.bz2 /gimp-help-2.8.1.tar.bz2 /gimp-help-2.8.2.tar.bz2 /gimp-help-2.10.0.tar.bz2 +/gimp-help-2.10.34.tar.bz2 diff --git a/gimp-help-2.10.0-python3.patch b/gimp-help-2.10.0-python3.patch deleted file mode 100644 index 66a22bf..0000000 --- a/gimp-help-2.10.0-python3.patch +++ /dev/null @@ -1,314 +0,0 @@ -diff -urNp a/tools/xml2po/__init__.py b/tools/xml2po/__init__.py ---- a/tools/xml2po/__init__.py 2019-11-28 11:45:00.889048989 +0100 -+++ b/tools/xml2po/__init__.py 2020-01-06 13:24:24.715787902 +0100 -@@ -86,14 +86,14 @@ class MessageOutput: - self.messages.append(t) - if spacepreserve: - self.nowrap[t] = True -- if t in self.linenos.keys(): -+ if t in list(self.linenos.keys()): - self.linenos[t].append((self.filename, tag, lineno)) - else: - self.linenos[t] = [ (self.filename, tag, lineno) ] - if (not self.do_translations) and comment and not t in self.comments: - self.comments[t] = comment - else: -- if t in self.linenos.keys(): -+ if t in list(self.linenos.keys()): - self.linenos[t].append((self.filename, tag, lineno)) - else: - self.linenos[t] = [ (self.filename, tag, lineno) ] -@@ -166,7 +166,7 @@ class XMLDocument(object): - elif node.isText(): - if node.isBlankNode(): - if self.app.options.get('expand_entities') or \ -- (not (node.prev and not node.prev.isBlankNode() and node.next and not node.next.isBlankNode()) ): -+ (not (node.prev and not node.prev.isBlankNode() and node.nextElementSibling() and not node.next.isBlankNode()) ): - #print >>sys.stderr, "BLANK" - node.setContent('') - else: -@@ -200,7 +200,7 @@ class XMLDocument(object): - tree = ctxt.doc() - newnode = tree.getRootElement() - except: -- print >> sys.stderr, """Error while normalizing string as XML:\n"%s"\n""" % (text) -+ print("""Error while normalizing string as XML:\n"%s"\n""" % (text), file=sys.stderr) - return text - - self.normalizeNode(newnode) -@@ -259,7 +259,7 @@ class XMLDocument(object): - if not self.expand_entities: - result += '&' + child.name + ';' - else: -- result += child.content.decode('utf-8') -+ result += child.content - else: - result += self.myAttributeSerialize(child) - child = child.next -@@ -326,7 +326,7 @@ class XMLDocument(object): - pass - - content = '<%s>%s' % (starttag, text, endtag) -- tmp = tmp + content.encode('utf-8') -+ tmp = tmp + content - - newnode = None - try: -@@ -338,7 +338,7 @@ class XMLDocument(object): - pass - - if not newnode: -- print >> sys.stderr, """Error while parsing translation as XML:\n"%s"\n""" % (text.encode('utf-8')) -+ print("""Error while parsing translation as XML:\n"%s"\n""" % (text), file=sys.stderr) - return - - newelem = newnode.getRootElement() -@@ -354,7 +354,7 @@ class XMLDocument(object): - copy = newelem.copyNodeList() - next = node.next - node.replaceNode(newelem.copyNodeList()) -- node.next = next -+ node.__next__ = next - - else: - # In practice, this happens with tags such as " " (only whitespace in between) -@@ -406,7 +406,7 @@ class XMLDocument(object): - translation = self.app.getTranslation(outtxt) # unicode or None - if translation is not None: - self.replaceAttributeContentsWithText(attr, -- translation.encode('utf-8')) -+ translation) - else: - self.app.msg.outputMessage(outtxt, node.lineNo(), "", spacepreserve=False, - tag = node.name + ":" + attr.name) -@@ -447,14 +447,14 @@ class XMLDocument(object): - norm_outtxt = self.normalizeString(outtxt, self.app.isSpacePreserveNode(node)) - translation = self.app.getTranslation(norm_outtxt) - else: -- translation = outtxt.decode('utf-8') -+ translation = outtxt - - starttag = self.startTagForNode(node) - endtag = self.endTagForNode(node) - - worth = self.worthOutputting(node) - if not translation: -- translation = outtxt.decode('utf-8') -+ translation = outtxt - if worth and self.app.options.get('mark_untranslated'): - node.setLang('C') - -@@ -463,7 +463,7 @@ class XMLDocument(object): - # repl[0] may contain translated attributes with - # non-ASCII chars, so implicit conversion to may fail - replacement = '<%s>%s' % \ -- (repl[0].decode('utf-8'), repl[3], repl[2]) -+ (repl[0], repl[3], repl[2]) - translation = translation.replace('' % (i+1), replacement) - - if worth: -@@ -542,7 +542,7 @@ class Main(object): - elif output == '-': - self.out = sys.stdout - else: -- self.out = file(output, 'w') -+ self.out = open(output, 'w') - - def load_mode(self, modename): - try: -@@ -565,7 +565,7 @@ class Main(object): - try: - doc = XMLDocument(xmlfile, self) - except Exception as e: -- print >> sys.stderr, "Unable to parse XML file '%s': %s" % (xmlfile, str(e)) -+ print("Unable to parse XML file '%s': %s" % (xmlfile, str(e)), file=sys.stderr) - sys.exit(1) - self.current_mode.preProcessXml(doc.doc, self.msg) - doc.generate_messages() -@@ -578,13 +578,13 @@ class Main(object): - try: - doc = XMLDocument(xmlfile, self) - except Exception as e: -- print >> sys.stderr, str(e) -+ print(str(e), file=sys.stderr) - sys.exit(1) - - try: - mfile = open(mofile, "rb") - except: -- print >> sys.stderr, "Can't open MO file '%s'." % (mofile) -+ print("Can't open MO file '%s'." % (mofile), file=sys.stderr) - self.gt = gettext.GNUTranslations(mfile) - self.gt.add_fallback(NoneTranslations()) - # Has preProcessXml use cases for merge? -@@ -607,7 +607,7 @@ class Main(object): - try: - doc = XMLDocument(xmlfile, self) - except Exception as e: -- print >> sys.stderr, str(e) -+ print(str(e), file=sys.stderr) - sys.exit(1) - doc.generate_messages() - -@@ -615,7 +615,7 @@ class Main(object): - try: - doc = XMLDocument(origxml, self) - except Exception as e: -- print >> sys.stderr, str(e) -+ print(str(e), file=sys.stderr) - sys.exit(1) - doc.generate_messages() - self.output_po() -@@ -646,11 +646,11 @@ class Main(object): - - text should be a string to look for. - """ -- #print >>sys.stderr,"getTranslation('%s')" % (text.encode('utf-8')) -+ #print >>sys.stderr,"getTranslation('%s')" % (text) - if not text or text.strip() == '': - return text - if self.gt: -- res = self.gt.ugettext(text.decode('utf-8')) -+ res = self.gt.gettext(text) - return res - - return text -diff -urNp a/tools/xml2po/modes/docbook.py b/tools/xml2po/modes/docbook.py ---- a/tools/xml2po/modes/docbook.py 2019-11-28 11:45:00.889048989 +0100 -+++ b/tools/xml2po/modes/docbook.py 2020-01-06 13:10:18.324679751 +0100 -@@ -43,7 +43,7 @@ try: - except ImportError: - from md5 import new as md5_new - --from basic import basicXmlMode -+from .basic import basicXmlMode - - class docbookXmlMode(basicXmlMode): - """Class for special handling of DocBook document types. -@@ -131,7 +131,7 @@ class docbookXmlMode(basicXmlMode): - hash = self._md5_for_file(fullpath) - else: - hash = "THIS FILE DOESN'T EXIST" -- print >>sys.stderr, "Warning: image file '%s' not found." % fullpath -+ print("Warning: image file '%s' not found." % fullpath, file=sys.stderr) - - msg.outputMessage("@@image: '%s'; md5=%s" % (attr, hash), node.lineNo(), - "When image changes, this message will be marked fuzzy or untranslated for you.\n"+ -@@ -184,7 +184,7 @@ class docbookXmlMode(basicXmlMode): - else: - ai.addChild(copy) - if match.group(3): -- copy.newChild(None, "year", match.group(3).encode('utf-8')) -+ copy.newChild(None, "year", match.group(3)) - if match.group(1) and match.group(2): - holder = match.group(1)+"(%s)" % match.group(2) - elif match.group(1): -@@ -193,15 +193,15 @@ class docbookXmlMode(basicXmlMode): - holder = match.group(2) - else: - holder = "???" -- copy.newChild(None, "holder", holder.encode('utf-8')) -+ copy.newChild(None, "holder", holder) - - # Perform some tests when ran standalone - if __name__ == '__main__': - test = docbookXmlMode() -- print "Ignored tags : " + repr(test.getIgnoredTags()) -- print "Final tags : " + repr(test.getFinalTags()) -- print "Space-preserve tags: " + repr(test.getSpacePreserveTags()) -+ print("Ignored tags : " + repr(test.getIgnoredTags())) -+ print("Final tags : " + repr(test.getFinalTags())) -+ print("Space-preserve tags: " + repr(test.getSpacePreserveTags())) - -- print "Credits from string: '%s'" % test.getStringForTranslators() -- print "Explanation for credits:\n\t'%s'" % test.getCommentForTranslators() -+ print("Credits from string: '%s'" % test.getStringForTranslators()) -+ print("Explanation for credits:\n\t'%s'" % test.getCommentForTranslators()) - -diff -urNp a/tools/xml2po/modes/gimphelp.py b/tools/xml2po/modes/gimphelp.py ---- a/tools/xml2po/modes/gimphelp.py 2019-11-28 11:45:00.889048989 +0100 -+++ b/tools/xml2po/modes/gimphelp.py 2020-01-06 11:59:17.387855373 +0100 -@@ -31,7 +31,7 @@ try: - except ImportError: - from md5 import new as md5_new - --from docbook import docbookXmlMode -+from .docbook import docbookXmlMode - - class gimphelpXmlMode(docbookXmlMode): - """Class for special handling of gimp-help DocBook document types. -@@ -91,10 +91,10 @@ class gimphelpXmlMode(docbookXmlMode): - # Perform some tests when ran standalone - if __name__ == '__main__': - test = gimphelpXmlMode() -- print "Ignored tags : " + repr(test.getIgnoredTags()) -- print "Final tags : " + repr(test.getFinalTags()) -- print "Space-preserve tags: " + repr(test.getSpacePreserveTags()) -+ print("Ignored tags : " + repr(test.getIgnoredTags())) -+ print("Final tags : " + repr(test.getFinalTags())) -+ print("Space-preserve tags: " + repr(test.getSpacePreserveTags())) - -- print "Credits from string: '%s'" % test.getStringForTranslators() -- print "Explanation for credits:\n\t'%s'" % test.getCommentForTranslators() -+ print("Credits from string: '%s'" % test.getStringForTranslators()) -+ print("Explanation for credits:\n\t'%s'" % test.getCommentForTranslators()) - -diff -urNp a/tools/xml2po.py b/tools/xml2po.py ---- a/tools/xml2po.py 2019-11-28 11:45:00.889048989 +0100 -+++ b/tools/xml2po.py 2020-01-06 11:59:17.387855373 +0100 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python2 -+#!/usr/bin/env python3 - # -*- encoding: utf-8 -*- - # Copyright (c) 2004, 2005, 2006 Danilo Ĺ egan . - # Copyright (c) 2009 Claude Paroz . -@@ -41,9 +41,9 @@ NULL_STRING = '/dev/null' - if not os.path.exists('/dev/null'): NULL_STRING = 'NUL' - - def usage (with_help = False): -- print >> sys.stderr, "Usage: %s [OPTIONS] [XMLFILE]..." % (sys.argv[0]) -+ print("Usage: %s [OPTIONS] [XMLFILE]..." % (sys.argv[0]), file=sys.stderr) - if with_help: -- print >> sys.stderr, """ -+ print(""" - OPTIONS may be some of: - -a --automatic-tags Automatically decides if tags are to be considered - "final" or not -@@ -72,7 +72,7 @@ EXAMPLES: - using -p option for each XML file: - %(command)s -p de.po chapter1.xml > chapter1.de.xml - %(command)s -p de.po chapter2.xml > chapter2.de.xml --""" % {'command': sys.argv[0]} -+""" % {'command': sys.argv[0]}, file=sys.stderr) - - - def main(argv): -@@ -148,7 +148,7 @@ def main(argv): - sys.exit(0) - - if operation == 'update' and output != "-": -- print >> sys.stderr, "Option '-o' is not yet supported when updating translations directly. Ignoring this option." -+ print("Option '-o' is not yet supported when updating translations directly. Ignoring this option.", file=sys.stderr) - - # Treat remaining arguments as XML files - filenames = [] -@@ -158,16 +158,16 @@ def main(argv): - try: - xml2po_main = Main(default_mode, operation, output, options) - except IOError: -- print >> sys.stderr, "Error: cannot open file %s for writing." % (output) -+ print("Error: cannot open file %s for writing." % (output), file=sys.stderr) - sys.exit(5) - - if operation == 'merge': - if len(filenames) > 1: -- print >> sys.stderr, "Error: You can merge translations with only one XML file at a time." -+ print("Error: You can merge translations with only one XML file at a time.", file=sys.stderr) - sys.exit(2) - - if not mofile: -- print >> sys.stderr, "Error: You must specify MO file when merging translations." -+ print("Error: You must specify MO file when merging translations.", file=sys.stderr) - sys.exit(3) - - xml2po_main.merge(mofile, filenames[0]) diff --git a/gimp-help.spec b/gimp-help.spec index 8d1add6..81a7510 100644 --- a/gimp-help.spec +++ b/gimp-help.spec @@ -1,14 +1,14 @@ # NOTE: en/English is in the main package -# LANGUAGES: ca,Catalan da,Danish de,German el,Greek en_GB,British_English es,Spanish fr,French it,Italian ja,Japanese ko,Korean nl,Dutch nn,Norwegian_Nynorsk pt_BR,Brazilian_Portuguese ru,Russian sl,Slovenian sv,Swedish zh_CN,Simplified_Chinese +# LANGUAGES: ca,Catalan cs,Czech da,Danish de,German el,Greek en_GB,British_English es,Spanish fa,Farsi fi,Finnish fr,French hr,Croatian hu,Hungarian it,Italian ja,Japanese ko,Korean lt,Lithuanian nl,Dutch nn,Norwegian_Nynorsk pt,Portuguese pt_BR,Brazilian_Portuguese ro,Romanian ru,Russian sl,Slovenian sv,Swedish uk,Ukrainian zh_CN,Simplified_Chinese %global gimpsubver 2.0 Summary: Help files for GIMP Name: gimp-help -Version: 2.10.0 +Version: 2.10.34 Release: %autorelease License: GFDL-1.2-invariants-only -URL: http://docs.gimp.org/ -Source0: http://download.gimp.org/pub/gimp/help/gimp-help-%{version}.tar.bz2 +URL: https://docs.gimp.org/ +Source0: https://download.gimp.org/pub/gimp/help/gimp-help-%{version}.tar.bz2 BuildArch: noarch BuildRequires: dblatex # BuildRequires: docbook2odf [orphaned] @@ -26,18 +26,9 @@ BuildRequires: python3 BuildRequires: make Requires: gimp >= 2:2.10 # BEGIN: OBSOLETE LANGUAGES -Obsoletes: gimp-help-sl < 2.10.0-1%{?dist} -Conflicts: gimp-help-sl < 2.10.0-1%{?dist} -Obsoletes: gimp-help-sv < 2.10.0-1%{?dist} -Conflicts: gimp-help-sv < 2.10.0-1%{?dist} -Obsoletes: gimp-help-hr < 2.10.0-1%{?dist} -Conflicts: gimp-help-hr < 2.10.0-1%{?dist} -Obsoletes: gimp-help-lt < 2.10.0-1%{?dist} -Conflicts: gimp-help-lt < 2.10.0-1%{?dist} Obsoletes: gimp-help-pl < 2.10.0-1%{?dist} Conflicts: gimp-help-pl < 2.10.0-1%{?dist} # END: OBSOLETE LANGUAGES -Patch1: gimp-help-2.10.0-python3.patch %description This package contains a user manual written for the GNU Image Manipulation Program. @@ -51,6 +42,14 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-c %description ca Catalan language support for gimp-help. +%package cs +Summary: Czech (cs) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-cs) + +%description cs +Czech language support for gimp-help. + %package da Summary: Danish (da) language support for gimp-help Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} @@ -91,6 +90,14 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-e %description es Spanish language support for gimp-help. +%package fa +Summary: Farsi (fa) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-fa) + +%description fa +Farsi language support for gimp-help. + %package fi Summary: Finnish (fi) language support for gimp-help Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} @@ -107,6 +114,22 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-f %description fr French language support for gimp-help. +%package hr +Summary: Croatian (hr) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-hr) + +%description hr +Croatian language support for gimp-help. + +%package hu +Summary: Hungarian (hu) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-hu) + +%description hu +Hungarian language support for gimp-help. + %package it Summary: Italian (it) language support for gimp-help Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} @@ -131,6 +154,14 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-k %description ko Korean language support for gimp-help. +%package lt +Summary: Lithuanian (lt) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-lt) + +%description lt +Lithuanian language support for gimp-help. + %package nl Summary: Dutch (nl) language support for gimp-help Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} @@ -147,6 +178,14 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-n %description nn Norwegian Nynorsk language support for gimp-help. +%package pt +Summary: Portuguese (pt) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-pt) + +%description pt +Portuguese language support for gimp-help. + %package pt_BR Summary: Brazilian Portuguese (pt_BR) language support for gimp-help Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} @@ -171,6 +210,30 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-r %description ru Russian language support for gimp-help. +%package sl +Summary: Slovenian (sl) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-sl) + +%description sl +Slovenian language support for gimp-help. + +%package sv +Summary: Swedish (sv) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-sv) + +%description sv +Swedish language support for gimp-help. + +%package uk +Summary: Ukrainian (uk) language support for gimp-help +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-uk) + +%description uk +Ukrainian language support for gimp-help. + %package zh_CN Summary: Simplified Chinese (zh_CN) language support for gimp-help Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} @@ -183,13 +246,10 @@ Simplified Chinese language support for gimp-help. %prep %setup -q -%patch 1 -p1 %build %configure -# don't attempt parallel builds, they tend to produce bad output without -# failing -make +make %{?_smp_mflags} %install make DESTDIR=%{buildroot} install @@ -199,8 +259,19 @@ f="$PWD/files.list" pushd %{buildroot}%{_datadir}/gimp/%{gimpsubver}/help for lang in *; do + [ "$lang" = "pdf" ] && continue echo "%%lang($lang) %%{_datadir}/gimp/%%{gimpsubver}/help/$lang" > "$f.$lang" done +cd pdf +for pdf in *.pdf; do + l="${pdf%.pdf}" + l="${l#gimp-keys-}" + if [ ! -d "../$l" ]; then + rm -f "$pdf" + else + echo "%%lang($lang) %%{_datadir}/gimp/%%{gimpsubver}/help/$pdf" >> "$f.$lang" + fi +done popd %files @@ -211,21 +282,30 @@ popd # BEGIN: LANGUAGE FILE LISTS %files ca -f files.list.ca +%files cs -f files.list.cs %files da -f files.list.da %files de -f files.list.de %files el -f files.list.el %files en_GB -f files.list.en_GB %files es -f files.list.es +%files fa -f files.list.fa %files fi -f files.list.fi %files fr -f files.list.fr +%files hr -f files.list.hr +%files hu -f files.list.hu %files it -f files.list.it %files ja -f files.list.ja %files ko -f files.list.ko +%files lt -f files.list.lt %files nl -f files.list.nl %files nn -f files.list.nn +%files pt -f files.list.pt %files pt_BR -f files.list.pt_BR %files ro -f files.list.ro %files ru -f files.list.ru +%files sl -f files.list.sl +%files sv -f files.list.sv +%files uk -f files.list.uk %files zh_CN -f files.list.zh_CN # END: LANGUAGE FILE LISTS diff --git a/sources b/sources index dc4dc00..af0735e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gimp-help-2.10.0.tar.bz2) = 2f6d5e7cf0c3b4960c92074ef02d51a1d089c148f6453a66e453a3084cdede280f72c6b77d35f66777adbda8aa273ec2a472fb538142e51bb263c3077eec473a +SHA512 (gimp-help-2.10.34.tar.bz2) = 316d558f66c96a0d2d0f17baf700020b76aa221f9e220ddfc3e85b10c82b20b9c1cf36893776a342e90af5170e0102eb743b79663451581444d4f881256cf377