diff -up src/sage/doctest/control.py.orig src/sage/doctest/control.py --- src/sage/doctest/control.py.orig 2018-05-05 16:21:23.000000000 -0600 +++ src/sage/doctest/control.py 2018-05-16 13:20:01.420837824 -0600 @@ -102,7 +102,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 @@ -292,7 +291,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: @@ -1071,13 +1070,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 @@ -1137,10 +1131,10 @@ class DocTestController(SageObject): 0 """ 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 2018-05-05 16:21:24.000000000 -0600 +++ src/sage/interfaces/singular.py 2018-05-16 13:20:01.421837810 -0600 @@ -2258,7 +2258,7 @@ def generate_docstring_dictionary(): nodes.clear() node_names.clear() - singular_docdir = SAGE_LOCAL+"/share/info/" + singular_docdir = os.environ["SINGULAR_BIN_DIR"]+"/info/" new_node = re.compile("File: singular\.hlp, Node: ([^,]*),.*") new_lookup = re.compile("\* ([^:]*):*([^.]*)\..*") 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 2018-05-05 16:21:26.000000000 -0600 +++ src/sage_setup/docbuild/ext/multidocs.py 2018-05-16 13:20:01.421837810 -0600 @@ -82,8 +82,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 2018-05-05 16:21:26.000000000 -0600 +++ src/sage_setup/docbuild/__init__.py 2018-05-16 13:20:01.422837797 -0600 @@ -242,13 +242,14 @@ if NUM_THREADS > 1: # 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: