diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py --- src/sage/doctest/control.py.orig 2019-06-26 14:41:04.000000000 -0600 +++ src/sage/doctest/control.py 2019-06-27 11:30:37.222951288 -0600 @@ -106,7 +106,6 @@ class DocTestDefaults(SageObject): self.valgrind = False self.massif = False self.cachegrind = False - self.omega = False self.failed = False self.new = False self.show_skipped = False @@ -309,7 +308,7 @@ class DocTestController(SageObject): if options.gdb or options.debug: # Interactive debuggers: "infinite" timeout options.timeout = 0 - elif options.valgrind or options.massif or options.cachegrind or options.omega: + elif options.valgrind or options.massif or options.cachegrind: # Non-interactive debuggers: 48 hours options.timeout = int(os.getenv('SAGE_TIMEOUT_VALGRIND', 48 * 60 * 60)) elif options.long: @@ -1105,13 +1104,8 @@ class DocTestController(SageObject): elif opt.cachegrind: toolname = "cachegrind" flags = os.getenv("SAGE_CACHEGRIND_FLAGS", "") - elif opt.omega: - toolname = "exp-omega" - flags = os.getenv("SAGE_OMEGA_FLAGS", "") cmd = "exec valgrind --tool=%s "%(toolname) flags += ''' --log-file="%s" ''' % logfile - if opt.omega: - toolname = "omega" if "%s" in flags: flags %= toolname + ".%p" # replace %s with toolname cmd += flags + sage_cmd @@ -1196,10 +1190,10 @@ class DocTestController(SageObject): """ opt = self.options - L = (opt.gdb, opt.valgrind, opt.massif, opt.cachegrind, opt.omega) + L = (opt.gdb, opt.valgrind, opt.massif, opt.cachegrind) if any(L): if L.count(True) > 1: - self.log("You may only specify one of gdb, valgrind/memcheck, massif, cachegrind, omega") + self.log("You may only specify one of gdb, valgrind/memcheck, massif, cachegrind") return 2 return self.run_val_gdb() else: diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py --- src/sage/interfaces/singular.py.orig 2019-06-26 14:41:05.000000000 -0600 +++ src/sage/interfaces/singular.py 2019-06-27 11:30:37.223951272 -0600 @@ -2261,7 +2261,7 @@ def generate_docstring_dictionary(): nodes.clear() node_names.clear() - singular_docdir = os.environ['SINGULARPATH']+"/../info/" + singular_docdir = "/usr/share/info/" new_node = re.compile(r"File: singular\.hlp, Node: ([^,]*),.*") new_lookup = re.compile(r"\* ([^:]*):*([^.]*)\..*") @@ -2269,8 +2269,9 @@ def generate_docstring_dictionary(): L, in_node, curr_node = [], False, None # singular.hlp contains a few iso-5559-1 encoded special characters - with io.open(os.path.join(singular_docdir, 'singular.hlp'), - encoding='latin-1') as f: + import gzip + with gzip.open(os.path.join(singular_docdir, 'singular.hlp.gz'), + encoding='utf-8') as f: for line in f: m = re.match(new_node,line) if m: diff -up src/sage_setup/docbuild/ext/multidocs.py.orig src/sage_setup/docbuild/ext/multidocs.py --- src/sage_setup/docbuild/ext/multidocs.py.orig 2019-06-26 14:41:05.000000000 -0600 +++ src/sage_setup/docbuild/ext/multidocs.py 2019-06-27 11:30:37.224951257 -0600 @@ -85,8 +85,11 @@ def merge_environment(app, env): for ind in newalldoc: # treat subdocument source as orphaned file and don't complain md = env.metadata.get(ind, dict()) - md['orphan'] = 1 - env.metadata[ind] = md + try: + md['orphan'] = 1 + env.metadata[ind] = md + except AttributeError: + env.metadata[ind] = {'orphan'} # merge the citations newcite = {} citations = docenv.domaindata["std"]["citations"] diff -up src/sage_setup/docbuild/__init__.py.orig src/sage_setup/docbuild/__init__.py --- src/sage_setup/docbuild/__init__.py.orig 2019-06-26 14:41:05.000000000 -0600 +++ src/sage_setup/docbuild/__init__.py 2019-06-27 11:30:37.225951242 -0600 @@ -284,13 +284,14 @@ if not (CYGWIN_VERSION and CYGWIN_VERSIO # map_async handles KeyboardInterrupt correctly. Plain map and # apply_async does not, so don't use it. x = pool.map_async(target, args, 1) + ret = [] try: - ret = x.get(99999) + ret = x.get(3600) pool.close() pool.join() except Exception: - pool.terminate() if ABORT_ON_ERROR: + pool.terminate() raise return ret else: