From 561199e5e8f66a610f1b867b4b40321de851524a Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Mon, 27 Aug 2018 10:37:17 +0300 Subject: [PATCH 1/6] Make generated texinfo files reproducible by sorting the anchors --- sphinx/writers/texinfo.py | 2 +- tests/test_build_texinfo.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 051ce9de6..cbb1b80b8 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -612,7 +612,7 @@ class TexinfoTranslator(nodes.NodeVisitor): node_name = node['node_name'] pointers = tuple([node_name] + self.rellinks[node_name]) self.body.append('\n@node %s,%s,%s,%s\n' % pointers) # type: ignore - for id in self.next_section_ids: + for id in sorted(self.next_section_ids): self.add_anchor(id, node) self.next_section_ids.clear() diff --git a/tests/test_build_texinfo.py b/tests/test_build_texinfo.py index 6b6892594..b1fd8c2a9 100644 --- a/tests/test_build_texinfo.py +++ b/tests/test_build_texinfo.py @@ -50,6 +50,10 @@ def test_texinfo_warnings(app, status, warning): def test_texinfo(app, status, warning): TexinfoTranslator.ignore_missing_images = True app.builder.build_all() + result = (app.outdir / 'SphinxTests.texi').text(encoding='utf8') + assert ('@anchor{markup doc}@anchor{12}' + '@anchor{markup id1}@anchor{13}' + '@anchor{markup testing-various-markup}@anchor{14}' in result) # now, try to run makeinfo over it cwd = os.getcwd() os.chdir(app.outdir) From 36a9c813e679cd497c45945d86eb92980c493066 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 30 Aug 2018 23:47:02 +0900 Subject: [PATCH 2/6] Update CHANGES for PR #5359 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index aca9836b3..cde111a01 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,8 @@ Deprecated Features added -------------- +* #5359: Make generated texinfo files reproducible by sorting the anchors + Bugs fixed ---------- From 5e22ff90453eddb36aa16f0b2f6543a618bfac14 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 29 Aug 2018 23:56:05 +0900 Subject: [PATCH 3/6] Fix #5361: crashed on incremental build if document uses include directive --- CHANGES | 2 ++ sphinx/environment/__init__.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index cde111a01..08708eb80 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,8 @@ Features added Bugs fixed ---------- +* #5361: crashed on incremental build if document uses include directive + Testing -------- diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index 2a48e5b4e..d5479d46f 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -72,7 +72,7 @@ default_settings = { # or changed to properly invalidate pickle files. # # NOTE: increase base version by 2 to have distinct numbers for Py2 and 3 -ENV_VERSION = 52 + (sys.version_info[0] - 2) +ENV_VERSION = 54 + (sys.version_info[0] - 2) versioning_conditions = { From 9d7b1b756a4db76f9a49cbcd87e74ace61009323 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 2 Sep 2018 16:33:26 +0900 Subject: [PATCH 4/6] refactor: Use set.union() to combine set objects --- sphinx/environment/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index d5479d46f..e0110bdda 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -22,7 +22,7 @@ from os import path from docutils.frontend import OptionParser from docutils.utils import Reporter, get_source_line from six import BytesIO, itervalues, class_types, next -from six.moves import cPickle as pickle, reduce +from six.moves import cPickle as pickle from sphinx import addnodes, versioning from sphinx.deprecation import RemovedInSphinx20Warning @@ -914,7 +914,7 @@ class BuildEnvironment(object): def check_consistency(self): # type: () -> None """Do consistency checks.""" - included = reduce(lambda x, y: x | y, self.included.values(), set()) # type: Set[unicode] # NOQA + included = set().union(*self.included.values()) # type: ignore for docname in sorted(self.all_docs): if docname not in self.files_to_rebuild: if docname == self.config.master_doc: From 1cd87a11ef8df6b783d2e48d9668370a4e1640c9 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 5 Sep 2018 23:05:02 +0900 Subject: [PATCH 5/6] Bump to 1.7.9 final --- CHANGES | 16 ++-------------- sphinx/__init__.py | 4 ++-- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/CHANGES b/CHANGES index 08708eb80..9992e9194 100644 --- a/CHANGES +++ b/CHANGES @@ -1,14 +1,5 @@ -Release 1.7.9 (in development) -============================== - -Dependencies ------------- - -Incompatible changes --------------------- - -Deprecated ----------- +Release 1.7.9 (released Sep 05, 2018) +===================================== Features added -------------- @@ -20,9 +11,6 @@ Bugs fixed * #5361: crashed on incremental build if document uses include directive -Testing --------- - Release 1.7.8 (released Aug 29, 2018) ===================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 144ece042..ab0625549 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -31,13 +31,13 @@ if 'PYTHONWARNINGS' not in os.environ: warnings.filterwarnings('ignore', "'U' mode is deprecated", DeprecationWarning, module='docutils.io') -__version__ = '1.7.9+' +__version__ = '1.7.9' __released__ = '1.7.9' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 7, 9, 'beta', 0) +version_info = (1, 7, 9, 'final', 0) package_dir = path.abspath(path.dirname(__file__)) From 403f7edb171970041193c9800db53daa4c6bbb50 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 5 Sep 2018 23:07:09 +0900 Subject: [PATCH 6/6] Bump version --- CHANGES | 21 +++++++++++++++++++++ sphinx/__init__.py | 6 +++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 9992e9194..044ea5906 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,24 @@ +Release 1.7.10 (in development) +=============================== + +Dependencies +------------ + +Incompatible changes +-------------------- + +Deprecated +---------- + +Features added +-------------- + +Bugs fixed +---------- + +Testing +-------- + Release 1.7.9 (released Sep 05, 2018) ===================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index ab0625549..3af1733cd 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -31,13 +31,13 @@ if 'PYTHONWARNINGS' not in os.environ: warnings.filterwarnings('ignore', "'U' mode is deprecated", DeprecationWarning, module='docutils.io') -__version__ = '1.7.9' -__released__ = '1.7.9' # used when Sphinx builds its own docs +__version__ = '1.7.10+' +__released__ = '1.7.10' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 7, 9, 'final', 0) +version_info = (1, 7, 10, 'beta', 0) package_dir = path.abspath(path.dirname(__file__))