diff --git a/src/sage/interfaces/maxima_lib.py b/src/sage/interfaces/maxima_lib.py index 621419d76a3..83f8c9d3400 100644 --- a/src/sage/interfaces/maxima_lib.py +++ b/src/sage/interfaces/maxima_lib.py @@ -135,7 +135,19 @@ ecl_eval("(setq $nolabels t))") ecl_eval("(defvar *MAXIMA-LANG-SUBDIR* NIL)") ecl_eval("(set-locale-subdir)") -ecl_eval("(set-pathnames)") + +try: + ecl_eval("(set-pathnames)") +except RuntimeError: + # Recover from :trac:`26968` by creating `*maxima-objdir*` here. + # This cannot be done before calling `(set-pathnames)` since + # `*maxima-objdir*` is computed there. + maxima_objdir = ecl_eval("*maxima-objdir*").python()[1:-1] + import os + os.makedirs(maxima_objdir, exist_ok=True) + # Call `(set-pathnames)` again to complete its job. + ecl_eval("(set-pathnames)") + ecl_eval("(defun add-lineinfo (x) x)") ecl_eval('(defun principal nil (cond ($noprincipal (diverg)) ((not pcprntd) (merror "Divergent Integral"))))') ecl_eval("(remprop 'mfactorial 'grind)") # don't use ! for factorials (#11539)