Date: Thursday, June 27, 2019 @ 06:31:11 Author: arojas Revision: 484666
Update to 8.8 Modified: sagemath-doc/trunk/PKGBUILD Deleted: sagemath-doc/trunk/sagemath-doc-sphinx-1.8.patch -------------------------------+ PKGBUILD | 24 +- sagemath-doc-sphinx-1.8.patch | 332 ---------------------------------------- 2 files changed, 10 insertions(+), 346 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2019-06-27 06:00:38 UTC (rev 484665) +++ PKGBUILD 2019-06-27 06:31:11 UTC (rev 484666) @@ -1,7 +1,7 @@ # Maintainer: Antonio Rojas <[email protected]> pkgname=sagemath-doc -pkgver=8.7 +pkgver=8.8 pkgrel=1 pkgdesc="HTML documentation and inline help for SageMath" arch=(any) @@ -11,12 +11,10 @@ makedepends=(sagemath python2-pyzmq python2-docutils python2-jupyter_client python2-pkgconfig cython2 python2-ipywidgets) source=(sagemath-$pkgver.tar.gz::"https://github.com/sagemath/sage/archive/$pkgver.tar.gz" docbuild_main.patch - sagemath-doc-sphinx-1.8.patch sagemath-doc-segfault.patch sagemath-ecl-sigfpe.patch) -sha256sums=('263c3b3fc956b8bebc532f3b51e68c1b0d559d3b7e7c9fadffdfc0f4dbae18ab' +sha256sums=('d012ff4f0f34e086fcaf576e25220fc647826116c69b62b887bc0b8ced5c1e9f' 'ea5e17bb7a7cb36a22e5e3872fcc2585852bc971c4b139b0b2cd69a36c1b009b' - 'ec6835d555056e1f20684de015f43c46cff62a132c9cd6f5ea7243c6bacd3f1e' '2ee218610001f906015df647881581ff1f7eb0acf923b79b72056965129bac22' 'a42f3b152b1aedb8abf16bc70971419919d1fe30328574e7fef8305f9d07d938') @@ -28,8 +26,6 @@ # use sage_setup imports from sagemath source, but use system sage ones (which include compiled modules) mkdir -p local-python ln -sr src/sage_setup local-python -# fix build with sphinx 1.8 - patch -p1 -i ../sagemath-doc-sphinx-1.8.patch # Fix segfault when pari is compiled with threads https://trac.sagemath.org/ticket/26608 patch -p1 -i ../sagemath-doc-segfault.patch # Fix SIGFPE crashes with ecl 16.1.3 https://trac.sagemath.org/ticket/22191 @@ -39,14 +35,14 @@ build() { cd sage-$pkgver/src - export SAGE_LOCAL="/usr" - export SAGE_ROOT="/usr" - export SAGE_SRC="$PWD" - export SAGE_DOC_SRC="$SAGE_SRC"/doc - export SAGE_DOC="$SAGE_DOC_SRC" - export SAGE_DOC_MATHJAX=yes - export PYTHONPATH="$srcdir"/sage-$pkgver/local-python - export SAGE_NUM_THREADS=10 + export SAGE_LOCAL="/usr" \ + SAGE_ROOT="/usr" \ + SAGE_SRC="$PWD" \ + SAGE_DOC_SRC="$PWD"/doc \ + SAGE_DOC="$PWD"/doc \ + SAGE_DOC_MATHJAX=yes \ + PYTHONPATH="$srcdir"/sage-$pkgver/local-python \ + SAGE_NUM_THREADS=10 python2 sage_setup/docbuild --no-pdf-links all html } Deleted: sagemath-doc-sphinx-1.8.patch =================================================================== --- sagemath-doc-sphinx-1.8.patch 2019-06-27 06:00:38 UTC (rev 484665) +++ sagemath-doc-sphinx-1.8.patch 2019-06-27 06:31:11 UTC (rev 484666) @@ -1,332 +0,0 @@ -diff --git a/src/doc/common/conf.py b/src/doc/common/conf.py -index 70dd17f..e9a3dae 100644 ---- a/src/doc/common/conf.py -+++ b/src/doc/common/conf.py -@@ -4,6 +4,8 @@ import sage.version - from sage.misc.sagedoc import extlinks - import dateutil.parser - from six import iteritems -+from docutils import nodes -+from docutils.transforms import Transform - - # If your extensions are in another directory, add it here. - sys.path.append(os.path.join(SAGE_SRC, "sage_setup", "docbuild", "ext")) -@@ -669,7 +671,7 @@ def call_intersphinx(app, env, node, contnode): - sage: for line in open(thematic_index).readlines(): # optional - dochtml - ....: if "padics" in line: - ....: _ = sys.stdout.write(line) -- <li><a class="reference external" href="../reference/padics/sage/rings/padics/tutorial.html#sage-rings-padics-tutorial" title="(in Sage Reference Manual: p-Adics v...)"><span>Introduction to the -adics</span></a></li> -+ <li><a class="reference external" href="../reference/padics/sage/rings/padics/tutorial.html#sage-rings-padics-tutorial" title="(in Sage Reference Manual: p-Adics v...)"><span>Introduction to the p-adics</span></a></li> - """ - debug_inf(app, "???? Trying intersphinx for %s" % node['reftarget']) - builder = app.builder -diff --git a/src/sage/misc/sphinxify.py b/src/sage/misc/sphinxify.py -index 6e21344..4270294 100644 ---- a/src/sage/misc/sphinxify.py -+++ b/src/sage/misc/sphinxify.py -@@ -68,20 +68,20 @@ def sphinxify(docstring, format='html'): - sage: assert n == len(sys.path) - """ - srcdir = mkdtemp() -- base_name = os.path.join(srcdir, 'docstring') -- rst_name = base_name + '.rst' -+ outdir = mkdtemp() -+ src_base_name = os.path.join(srcdir, 'docstring') -+ out_base_name = os.path.join(outdir, 'docstring') -+ rst_name = src_base_name + '.rst' - - if format == 'html': - suffix = '.html' - else: - suffix = '.txt' -- output_name = base_name + suffix -+ output_name = out_base_name + suffix - - with open(rst_name, 'w') as filed: - filed.write(docstring) - -- # Sphinx constructor: Sphinx(srcdir, confdir, outdir, doctreedir, -- # buildername, confoverrides, status, warning, freshenv). - confdir = os.path.join(SAGE_DOC_SRC, 'en', 'introspect') - - open(os.path.join(srcdir, 'docutils.conf'), 'w').write(r""" -@@ -93,7 +93,9 @@ smart_quotes = no - - import sys - old_sys_path = list(sys.path) # Sphinx modifies sys.path -- sphinx_app = Sphinx(srcdir, confdir, srcdir, doctreedir, format, -+ # Sphinx constructor: Sphinx(srcdir, confdir, outdir, doctreedir, -+ # buildername, confoverrides, status, warning, freshenv). -+ sphinx_app = Sphinx(srcdir, confdir, outdir, doctreedir, format, - confoverrides, None, None, True) - sphinx_app.build(None, [rst_name]) - sys.path = old_sys_path -@@ -118,13 +120,15 @@ smart_quotes = no - # Remove spurious \(, \), \[, \]. - output = output.replace('\\(', '').replace('\\)', '').replace('\\[', '').replace('\\]', '') - else: -- print("BUG -- Sphinx error") -+ from warnings import warn -+ warn("Sphinx did not produce any output", Warning) - if format == 'html': - output = '<pre class="introspection">%s</pre>' % docstring - else: - output = docstring - - shutil.rmtree(srcdir, ignore_errors=True) -+ shutil.rmtree(outdir, ignore_errors=True) - - return output - -diff --git a/src/sage_setup/docbuild/__init__.py b/src/sage_setup/docbuild/__init__.py -index 4546f87..9efe45d 100644 ---- a/src/sage_setup/docbuild/__init__.py -+++ b/src/sage_setup/docbuild/__init__.py -@@ -53,7 +53,6 @@ import warnings - - logger = logging.getLogger(__name__) - --import sphinx.cmdline - import sphinx.util.console - import sphinx.ext.intersphinx - -@@ -354,6 +353,7 @@ class AllBuilder(object): - getattr(get_builder(document), 'inventory')(*args, **kwds) - - logger.warning("Building reference manual, second pass.\n") -+ sage_makedirs(os.path.join(SAGE_DOC, "html", "en", "reference", "_static")) - for document in refs: - getattr(get_builder(document), name)(*args, **kwds) - -diff --git a/src/sage_setup/docbuild/ext/inventory_builder.py b/src/sage_setup/docbuild/ext/inventory_builder.py -index 113849a..92deaa1 100644 ---- a/src/sage_setup/docbuild/ext/inventory_builder.py -+++ b/src/sage_setup/docbuild/ext/inventory_builder.py -@@ -12,6 +12,7 @@ from os import path - - from six import iteritems, text_type - -+import shutil - - try: - from hashlib import md5 -@@ -107,6 +108,18 @@ class InventoryBuilder(StandaloneHTMLBuilder): - """ - raise RuntimeError("This function shouldn't be called in \"%s\" builder"%(self.name)) - -+ def cleanup(self): -+ """ -+ Remove the '_static' directory. -+ -+ This directory is unnecessary for the inventory build, but it -+ may be created by the graphviz extension. Its presence will -+ break the docbuild later on, so remove it. -+ """ -+ if path.isdir(path.join(self.outdir, '_static')): -+ shutil.rmtree(path.join(self.outdir, '_static')) -+ -+ - copy_image_files = removed_method_error - copy_download_files = removed_method_error - copy_static_files = removed_method_error -diff --git a/src/sage_setup/docbuild/ext/multidocs.py b/src/sage_setup/docbuild/ext/multidocs.py -index 15c7ca5..bc5ca9e 100644 ---- a/src/sage_setup/docbuild/ext/multidocs.py -+++ b/src/sage_setup/docbuild/ext/multidocs.py -@@ -32,6 +32,7 @@ from sphinx.util.console import bold - from sage.env import SAGE_DOC - from sage.misc.misc import sage_makedirs - -+logger = sphinx.util.logging.getLogger(__name__) - - CITE_FILENAME = 'citations.pickle' - -@@ -48,13 +49,13 @@ def merge_environment(app, env): - - - domaindata['py']['modules'] # list of python modules - """ -- app.info(bold('Merging environment/index files...')) -+ logger.info(bold('Merging environment/index files...')) - for curdoc in app.env.config.multidocs_subdoc_list: -- app.info(" %s:" % curdoc, nonl=1) -+ logger.info(" %s:"%curdoc, nonl=1) - docenv = get_env(app, curdoc) - if docenv is not None: - fixpath = lambda path: os.path.join(curdoc, path) -- app.info(" %s todos, %s index, %s citations"%( -+ logger.info(" %s todos, %s index, %s citations"%( - len(docenv.todo_all_todos), - len(docenv.indexentries), - len(docenv.domaindata["std"]["citations"]) -@@ -99,8 +100,8 @@ def merge_environment(app, env): - six.iteritems(docenv.domaindata['py']['modules'])): - newmodules[ind] = (fixpath(modpath),v1,v2,v3) - env.domaindata['py']['modules'].update(newmodules) -- app.info(", %s modules"%(len(newmodules))) -- app.info('... done (%s todos, %s index, %s citations, %s modules)'%( -+ logger.info(", %s modules"%(len(newmodules))) -+ logger.info('... done (%s todos, %s index, %s citations, %s modules)'%( - len(env.todo_all_todos), - len(env.indexentries), - len(env.domaindata["std"]["citations"]), -@@ -118,8 +119,8 @@ def get_env(app, curdoc): - try: - f = open(filename, 'rb') - except IOError: -- app.info("") -- app.warn("Unable to fetch %s " % filename) -+ logger.info("") -+ logger.warning("Unable to fetch %s " % filename) - return None - docenv = cPickle.load(f) - f.close() -@@ -130,16 +131,16 @@ def merge_js_index(app): - """ - Merge the JS indexes of the sub-docs into the main JS index - """ -- app.info('') -- app.info(bold('Merging js index files...')) -+ logger.info('') -+ logger.info(bold('Merging js index files...')) - mapping = app.builder.indexer._mapping - for curdoc in app.env.config.multidocs_subdoc_list: -- app.info(" %s:"%curdoc, nonl=1) -+ logger.info(" %s:"%curdoc, nonl=1) - fixpath = lambda path: os.path.join(curdoc, path) - index = get_js_index(app, curdoc) - if index is not None: - # merge the mappings -- app.info(" %s js index entries"%(len(index._mapping))) -+ logger.info(" %s js index entries"%(len(index._mapping))) - for (ref, locs) in six.iteritems(index._mapping): - newmapping = set(map(fixpath, locs)) - if ref in mapping: -@@ -159,8 +160,8 @@ def merge_js_index(app): - dest = os.path.join(app.outdir, "_sources", curdoc) - if not os.path.exists(dest): - os.symlink(os.path.join("..", curdoc, "_sources"), dest) -- app.info('... done (%s js index entries)'%(len(mapping))) -- app.info(bold('Writing js search indexes...'), nonl=1) -+ logger.info('... done (%s js index entries)'%(len(mapping))) -+ logger.info(bold('Writing js search indexes...'), nonl=1) - return [] # no extra page to setup - - -@@ -181,8 +182,8 @@ def get_js_index(app, curdoc): - try: - f = open(indexfile, 'r') - except IOError: -- app.info("") -- app.warn("Unable to fetch %s " % indexfile) -+ logger.info("") -+ logger.warning("Unable to fetch %s " % indexfile) - return None - indexer.load(f, sphinx.search.js_index) - f.close() -@@ -240,7 +241,7 @@ def write_citations(app, citations): - outdir = citation_dir(app) - with atomic_write(os.path.join(outdir, CITE_FILENAME), binary=True) as f: - cPickle.dump(citations, f) -- app.info("Saved pickle file: %s" % CITE_FILENAME) -+ logger.info("Saved pickle file: %s" % CITE_FILENAME) - - - def fetch_citation(app, env): -@@ -248,13 +249,13 @@ def fetch_citation(app, env): - Fetch the global citation index from the refman to allow for cross - references. - """ -- app.builder.info(bold('loading cross citations... '), nonl=1) -+ logger.info(bold('loading cross citations... '), nonl=1) - filename = os.path.join(citation_dir(app), '..', CITE_FILENAME) - if not os.path.isfile(filename): - return - with open(filename, 'rb') as f: - cache = cPickle.load(f) -- app.builder.info("done (%s citations)."%len(cache)) -+ logger.info("done (%s citations)."%len(cache)) - cite = env.domaindata["std"]["citations"] - for ind, (path, tag, lineno) in six.iteritems(cache): - if ind not in cite: # don't override local citation -@@ -267,18 +268,18 @@ def init_subdoc(app): - doc itself. - """ - if app.config.multidocs_is_master: -- app.info(bold("Compiling the master document")) -+ logger.info(bold("Compiling the master document")) - app.connect('env-updated', merge_environment) - app.connect('html-collect-pages', merge_js_index) - if app.config.multidocs_subdoc_list: - # Master file with indexes computed by merging indexes: - # Monkey patch index fetching to silence warning about broken index - def load_indexer(docnames): -- app.builder.info(bold('skipping loading of indexes... '), nonl=1) -+ logger.info(bold('skipping loading of indexes... '), nonl=1) - app.builder.load_indexer = load_indexer - - else: -- app.info(bold("Compiling a sub-document")) -+ logger.info(bold("Compiling a sub-document")) - app.connect('html-page-context', fix_path_html) - if not app.config.multidoc_first_pass: - app.connect('env-updated', fetch_citation) -@@ -294,7 +295,7 @@ def init_subdoc(app): - def copy_static_files(self): - [...] - """ -- app.builder.info(bold('linking _static directory.')) -+ logger.info(bold('linking _static directory.')) - static_dir = os.path.join(app.builder.outdir, '_static') - master_static_dir = os.path.join('..', '_static') - if os.path.lexists(static_dir): -@@ -308,6 +309,9 @@ def init_subdoc(app): - - if app.config.multidoc_first_pass == 1: - app.config.intersphinx_mapping = {} -+ else: -+ app.emit('env-check-consistency', app.env) -+ - - - def setup(app): -diff --git a/src/sage_setup/docbuild/ext/sage_autodoc.py b/src/sage_setup/docbuild/ext/sage_autodoc.py -index 25895d3..2e640a0 100644 ---- a/src/sage_setup/docbuild/ext/sage_autodoc.py -+++ b/src/sage_setup/docbuild/ext/sage_autodoc.py -@@ -40,7 +40,8 @@ from sphinx.errors import ExtensionError - from sphinx.ext.autodoc.importer import mock, import_object, get_object_members - from sphinx.ext.autodoc.inspector import format_annotation, formatargspec - from sphinx.locale import _, __ --from sphinx.pycode import ModuleAnalyzer, PycodeError -+from sphinx.pycode import ModuleAnalyzer -+from sphinx.errors import ExtensionError, PycodeError - from sphinx.util import logging - from sphinx.util import rpartition, force_decode - from sphinx.util.docstrings import prepare_docstring -diff --git a/src/sage_setup/docbuild/sphinxbuild.py b/src/sage_setup/docbuild/sphinxbuild.py -index 8c7efbe..9a2fba7 100644 ---- a/src/sage_setup/docbuild/sphinxbuild.py -+++ b/src/sage_setup/docbuild/sphinxbuild.py -@@ -22,6 +22,7 @@ We redirect stdout and stderr to our own logger, and remove some unwanted chatte - # **************************************************************************** - - import os, sys, re, sphinx -+import sphinx.cmd.build - - # override the fancy multi-line formatting - def term_width_line(text): -@@ -304,12 +305,12 @@ def runsphinx(): - try: - sys.stdout = SageSphinxLogger(sys.stdout, os.path.basename(output_dir)) - sys.stderr = SageSphinxLogger(sys.stderr, os.path.basename(output_dir)) -- # Note that this call as of eraly 2018 leaks memory. So make sure that -+ # Note that this call as of early 2018 leaks memory. So make sure that - # you don't call runsphinx() several times in a row. (i.e., you want to - # fork() somewhere before this call.) - # We don't use subprocess here, as we don't want to re-initialize Sage - # for every docbuild as this takes a while. -- sphinx.cmdline.main(sys.argv[1:]) -+ sphinx.cmd.build.main(sys.argv[1:]) - sys.stderr.raise_errors() - sys.stdout.raise_errors() - finally:
