Accepting request 555594 from GNOME:Factory

OBS-URL: https://build.opensuse.org/request/show/555594
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gtk-doc?expand=0&rev=39
This commit is contained in:
Dominique Leuenberger 2017-12-11 17:55:42 +00:00 committed by Git OBS Bridge
commit ef48086731
7 changed files with 19 additions and 722 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bff3f44467b1d39775e94fad545f050faa7e8d68dc6a31aef5024ba3c2d7f2b7
size 706432

3
gtk-doc-1.27.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e26bd3f7080c749b1cb66c46c6bf8239e2f320a949964fb9c6d56e1b0c6d9a6f
size 719320

View File

@ -1,47 +0,0 @@
From c08cc78562c59082fc83b55b58747177510b7a70 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Fri, 11 Aug 2017 21:06:59 +0200
Subject: gtk-doc.make: Generate main sgml file by waiting on mkdb
The 'empty' test fails on some machines when doing a parallel build, as
make cannot find tester-docs.xml. Add a rule to ensure make waits for
gtkdoc-mkdb to generate the file.
This will also fix first time parallel builds.
https://bugzilla.gnome.org/show_bug.cgi?id=786174
---
gtk-doc.make | 3 +++
tests/gtk-doc.make | 3 +++
2 files changed, 6 insertions(+)
diff --git a/gtk-doc.make b/gtk-doc.make
index e5777b6..d2a8b33 100644
--- a/gtk-doc.make
+++ b/gtk-doc.make
@@ -152,6 +152,9 @@ sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HF
sgml.stamp: sgml-build.stamp
@true
+$(DOC_MAIN_SGML_FILE): sgml-build.stamp
+ @true
+
xml/gtkdocentities.ent: Makefile
$(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \
echo "<!ENTITY package \"$(PACKAGE)\">"; \
diff --git a/tests/gtk-doc.make b/tests/gtk-doc.make
index 808fda4..cb8e164 100644
--- a/tests/gtk-doc.make
+++ b/tests/gtk-doc.make
@@ -141,6 +141,9 @@ sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HF
sgml.stamp: sgml-build.stamp
@true
+$(DOC_MAIN_SGML_FILE): sgml-build.stamp
+ @true
+
xml/gtkdocentities.ent: Makefile
@$(MKDIR_P) $(@D) && ( \
echo "<!ENTITY package \"$(PACKAGE)\">"; \
--
cgit v0.12

View File

@ -1,34 +0,0 @@
From 2d364e50140d17cf455365df537e5976d5d480d2 Mon Sep 17 00:00:00 2001
From: Dominique Leuenberger <dimstar@opensuse.org>
Date: Sat, 2 Dec 2017 16:11:50 +0100
Subject: [PATCH] Use logging infrastructure for LogWarning
Using pure 'print' statements often fail if we have a message containing
UTF-8, but output on a terminal/pipe not supporting UTF-8.
Instead of trying to en/decode (and likely fail all the time) use logging.warning
This causes a slight change of the format, as the log is prefixed with WARNING:root
but that seems better than crashing
https://bugzilla.gnome.org/show_bug.cgi?id=791131
---
gtkdoc/common.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gtkdoc/common.py b/gtkdoc/common.py
index ca82263..286f7f3 100644
--- a/gtkdoc/common.py
+++ b/gtkdoc/common.py
@@ -148,7 +148,7 @@ def LogWarning(filename, line, message):
filename = filename or "unknown"
# TODO: write to stderr
- print ("%s:%d: warning: %s" % (filename, line, message))
+ logging.warning ("%s:%d: warning: %s" % (filename, line, message))
def CreateValidSGMLID(xml_id):
--
2.15.0

View File

@ -1,626 +0,0 @@
commit 8ad03e164f3091df68a9fed5492b54cd61d0ac51
Author: Stefan Sauer <ensonic@users.sf.net>
Date: Thu Oct 26 22:16:57 2017 +0200
mkdb: don't uses sys.exit in library
Just print a warning and go on.
diff --git a/gtkdoc/mkdb.py b/gtkdoc/mkdb.py
index 3b0bc15..d89d078 100644
--- a/gtkdoc/mkdb.py
+++ b/gtkdoc/mkdb.py
@@ -31,7 +31,6 @@ import logging
import os
import re
import string
-import sys
from . import common, md_to_db
@@ -1123,7 +1122,8 @@ def OutputDeclaration(symbol, declaration):
elif dtype == 'USER_FUNCTION':
return OutputFunction(symbol, declaration, dtype)
else:
- sys.exit("Unknown symbol type " + dtype)
+ logging.warning("Unknown symbol type %s for symbol %s", dtype, symbol)
+ return ('', '')
def OutputSymbolTraits(symbol):
commit a4a719606bfa0abdea794f6a7d4f46b3e3fcb77e
Author: Stefan Sauer <ensonic@users.sf.net>
Date: Thu Oct 26 21:06:17 2017 +0200
mkdb: fix missing info on typedefs
This was a regression from the perl->python port.
diff --git a/gtkdoc/mkdb.py b/gtkdoc/mkdb.py
index 7bb6d3e..3b0bc15 100644
--- a/gtkdoc/mkdb.py
+++ b/gtkdoc/mkdb.py
@@ -1281,7 +1281,7 @@ def OutputTypedef(symbol, declaration):
desc += "\n"
desc += OutputSymbolExtraLinks(symbol)
- if symbol in DeclarationConditional:
+ if symbol not in DeclarationConditional:
decl_out = CreateValidSGML(declaration)
desc += "<programlisting language=\"C\">%s</programlisting>\n" % decl_out
commit 21358879180c9e988fc0473840ab8ab673f69513
Author: Christoph Reiter <reiter.christoph@gmail.com>
Date: Wed Oct 25 21:27:05 2017 +0200
mkdb: Mark multiple Unicode strings as such
These are utf-8 encoded byte strings under Python 2 and when concatonated
with unicode objects get auto-decoded using the default ascii encoding,
which fails as they are not ascii.
https://bugzilla.gnome.org/show_bug.cgi?id=787862
diff --git a/gtkdoc/mkdb.py b/gtkdoc/mkdb.py
index 6c1538f..7bb6d3e 100644
--- a/gtkdoc/mkdb.py
+++ b/gtkdoc/mkdb.py
@@ -2784,14 +2784,14 @@ def MakeHashXRef(symbol, tag):
if '::' in symbol:
o, s = symbol.split('::', 1)
symbol = '%s-%s' % (o, s)
- text = '“' + s + '”'
+ text = u'“' + s + u'”'
# If the symbol is in the form "Object:property", then change the symbol to
# "Object--property" and use "property" as the text.
if ':' in symbol:
o, p = symbol.split(':', 1)
symbol = '%s--%s' % (o, p)
- text = '“' + p + '”'
+ text = u'“' + p + u'”'
if tag != '':
text = tagify(text, tag)
@@ -3311,7 +3311,7 @@ def GetSignals(gobject):
symbol = '%s::%s' % (gobject, name)
sid = common.CreateValidSGMLID('%s-%s' % (gobject, name))
- desc += "<refsect2 id=\"%s\" role=\"signal\"><title>The <literal>“%s”</literal> signal</title>\n" % (
+ desc += u"<refsect2 id=\"%s\" role=\"signal\"><title>The <literal>“%s”</literal> signal</title>\n" % (
sid, name)
desc += MakeIndexterms(symbol, sid)
desc += "\n"
@@ -3546,13 +3546,13 @@ def GetArgs(gobject):
arg_synop = "<row><entry role=\"property_type\">%s</entry><entry role=\"property_name\"><link linkend=\"%s\">%s</link></entry><entry role=\"property_flags\">%s</entry></row>\n" % (
type_output, sid, name, flags_string)
- arg_desc = "<refsect2 id=\"%s\" role=\"property\"><title>The <literal>“%s”</literal> %s</title>\n" % (
+ arg_desc = u"<refsect2 id=\"%s\" role=\"property\"><title>The <literal>“%s”</literal> %s</title>\n" % (
sid, name, kind)
arg_desc += MakeIndexterms(symbol, sid)
arg_desc += "\n"
arg_desc += OutputSymbolExtraLinks(symbol)
- arg_desc += "<programlisting> “%s”%s %s</programlisting>\n" % (name, pad1, type_output)
+ arg_desc += u"<programlisting> “%s”%s %s</programlisting>\n" % (name, pad1, type_output)
arg_desc += blurb
if symbol in SymbolAnnotations:
param_desc = SymbolAnnotations[symbol]
commit 1eeec38a9a06a9956cdab9789cbd2ea105866198
Author: Christoph Reiter <reiter.christoph@gmail.com>
Date: Mon Sep 18 22:49:09 2017 +0200
Always open files in text mode and always use utf-8
Introduces a common.open_text() helper with saner defaults for opening
text files across Python versions.
open() defaults to the locale encoding which on a properly configured
Unix is utf-8, but cp-1252 on Windows which can't handle all of Unicode.
Instead of using the default always use utf-8 for text files.
To reduce the difference of types processed by Python 2 vs 3 use
codecs.open() to open text files in text mode on Python 2. The
resulting file object will return unicode like on Python 3, but still
allows passing in ASCII only str.
Also fixes a few missing file.close() operations, which is important on
Windows as non-closed files can't be renamed/deleted on Windows.
https://bugzilla.gnome.org/show_bug.cgi?id=787862
diff --git a/gtkdoc/check.py b/gtkdoc/check.py
index 0a58b0c..7f32b60 100755
--- a/gtkdoc/check.py
+++ b/gtkdoc/check.py
@@ -32,6 +32,8 @@ import os
import re
from glob import glob
+from . import common
+
class FileFormatError(Exception):
pass
@@ -46,14 +48,14 @@ def grep(regexp, lines, what):
def check_empty(filename):
- with open(filename) as f:
+ with open(filename, "rb") as f:
count = sum(1 for line in f if line.strip())
return count
def check_includes(filename):
# Check that each XML file in the xml directory is included in doc_main_file
- with open(filename) as f:
+ with common.open_text(filename) as f:
lines = f.read().splitlines()
num_missing = 0
for include in glob('xml/*.xml'):
@@ -73,7 +75,7 @@ def get_variable(env, lines, variable):
def read_file(filename):
- with open(filename) as f:
+ with common.open_text(filename) as f:
return f.read().splitlines()
diff --git a/gtkdoc/common.py b/gtkdoc/common.py
index 50c9f5f..9dfebef 100644
--- a/gtkdoc/common.py
+++ b/gtkdoc/common.py
@@ -28,10 +28,35 @@ import os
import re
import subprocess
import sys
+import six
+import codecs
from . import config
+def open_text(filename, mode="r", encoding="utf-8"):
+ """An open() which removes some differences between Python 2 and 3 and
+ has saner defaults.
+
+ Unlike the builtin open by default utf-8 is use and not the locale
+ encoding (which is ANSI on Windows for example, not very helpful)
+
+ For Python 2, files are opened in text mode like with Python 3.
+ """
+
+ if mode not in ("r", "w"):
+ raise ValueError("mode %r not supported, must be 'r' or 'w'" % mode)
+
+ if six.PY3:
+ return open(filename, mode, encoding=encoding)
+ else:
+ # We can't use io.open() here as its write method is too strict and
+ # only allows unicode instances and not everything in the codebase
+ # forces unicode at the moment. codecs.open() on the other hand
+ # happily takes ASCII str and decodes it.
+ return codecs.open(filename, mode, encoding=encoding)
+
+
def setup_logging():
"""Check GTKDOC_TRACE environment variable.
diff --git a/gtkdoc/fixxref.py b/gtkdoc/fixxref.py
index 3027c10..164b008 100755
--- a/gtkdoc/fixxref.py
+++ b/gtkdoc/fixxref.py
@@ -175,7 +175,7 @@ def ReadDevhelp(file, use_absolute_links):
logging.info('Scanning index file=%s, absolute=%d, dir=%s', file, use_absolute_links, dir)
- for line in open(file):
+ for line in common.open_text(file):
m = re.search(r' link="([^#]*)#([^"]*)"', line)
if m:
link = m.group(1) + '#' + m.group(2)
@@ -184,7 +184,7 @@ def ReadDevhelp(file, use_absolute_links):
def ReadSections(options):
- for line in open(options.module + '-sections.txt'):
+ for line in common.open_text(options.module + '-sections.txt'):
m1 = re.search(r'^<SUBSECTION\s*(.*)>', line)
if line.startswith('#') or line.strip() == '':
continue
@@ -220,9 +220,7 @@ def FixCrossReferences(options):
def FixHTMLFile(options, file):
logging.info('Fixing file: %s', file)
- content = open(file).read()
- if sys.version_info < (3,):
- content = content.decode('utf-8')
+ content = common.open_text(file).read()
if config.highlight:
# FIXME: ideally we'd pass a clue about the example language to the highligher
@@ -266,9 +264,8 @@ def FixHTMLFile(options, file):
new_file = file + '.new'
content = '\n'.join(lines)
- if sys.version_info < (3,):
- content = content.encode('utf-8')
- open(new_file, 'w').write(content)
+ with common.open_text(new_file, 'w') as h:
+ h.write(content)
os.unlink(file)
os.rename(new_file, file)
@@ -381,7 +378,7 @@ def HighlightSourceVim(options, type, source):
script += "%s -n -e -u NONE -T xterm >/dev/null" % config.highlight
subprocess.check_call([script], shell=True)
- highlighted_source = open(temp_source_file + ".html").read()
+ highlighted_source = common.open_text(temp_source_file + ".html").read()
highlighted_source = re.sub(r'.*<pre\b[^>]*>\n', '', highlighted_source, flags=re.MULTILINE)
highlighted_source = re.sub(r'</pre>.*', '', highlighted_source, flags=re.MULTILINE)
diff --git a/gtkdoc/mkdb.py b/gtkdoc/mkdb.py
index e103138..6c1538f 100644
--- a/gtkdoc/mkdb.py
+++ b/gtkdoc/mkdb.py
@@ -302,7 +302,8 @@ def Run(options):
OutputSinceIndexes()
OutputAnnotationGlossary()
- open(os.path.join(ROOT_DIR, 'sgml.stamp'), 'w').write('timestamp')
+ with open(os.path.join(ROOT_DIR, 'sgml.stamp'), 'w') as h:
+ h.write('timestamp')
def OutputObjectList():
@@ -315,7 +316,7 @@ def OutputObjectList():
old_object_index = os.path.join(DB_OUTPUT_DIR, "object_index.sgml")
new_object_index = os.path.join(DB_OUTPUT_DIR, "object_index.new")
- OUTPUT = open(new_object_index, 'w')
+ OUTPUT = common.open_text(new_object_index, 'w')
OUTPUT.write('''%s
<informaltable pgwide="1" frame="none">
@@ -377,7 +378,7 @@ def OutputDB(file, options):
"""
logging.info("Reading: %s", file)
- INPUT = open(file)
+ INPUT = common.open_text(file)
filename = ''
book_top = ''
book_bottom = ''
@@ -1001,7 +1002,7 @@ def OutputAnnotationGlossary():
rerun = True
break
- OUTPUT = open(new_glossary, 'w')
+ OUTPUT = common.open_text(new_glossary, 'w')
OUTPUT.write('''%s
<glossary id="annotation-glossary">
@@ -1049,7 +1050,7 @@ def ReadKnownSymbols(file):
subsection = ''
logging.info("Reading: %s", file)
- INPUT = open(file)
+ INPUT = common.open_text(file)
for line in INPUT:
if line.startswith('#'):
continue
@@ -2157,7 +2158,7 @@ def OutputDBFile(file, title, section_id, includes, functions_synop, other_synop
old_db_file = os.path.join(DB_OUTPUT_DIR, file + '.xml')
new_db_file = os.path.join(DB_OUTPUT_DIR, file + '.xml.new')
- OUTPUT = open(new_db_file, 'w')
+ OUTPUT = common.open_text(new_db_file, 'w')
object_anchors = ''
for fobject in file_objects:
@@ -2324,7 +2325,7 @@ def OutputProgramDBFile(program, section_id):
old_db_file = os.path.join(DB_OUTPUT_DIR, program + ".xml")
new_db_file = os.path.join(DB_OUTPUT_DIR, program + ".xml.new")
- OUTPUT = open(new_db_file, 'w')
+ OUTPUT = common.open_text(new_db_file, 'w')
OUTPUT.write('''%s
<refentry id="%s">
@@ -2367,9 +2368,9 @@ def OutputExtraFile(file):
old_db_file = os.path.join(DB_OUTPUT_DIR, basename)
new_db_file = os.path.join(DB_OUTPUT_DIR, basename + ".new")
- contents = open(file).read()
+ contents = common.open_text(file).read()
- OUTPUT = open(new_db_file, 'w')
+ OUTPUT = common.open_text(new_db_file, 'w')
OUTPUT.write(ExpandAbbreviations(basename + " file", contents))
OUTPUT.close()
@@ -2378,7 +2379,7 @@ def OutputExtraFile(file):
def GetDocbookHeader(main_file):
if os.path.exists(main_file):
- INPUT = open(main_file)
+ INPUT = common.open_text(main_file)
header = ''
for line in INPUT:
if re.search(r'^\s*<(book|chapter|article)', line):
@@ -2421,7 +2422,7 @@ def OutputBook(main_file, book_top, book_bottom):
old_file = os.path.join(DB_OUTPUT_DIR, MODULE + "-doc.top")
new_file = os.path.join(DB_OUTPUT_DIR, MODULE + "-doc.top.new")
- OUTPUT = open(new_file, 'w')
+ OUTPUT = common.open_text(new_file, 'w')
OUTPUT.write(book_top)
OUTPUT.close()
@@ -2430,7 +2431,7 @@ def OutputBook(main_file, book_top, book_bottom):
old_file = os.path.join(DB_OUTPUT_DIR, MODULE + "-doc.bottom")
new_file = os.path.join(DB_OUTPUT_DIR, MODULE + "-doc.bottom.new")
- OUTPUT = open(new_file, 'w')
+ OUTPUT = common.open_text(new_file, 'w')
OUTPUT.write(book_bottom)
OUTPUT.close()
@@ -2439,7 +2440,7 @@ def OutputBook(main_file, book_top, book_bottom):
# If the main docbook file hasn't been created yet, we create it here.
# The user can tweak it later.
if main_file and not os.path.exists(main_file):
- OUTPUT = open(main_file, 'w')
+ OUTPUT = common.open_text(main_file, 'w')
logging.info("no master doc, create default one at: " + main_file)
@@ -3665,7 +3666,7 @@ def ScanSourceFile(ifile, ignore_files):
logging.info("Scanning source file: %s", ifile)
- SRCFILE = open(ifile)
+ SRCFILE = common.open_text(ifile)
in_comment_block = False
symbol = None
in_part = ''
@@ -3983,7 +3984,7 @@ def OutputMissingDocumentation():
buffer_deprecated = ''
buffer_descriptions = ''
- UNDOCUMENTED = open(new_undocumented_file, 'w')
+ UNDOCUMENTED = common.open_text(new_undocumented_file, 'w')
for symbol in sorted(iterkeys(AllSymbols)):
# FIXME: should we print common.LogWarnings for undocumented stuff?
@@ -4064,7 +4065,7 @@ def OutputUndeclaredSymbols():
old_undeclared_file = os.path.join(ROOT_DIR, MODULE + "-undeclared.txt")
new_undeclared_file = os.path.join(ROOT_DIR, MODULE + "-undeclared.new")
- UNDECLARED = open(new_undeclared_file, 'w')
+ UNDECLARED = common.open_text(new_undeclared_file, 'w')
if UndeclaredSymbols:
UNDECLARED.write("\n".join(sorted(iterkeys(UndeclaredSymbols))))
@@ -4089,7 +4090,7 @@ def OutputUnusedSymbols():
old_unused_file = os.path.join(ROOT_DIR, MODULE + "-unused.txt")
new_unused_file = os.path.join(ROOT_DIR, MODULE + "-unused.new")
- UNUSED = open(new_unused_file, 'w')
+ UNUSED = common.open_text(new_unused_file, 'w')
for symbol in sorted(iterkeys(Declarations)):
if not symbol in DeclarationOutput:
@@ -4110,7 +4111,7 @@ def OutputUnusedSymbols():
def OutputAllSymbols():
"""Outputs list of all symbols to a file."""
- SYMBOLS = open(os.path.join(ROOT_DIR, MODULE + "-symbols.txt"), 'w')
+ SYMBOLS = common.open_text(os.path.join(ROOT_DIR, MODULE + "-symbols.txt"), 'w')
for symbol in sorted(iterkeys(AllSymbols)):
SYMBOLS.write(symbol + "\n")
@@ -4119,7 +4120,7 @@ def OutputAllSymbols():
def OutputSymbolsWithoutSince():
"""Outputs list of all symbols without a since tag to a file."""
- SYMBOLS = open(os.path.join(ROOT_DIR, MODULE + "-nosince.txt"), 'w')
+ SYMBOLS = common.open_text(os.path.join(ROOT_DIR, MODULE + "-nosince.txt"), 'w')
for symbol in sorted(iterkeys(SourceSymbolDocs)):
if symbol in Since:
@@ -4257,7 +4258,7 @@ def ReadDeclarationsFile(ifile, override):
DeclarationConditional.clear()
DeclarationOutput.clear()
- INPUT = open(ifile)
+ INPUT = common.open_text(ifile)
declaration_type = ''
declaration_name = None
declaration = None
@@ -4371,7 +4372,7 @@ def ReadSignalsFile(ifile):
if not os.path.isfile(ifile):
return
- INPUT = open(ifile)
+ INPUT = common.open_text(ifile)
line_number = 0
for line in INPUT:
line_number += 1
@@ -4437,7 +4438,7 @@ def ReadObjectHierarchy(ifile):
logging.debug('no *-hierarchy.tx')
return
- INPUT = open(ifile)
+ INPUT = common.open_text(ifile)
# Only emit objects if they are supposed to be documented, or if
# they have documented children. To implement this, we maintain a
@@ -4488,7 +4489,7 @@ def ReadObjectHierarchy(ifile):
logging.debug('got %d entries for hierarchy', len(tree))
- OUTPUT = open(new_tree_index, 'w')
+ OUTPUT = common.open_text(new_tree_index, 'w')
OUTPUT.write(MakeDocHeader("screen") + "\n<screen>\n" + AddTreeLineArt(tree) + "\n</screen>\n")
OUTPUT.close()
@@ -4509,7 +4510,7 @@ def ReadInterfaces(ifile):
if not os.path.isfile(ifile):
return
- INPUT = open(ifile)
+ INPUT = common.open_text(ifile)
for line in INPUT:
line = line.strip()
@@ -4542,7 +4543,7 @@ def ReadPrerequisites(ifile):
if not os.path.isfile(ifile):
return
- INPUT = open(ifile)
+ INPUT = common.open_text(ifile)
for line in INPUT:
line = line.strip()
@@ -4593,7 +4594,7 @@ def ReadArgsFile(ifile):
if not os.path.isfile(ifile):
return
- INPUT = open(ifile)
+ INPUT = common.open_text(ifile)
line_number = 0
for line in INPUT:
line_number += 1
diff --git a/gtkdoc/mkhtml.py b/gtkdoc/mkhtml.py
index 80ddadf..3d03e0a 100644
--- a/gtkdoc/mkhtml.py
+++ b/gtkdoc/mkhtml.py
@@ -90,5 +90,6 @@ def run(options):
for f in glob(styledir + '/*.png') + glob(styledir + '/*.css'):
shutil.copy(f, '.')
- open('../html.stamp', 'w').write('timestamp')
+ with open('../html.stamp', 'w') as h:
+ h.write('timestamp')
return res
diff --git a/gtkdoc/mkpdf.py b/gtkdoc/mkpdf.py
index 5fd9ecb..485b487 100755
--- a/gtkdoc/mkpdf.py
+++ b/gtkdoc/mkpdf.py
@@ -37,7 +37,8 @@ def run_xsltproc(options, args):
command += ['--path', path]
pc = subprocess.Popen(command + args, stderr=subprocess.PIPE)
(o, stde) = pc.communicate()
- open('profile.txt', 'wb').write(stde)
+ with open('profile.txt', 'wb') as h:
+ h.write(stde)
return pc.returncode
@@ -118,5 +119,6 @@ def run(options):
print("dblatex or fop must be installed to use gtkdoc-mkpdf.")
res = 1
- open('pdf.stamp', 'w').write('timestamp')
+ with open('pdf.stamp', 'w') as h:
+ h.write('timestamp')
return res
diff --git a/gtkdoc/rebase.py b/gtkdoc/rebase.py
index e518586..b329c51 100755
--- a/gtkdoc/rebase.py
+++ b/gtkdoc/rebase.py
@@ -136,7 +136,7 @@ gunzip %s/%s
def ReadDevhelp(dir, file):
onlinedir = None
- for line in open(os.path.join(dir, file)):
+ for line in common.open_text(os.path.join(dir, file)):
# online must come before chapter/functions
if '<chapters' in line or '<functions' in line:
break
@@ -150,7 +150,7 @@ def ReadDevhelp(dir, file):
def ReadIndex(dir, file):
onlinedir = None
- for line in open(os.path.join(dir, file)):
+ for line in common.open_text(os.path.join(dir, file)):
# ONLINE must come before any ANCHORs
if '<ANCHOR' in line:
break
@@ -207,10 +207,11 @@ def RebaseFile(filename, options):
def repl_func(match):
return match.group(1) + RebaseLink(match.group(2), options) + match.group(3)
- contents = open(filename).read()
+ contents = common.open_text(filename).read()
processed = re.sub(regex, repl_func, contents)
newfilename = filename + '.new'
- open(newfilename, 'w').write(processed)
+ with common.open_text(newfilename, 'w') as h:
+ h.write(processed)
os.unlink(filename)
os.rename(newfilename, filename)
diff --git a/gtkdoc/scan.py b/gtkdoc/scan.py
index 0843519..a106e48 100644
--- a/gtkdoc/scan.py
+++ b/gtkdoc/scan.py
@@ -77,16 +77,16 @@ def Run(options):
for dir in options.source_dir:
ScanHeaders(dir, section_list, decl_list, get_types, options)
- with open(new_decl_list, 'w') as f:
+ with common.open_text(new_decl_list, 'w') as f:
for section in sorted(iterkeys(section_list)):
f.write(section_list[section])
- with open(new_decl, 'w') as f:
+ with common.open_text(new_decl, 'w') as f:
for decl in decl_list:
f.write(decl)
if options.rebuild_types:
- with open(new_types, 'w') as f:
+ with common.open_text(new_types, 'w') as f:
for func in sorted(get_types):
f.write(func + '\n')
@@ -226,7 +226,7 @@ def ScanHeader(input_file, section_list, decl_list, get_types, options):
logging.info('Scanning %s', input_file)
- for line in open(input_file):
+ for line in common.open_text(input_file):
# If this is a private header, skip it.
if re.search(r'%^\s*/\*\s*<\s*private_header\s*>\s*\*/', line):
return
diff --git a/gtkdoc/scangobj.py b/gtkdoc/scangobj.py
index e6db6cd..116270a 100644
--- a/gtkdoc/scangobj.py
+++ b/gtkdoc/scangobj.py
@@ -1185,7 +1185,7 @@ MAIN_CODE_END = """
def run(options):
c_file = options.module + '-scan.c'
- output = open(c_file, 'w')
+ output = common.open_text(c_file, 'w')
base_filename = os.path.join(options.output_dir, options.module)
old_signals_filename = base_filename + '.signals'
@@ -1206,7 +1206,7 @@ def run(options):
get_types = ""
ntypes = 1
- for line in open(options.types):
+ for line in common.open_text(options.types):
if line.startswith('#include'):
includes += line
elif line.startswith('%') or line.strip() == '':

View File

@ -1,3 +1,17 @@
-------------------------------------------------------------------
Sat Dec 9 18:26:11 UTC 2017 - zaitor@opensuse.org
- Update to version 1.27:
+ Finetune the python port.
+ Bugs fixed: bgo#773879, bgo#786174, bgo#787495, bgo#787768,
bgo#787862, bgo#788473, bgo#789531, bgo#790022, bgo#791131.
- Drop upstream fixed patches:
+ gtk-doc-fixxref-logging.patch.
+ gtk-doc-Generate-main-sgml.patch.
+ gtk-doc-open-docs-as-utf8.patch.
- Following the above, no longer pass autoreconf, not needed as we
do not carry any patches.
-------------------------------------------------------------------
Sat Dec 2 15:17:35 UTC 2017 - dimstar@opensuse.org

View File

@ -17,20 +17,14 @@
Name: gtk-doc
Version: 1.26
Version: 1.27
Release: 0
Summary: GTK+ DocBook Documentation Generator
License: GPL-2.0+
Group: Productivity/Publishing/SGML
Url: http://www.gtk.org/gtk-doc/
# When updating this package, please don't forget to update the gtk-doc.m4 Source in glib2.
Source: https://download.gnome.org/sources/gtk-doc/1.26/%{name}-%{version}.tar.xz
# PATCH-FIX-UPSTREAM gtk-doc-Generate-main-sgml.patch bgo#786174 -- Generate main sgml file by waiting on mkdb
Patch0: gtk-doc-Generate-main-sgml.patch
# PATCH-FIX-UPSTREAM gtk-doc-open-docs-as-utf8.patch dimstar@opensuse.org -- Always open files using utf-8
Patch1: gtk-doc-open-docs-as-utf8.patch
# PATCH-FIX-UPSTREAM gtk-doc-fixxref-logging.patch bgo#791131 dimstar@opensuse.org -- Use logging infrastructure for LogWarning
Patch2: gtk-doc-fixxref-logging.patch
Source: http://download.gnome.org/sources/gtk-doc/1.27/%{name}-%{version}.tar.xz
BuildRequires: docbook-xsl-stylesheets
BuildRequires: libtool
BuildRequires: libxml2-tools
@ -63,12 +57,8 @@ generate the documentation for GLib, Gtk+, and GNOME.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%build
autoreconf -fiv
%configure PYTHON=%{_bindir}/python3
make %{?_smp_mflags}