diff --git a/pkgs/sagemath-repl/MANIFEST.in b/pkgs/sagemath-repl/MANIFEST.in index 0d9a0289491..20804eddaf8 100644 --- a/pkgs/sagemath-repl/MANIFEST.in +++ b/pkgs/sagemath-repl/MANIFEST.in @@ -8,10 +8,8 @@ include sage/misc/sage_input.py include sage/misc/sage_eval.py # expect_objects from sage.interfaces.quit is needed to compute the -# CPU time used by each doctest. We include sage.interfaces.cleaner -# because it is conditionally imported by sage.interfaces.quit. +# CPU time used by each doctest. include sage/interfaces/quit.py -include sage/interfaces/cleaner.py include VERSION.txt diff --git a/src/doc/en/reference/interfaces/index.rst b/src/doc/en/reference/interfaces/index.rst index 7d030df056d..ab38fb97cfc 100644 --- a/src/doc/en/reference/interfaces/index.rst +++ b/src/doc/en/reference/interfaces/index.rst @@ -108,7 +108,6 @@ and testing to make sure nothing funny is going on). sage/interfaces/tachyon sage/interfaces/tides - sage/interfaces/cleaner sage/interfaces/quit sage/interfaces/read_data diff --git a/src/sage/interfaces/cleaner.py b/src/sage/interfaces/cleaner.py deleted file mode 100644 index f731205b652..00000000000 --- a/src/sage/interfaces/cleaner.py +++ /dev/null @@ -1,48 +0,0 @@ -# sage_setup: distribution = sagemath-repl -""" -Interface to the Sage cleaner - -Triva Note: For the name "sage-cleaner", think of the -"The Cleaner" from Pulp Fiction: -http://www.frankjankowski.de/quiz/illus/keitel.jpg -""" -# **************************************************************************** -# Copyright (C) 2007 William Stein -# -# Distributed under the terms of the GNU General Public License (GPL) -# as published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# https://www.gnu.org/licenses/ -# **************************************************************************** -import os -import atexit -import tempfile - -_spd = tempfile.TemporaryDirectory() -SAGE_SPAWNED_PROCESS_FILE = os.path.join(_spd.name, "spawned_processes") -atexit.register(lambda: _spd.cleanup()) - - -def start_cleaner(): - """ - Start ``sage-cleaner`` in a new process group. - """ - if not os.fork(): - os.setpgid(os.getpid(), os.getpid()) - - # Redirect stdin, stdout, stderr to /dev/null - with open(os.devnull, "r+") as f: - os.dup2(f.fileno(), 0) - os.dup2(f.fileno(), 1) - os.dup2(f.fileno(), 2) - - # Close all other file descriptors - try: - maxopenfiles = os.sysconf("SC_OPEN_MAX") - if maxopenfiles <= 0: - raise ValueError - except ValueError: - maxopenfiles = 1024 - os.closerange(3, maxopenfiles) - - os.execlp("sage-cleaner", "sage-cleaner") diff --git a/src/sage/interfaces/meson.build b/src/sage/interfaces/meson.build index 70ce7ce88c8..6a71a2e641e 100644 --- a/src/sage/interfaces/meson.build +++ b/src/sage/interfaces/meson.build @@ -4,7 +4,6 @@ py.install_sources( 'all.py', 'all__sagemath_polyhedra.py', 'axiom.py', - 'cleaner.py', 'ecm.py', 'expect.py', 'four_ti_2.py', diff --git a/src/sage/interfaces/quit.py b/src/sage/interfaces/quit.py index 39d5c4b60c7..5a93ea6952e 100644 --- a/src/sage/interfaces/quit.py +++ b/src/sage/interfaces/quit.py @@ -37,12 +37,8 @@ def sage_spawned_process_file() -> str: sage: len(sage_spawned_process_file()) > 1 True """ - # This is the old value of SAGE_TMP. Until sage-cleaner is - # completely removed, we need to leave these spawned_processes - # files where sage-cleaner will look for them. - d = os.path.join(DOT_SAGE, "temp", HOSTNAME, str(os.getpid())) - os.makedirs(d, exist_ok=True) - return os.path.join(d, "spawned_processes") + from sage.misc.temporary_file import tmp_dir + return os.path.join(tmp_dir(), "spawned_processes") def register_spawned_process(pid: int, cmd: str = "") -> None: @@ -58,13 +54,6 @@ def register_spawned_process(pid: int, cmd: str = "") -> None: file.write("%s %s\n" % (pid, cmd)) except OSError: pass - else: - # If sage is being used as a python library, we need to launch - # the cleaner ourselves upon being told that there will be - # something to clean. - from sage.interfaces.cleaner import start_cleaner - - start_cleaner() expect_objects: list[ReferenceType[Expect]] = []