[PATCH] gnu: Add reduce-csl.

  • Done
  • quality assurance status badge
Details
2 participants
  • Andreas Enge
  • Nigko Yerden
Owner
unassigned
Submitted by
Nigko Yerden
Severity
normal
N
N
Nigko Yerden wrote on 18 Oct 2023 14:26
(address . guix-patches@gnu.org)(name . Nigko Yerden)(address . nigko.yerden@gmail.com)
b88d3ae643f466e17573b158527d97b0a0102c35.1697631987.git.nigko.yerden@gmail.com
* gnu/packages/maths.scm (reduce-csl): New variable.
---
This patch introduces Reduce, a general purpose computer algebra
system similar to Maxima.

The package is built successfully on x86_64_linux (natively),
armhf-linux and aarch64-linux (via 'guix build --system=...' command)
architectures.

Reduce became build-reproducible since the upstream revision 6601, but
the current "stable" snapshot 6547 is not reproducible.

The source code contains bundled fox and editline libraries as well
as their adjustments, which are difficult to remove. Also it contains
libffi (can be replaced by libffi from guix repo), crlibm and
softfloat (currently are not present in guix repo) libraries.

gnu/packages/maths.scm | 107 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 107 insertions(+)

Toggle diff (129 lines)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 683acd96e1..89127c9e0e 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -62,6 +62,7 @@
;;; Copyright © 2023 Jake Leporte <jakeleporte@outlook.com>
;;; Copyright © 2023 Camilo Q.S. (Distopico) <distopico@riseup.net>
;;; Copyright © 2023 David Elsing <david.elsing@posteo.net>
+;;; Copyright © 2023 Nigko Yerden <nigko.yerden@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4761,6 +4762,112 @@ (define-public wxmaxima
full text searching.")
(license license:gpl2+)))
+(define-public reduce-csl
+ (package
+ (name "reduce-csl")
+ (version "6547")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://sourceforge/reduce-algebra/snapshot_"
+ "2023-03-08" "/Reduce-svn" version "-src.tar.gz"))
+ (sha256
+ (base32
+ "1a559s4ff5askifyha6fi8qvxjkya1n3ziypig2rgi6q62nbx418"))
+ (modules '((guix build utils)))
+ ;; remove binaries and unnecessary parts
+ ;; to ensure we build from source files only
+ (snippet '(map delete-file-recursively
+ (append (find-files "csl/generated-c" "\\.img$")
+ '("psl" "vsl"
+ "jlisp"
+ "jslisp"
+ "libedit"
+ "macbuild"
+ "MacPorts"
+ "mac-universal"
+ "reduce2"
+ "winbuild64"
+ "common-lisp"
+ "contrib"
+ "generic/qreduce"
+ "web/htdocs/images/Thumbs.db")
+ (find-files "csl"
+ "^(embedded|new-embedded|winbuild|support-packages)$"
+ #:directories? #t)
+ (find-files "libraries"
+ "^(original|wineditline|libffi-for-mac)$"
+ #:directories? #t))))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:tests? #f
+ #:configure-flags
+ #~(list "--without-autogen"
+ ;; fix conflict with internal build name determination
+ "--build=" "--with-csl"
+ (string-append "CXXFLAGS=-I"
+ #$freetype
+ "/include/freetype2"))
+ #:make-flags #~(list "csl")
+ #:phases #~(modify-phases %standard-phases
+ (add-before 'patch-source-shebangs 'autogen
+ (lambda _
+ (invoke "sh" "autogen.sh")))
+ (add-after 'install 'fix-install
+ (lambda _
+ (delete-file-recursively (string-append #$output
+ "/man"))
+ (delete-file (string-append #$output "/share/man"))
+ (copy-file "bin/rfcsl"
+ (string-append #$output "/bin/rfcsl"))
+ (let ((.desktop-file
+ "debianbuild/reduce/debian/redcsl.desktop")
+ (icon "debianbuild/reduce/debian/reduce.png"))
+ (substitute* .desktop-file
+ (("Exec=/.*/(redcsl[ \t]+.*)" _ exec)
+ (string-append "Exec=" exec)))
+ (install-file .desktop-file
+ (string-append #$output
+ "/share/applications"))
+ (install-file icon
+ (string-append #$output
+ "/share/icons/hicolor/32x32/apps")))
+ (rename-file "generic/newfront/redfront.1"
+ "generic/newfront/rfcsl.1")
+ (map (lambda (file)
+ (invoke "gzip" file)
+ (install-file (string-append file ".gz")
+ (string-append #$output
+ "/share/man/man1")))
+ '("csl/cslbase/redcsl.1"
+ "generic/newfront/rfcsl.1"))
+ (with-directory-excursion #$output
+ (map (lambda (dir)
+ (map (lambda (file)
+ (chmod file #o444))
+ (find-files dir)))
+ '("share/man/man1" "share/doc/reduce"
+ "share/reduce/fonts"))))))))
+ (native-inputs (list which autoconf automake libtool))
+ (inputs
+ ;; bundled libraries: fox (adjusted) editline (adjusted)
+ ;; libffi crlibm softfloat
+ (list ncurses freetype libxft libx11 libxext))
+ (synopsis "Portable general-purpose computer algebra system")
+ (description
+ "REDUCE is a portable general-purpose computer algebra system. It is a
+system for doing scalar, vector and matrix algebra by computer, which also
+supports arbitrary precision numerical approximation and interfaces to gnuplot
+to provide graphics. It can be used interactively for simple calculations but
+also provides a full programming language, with a syntax similar to other
+modern programming languages. REDUCE supports alternative user interfaces
+including Run-REDUCE, TeXmacs and GNU Emacs. This package provides Codemist
+Standard Lisp (CSL) version of REDUCE. It uses gnuplot program, if installed,
+to make figures.")
+ (home-page "https://reduce-algebra.sourceforge.io/")
+ (license (license:non-copyleft "file://README"
+ "See README in the deistribution."))))
+
(define-public armadillo
(package
(name "armadillo")

base-commit: 1076f32111e512ed437f135c9eb6ce2daaafd623
--
2.41.0
A
A
Andreas Enge wrote 5 days ago
(name . Nigko Yerden)(address . nigko.yerden@gmail.com)
Z6OX4RkJ7CQjV0dp@jurong
Hello,

Am Wed, Oct 18, 2023 at 05:26:27PM +0500 schrieb Nigko Yerden:
Toggle quote (4 lines)
> * gnu/packages/maths.scm (reduce-csl): New variable.
> This patch introduces Reduce, a general purpose computer algebra
> system similar to Maxima.

sorry for overlooking this patch for so long!

The commit currently does not apply with "git am"; would you be able to
provide a v2 that applies?

I also wonder if you could already unbundle libffi.

Toggle quote (2 lines)
> + (list #:tests? #f

Are there no tests? If this is the case, please add a comment.
Otherwise it would be good to enable the tests.

Toggle quote (5 lines)
> + (add-after 'install 'fix-install
> + (lambda _
> + (delete-file-recursively (string-append #$output
> + "/man"))

Why is this needed?

Thanks!

Andreas
N
N
Nigko Yerden wrote 4 days ago
[PATCH v2] gnu: Add reduce-csl.
(address . 66606@debbugs.gnu.org)
fc6503960756bec07de7ba4af161278cfe3147da.1738860011.git.nigko.yerden@gmail.com
* gnu/packages/math.scm (reduce-csl): New variable.
* gnu/packages/patches/reduce-csl.patch: New patch which unbundles libffi.

Change-Id: Ic85be7dc490f005f7ba65c418250cc9681fbb3a8
---
Hello,

Andreas Enge wrote:
Toggle quote (11 lines)
>sorry for overlooking this patch for so long!
>
>The commit currently does not apply with "git am"; would you be able to
>provide a v2 that applies?
>I also wonder if you could already unbundle libffi.
>
>> + (list #:tests? #f
>
>Are there no tests? If this is the case, please add a comment.
>Otherwise it would be good to enable the tests.
>
I rewrote this old patch. New patch provides
1. Updated package revision number 6860 (was 6547).
2. Apparent reproducibility of the package.
3. 'check' build phase for running tests.
4. Unbundled libffi.

Toggle quote (6 lines)
>> + (add-after 'install 'fix-install
>> + (lambda _
>> + (delete-file-recursively (string-append #$output
>> + "/man"))
>
>Why is this needed?
This was the wrong location for the man pages coming from upstream rev. 6547.
(it should be "share/man/man.1"). The current upstream version is
free from this bug and these lines were removed in consequence.

Regards,
Nigko

gnu/packages/maths.scm | 103 +++++++++++++++++++++
gnu/packages/patches/reduce-csl.patch | 125 ++++++++++++++++++++++++++
2 files changed, 228 insertions(+)
create mode 100644 gnu/packages/patches/reduce-csl.patch

Toggle diff (263 lines)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index c3017976f6..33fc692375 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -67,6 +67,7 @@
;;; Copyright © 2024 Foundation Devices, Inc. <hello@foundation.xyz>
;;; Copyright © 2024, 2025 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -197,6 +198,7 @@ (define-module (gnu packages maths)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
+ #:use-module (gnu packages libffi)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
@@ -5398,6 +5400,107 @@ (define-public maxima
;; GPLv2 only is therefore the smallest subset.
(license license:gpl2)))
+(define-public reduce-csl
+ (package
+ (name "reduce-csl")
+ (version "6860")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://sourceforge/reduce-algebra/snapshot_"
+ "2024-08-12" "/Reduce-svn" version "-src.tar.gz"))
+ (sha256
+ (base32
+ "13bij9d4dj96vd5di59skz77s2fihj7awmkx403fvh9rd04ly25z"))
+ (modules '((guix build utils)))
+ ;; unbundle libffi
+ (patches (search-patches "reduce-csl.patch"))
+ ;; remove binaries and unnecessary parts
+ ;; to ensure we build from source files only
+ (snippet '(map delete-file-recursively
+ (append (find-files "csl/generated-c" "\\.img$")
+ '("psl" "vsl"
+ "jlisp"
+ "jslisp"
+ "libedit"
+ "macbuild"
+ "MacPorts"
+ "mac-universal"
+ "reduce2"
+ "winbuild64"
+ "common-lisp"
+ "contrib"
+ "generic/qreduce"
+ "web/htdocs/images/Thumbs.db")
+ (find-files "csl"
+ "^(embedded|new-embedded|winbuild|support-packages)$"
+ #:directories? #t)
+ (find-files "libraries"
+ "^(original|wineditline|libffi|libffi-for-mac)$"
+ #:directories? #t))))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list "--without-autogen"
+ ;; fix conflict with internal build name determination
+ "--build="
+ "--with-csl"
+ (string-append "CPPFLAGS=-I"
+ #$freetype
+ "/include/freetype2"))
+ #:make-flags #~(list "csl")
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "scripts/testall.sh" "--csl" "--noregressions"))))
+ (add-before 'patch-source-shebangs 'autogen
+ (lambda _
+ (invoke "sh" "autogen.sh")))
+ (add-after 'install 'fix-install
+ (lambda _
+ (copy-file "bin/rfcsl"
+ (string-append #$output "/bin/rfcsl"))
+ (copy-file "generic/newfront/redfront.1"
+ (string-append #$output
+ "/share/man/man1/rfcsl.1"))
+ (let ((.desktop-file
+ "debianbuild/reduce/debian/redcsl.desktop")
+ (icon "debianbuild/reduce/debian/reduce.png"))
+ (install-file .desktop-file
+ (string-append #$output
+ "/share/applications"))
+ (install-file icon
+ (string-append
+ #$output
+ "/share/icons/hicolor/32x32/apps")))
+ (with-directory-excursion #$output
+ (map (lambda (dir)
+ (map (lambda (file)
+ (chmod file #o444))
+ (find-files dir)))
+ '("share/man/man1" "share/reduce/fonts"))))))))
+ (native-inputs (list which autoconf automake libtool))
+ (inputs
+ ;; bundled libraries: fox (adjusted) editline (adjusted)
+ ;; libffi (unbundled, see patch) crlibm softfloat
+ (list ncurses freetype libxft libx11 libxext libffi))
+ (synopsis "Portable general-purpose computer algebra system")
+ (description
+ "REDUCE is a portable general-purpose computer algebra system. It is a
+system for doing scalar, vector and matrix algebra by computer, which also
+supports arbitrary precision numerical approximation and interfaces to gnuplot
+to provide graphics. It can be used interactively for simple calculations but
+also provides a full programming language, with a syntax similar to other
+modern programming languages. REDUCE supports alternative user interfaces
+including Run-REDUCE, TeXmacs and GNU Emacs. This package provides Codemist
+Standard Lisp (CSL) version of REDUCE. It uses gnuplot program, if installed,
+to make figures.")
+ (home-page "https://reduce-algebra.sourceforge.io/")
+ (license (license:non-copyleft "file://README"
+ "See README in the deistribution."))))
+
(define-public wxmaxima
(package
(name "wxmaxima")
diff --git a/gnu/packages/patches/reduce-csl.patch b/gnu/packages/patches/reduce-csl.patch
new file mode 100644
index 0000000000..21529840b6
--- /dev/null
+++ b/gnu/packages/patches/reduce-csl.patch
@@ -0,0 +1,125 @@
+This patch unbundles libffi.
+
+Index: autogen.sh
+===================================================================
+diff --git a/autogen.sh b/autogen.sh
+--- a/autogen.sh (revision 6860)
++++ b/autogen.sh (working copy)
+@@ -142,18 +142,6 @@
+ ;;
+ *--with-csl* | *--with-both*)
+ L="$L ./csl ./csl/cslbase ./csl/cslbase-nothrow ./libraries/SoftFloat-3a/source"
+-# On Apple m1 (ie arm64) I will want to build a universal version of the
+-# libffi library and that is done in a way that differs from standrad builds.
+- case "`uname -s` `uname -m`" in
+- *Darwin*arm64*)
+- L="$L ./libraries/libffi-for-mac/libffi-3.3-arm64"
+- L="$L ./libraries/libffi-for-mac/libffi-3.3-x86_64"
+- L="$L ./libraries/libffi"
+- ;;
+- *)
+- L="$L ./libraries/libffi"
+- ;;
+- esac
+ case $a in
+ *--without-fox* | *with-fox=no* | \
+ *--without-gui* | *with-gui=no*)
+Index: configure.ac
+===================================================================
+diff --git a/configure.ac b/configure.ac
+--- a/configure.ac (revision 6860)
++++ b/configure.ac (working copy)
+@@ -1389,37 +1389,6 @@
+ cd "$builddir"
+ fi
+
+-AC_MSG_NOTICE([About to configure libffi])
+-mkdir -p libffi
+-if test `uname` = "Darwin" && test "$enable_universal" != "no"
+-then
+-# This is a messy script that arranges to build a universal version of
+-# the library on MacOS. It does this by building arm64 and an x86_64
+-# separately and then merging the resulting libraries.
+- sed "s+@srcdir@+$abssrcdir+" \
+- < $abssrcdir/libraries/libffi-for-mac/Makefile \
+- > libffi/Makefile
+-else
+- cd libffi
+- setpasscc
+- doconfig="$SHELL $abssrcdir/libraries/libffi/configure -C $filtered \
+- $pass_host \
+- CPPFLAGS=\"$CPPFLAGS\" \
+- CFLAGS=\"$CFLAGS\" \
+- CXXFLAGS=\"$CXXFLAGS\" \
+- LDFLAGS=\"$LDFLAGS\" \
+- $passcc \
+- --disable-multi-os-directory \
+- --disable-docs \
+- --prefix=\"$builddir\" \
+- --libdir=\"$builddir/lib\" \
+- --includedir=\"$builddir/include\""
+- AC_MSG_NOTICE([doconfig = $doconfig])
+- printf "\n\n+++ About to configure libffi +++\n\n"
+- eval "$doconfig"
+- cd "$builddir"
+-fi
+-
+ AC_MSG_NOTICE([About to configure libsoftfloat])
+ mkdir -p softfloat
+ cd softfloat
+Index: csl/cslbase/Makefile.am
+===================================================================
+diff --git a/csl/cslbase/Makefile.am b/csl/cslbase/Makefile.am
+--- a/csl/cslbase/Makefile.am (revision 6860)
++++ b/csl/cslbase/Makefile.am (working copy)
+@@ -807,35 +807,6 @@
+
+ endif !crlibm
+
+-LIBFFIDEPS=../lib/libffi.a ../include/ffi.h
+-
+-FFIDEP = ../include/ffi.h
+-FFIINC = -I../include
+-AM_CPPFLAGS += $(FFINC)
+-reduce_CPPFLAGS += $(FFINC)
+-bootstrapreduce_CPPFLAGS += $(FFINC)
+-csl_CPPFLAGS += $(FFINC)
+-flatcsl_CPPFLAGS += $(FFINC)
+-
+-# The following ugly dependencies are here so that one can go, for
+-# instance, "make csl.o" in a clean tree and libffi building will get
+-# triggered.
+-
+-
+-csl_LDADD += ../lib/libffi.a
+-flatcsl_LDADD += ../lib/libffi.a
+-bootstrapreduce_LDADD += ../lib/libffi.a
+-reduce_LDADD += ../lib/libffi.a
+-
+-csl_DEPENDENCIES += $(LIBFFIDEPS)
+-flatcsl_DEPENDENCIES += $(LIBFFIDEPS)
+-bootstrapreduce_DEPENDENCIES += $(LIBFFIDEPS)
+-reduce_DEPENDENCIES += $(LIBFFIDEPS)
+-
+-$(LIBFFIDEPS):
+- @printf "About to build libffi for %s ($@)\n" `pwd`
+- -$(TRACE)@$(MAKE) -C ../libffi install
+-
+ SOFTFLOATDEPS=../lib/libsoftfloat.a ../include/softfloat.h
+
+ SOFTFLOATDEP = ../include/softfloat.h
+Index: csl/cslbase/configure.ac
+===================================================================
+diff --git a/csl/cslbase/configure.ac b/csl/cslbase/configure.ac
+--- a/csl/cslbase/configure.ac (revision 6860)
++++ b/csl/cslbase/configure.ac (working copy)
+@@ -146,8 +146,8 @@
+ AC_DEFINE(WITHOUT_FFI, [1], [remove the foreign function support])
+ fi
+
++AC_SEARCH_LIBS([ffi_call], [ffi])
+
+-
+ # What host am I on?
+ AC_CANONICAL_HOST()
+

base-commit: 5c5f72cac9c49db918eba158d0c751ab1be1e95a
--
2.47.1
A
A
Andreas Enge wrote 3 days ago
[PATCH v3] gnu: Add reduce-csl.
(name . Nigko Yerden)(address . nigko.yerden@gmail.com)
Z6XVDz8fveQh9ggq@jurong
Hello,

Am Thu, Feb 06, 2025 at 09:40:11PM +0500 schrieb Nigko Yerden:
Toggle quote (6 lines)
> I rewrote this old patch. New patch provides
> 1. Updated package revision number 6860 (was 6547).
> 2. Apparent reproducibility of the package.
> 3. 'check' build phase for running tests.
> 4. Unbundled libffi.

thanks for sending the new patch, and so quickly; I did not expect
unbundling of libffi to require so much work! And running tests is also
good.

I have moved the package from the maths to the algebra module (which is
more specific). The patch needs to be registered in local.mk.

I would also suggest to use the snapshot date and not the svn commit as
the version number, since it is more telling (and also appears "higher
up" in the file hierarchy on their site).
And maybe call the package just "reduce" instead of "reduce-csl"?
I wondered whether we should also compile with psl (using "--with-both"
instead of "--with-csl"); but I suppose that this would just create a
duplicate?

It is a bit surprising to first use "--without-autogen" and then call
autogen in a separate phase, but I tried to drop both, and this caused
an error.

The package compiles, and I could run reduce with a few of the examples
from their website.

Are you okay with the patch as attached, or would you prefer to handle
differently some changes I made?

Andreas
N
N
Nigko Yerden wrote 3 days ago
(name . Andreas Enge)(address . andreas@enge.fr)
e4de506f-a305-4ffd-9166-5cc3f5fbc6f3@gmail.com
Hello,

Andreas Enge wrote:
Toggle quote (2 lines)
> thanks for sending the new patch, and so quickly; I did not expect
> unbundling of libffi to require so much work!
Yes, these build scripts are somewhat messy! Now I wonder if we really
need unbundled libffi? This patch provide us with additional maintainance
burden, while the benefit of unbundling libffi is negligibly small
(libffi takes in my /gnu/store only 272K of space and even
smaller than that in RAM). Frankly, I would prefer to have libffi
as a bundled library.

Toggle quote (2 lines)
> I have moved the package from the maths to the algebra module (which is
> more specific).
That's fine, but is it okay that Maxima CAS, which is a twin sister (or brother)
of Reduce, resides in maths.scm? It would make sense to put those two together.

Toggle quote (1 lines)
> The patch needs to be registered in local.mk.
That’s useful to know.

Toggle quote (3 lines)
> I would also suggest to use the snapshot date and not the svn commit as
> the version number, since it is more telling (and also appears "higher
> up" in the file hierarchy on their site).
That's totally fine.

Toggle quote (1 lines)
> And maybe call the package just "reduce" instead of "reduce-csl"?
Indeed, I'm in favor of "reduce". It is clearer and shorter.

Toggle quote (3 lines)
> I wondered whether we should also compile with psl (using "--with-both"
> instead of "--with-csl"); but I suppose that this would just create a
> duplicate?
Toggle quote (5 lines)
> While all relevant source file for all of PSL are available as part of
> the Reduce distribution the normal way of building Reduce starts by
> having pre-made PSL binary files to use. These are provided for a range
> of targets (mainly using Intel processors) but machines by SGI and Sun
> (at least) are also reasonably easy to find.
Those binaries for Portable Standard Lisp (PSL) are included in the repo directly.
As far as I know, nobody builds those binaries from sources, perhaps written in
some ancient language, for many years. This is in contrast to Codemist Standard
Lisp (CSL) written in C++. Therefore CSL Reduce exists for a good reason.

Thank you for doing this patch!

Regards,
Nigko
A
A
Andreas Enge wrote 3 days ago
(name . Nigko Yerden)(address . nigko.yerden@gmail.com)
Z6YHb2xm97D_q8hz@jurong
Hello,

Am Fri, Feb 07, 2025 at 05:13:35PM +0500 schrieb Nigko Yerden:
Toggle quote (7 lines)
> Yes, these build scripts are somewhat messy! Now I wonder if we really
> need unbundled libffi? This patch provide us with additional maintainance
> burden, while the benefit of unbundling libffi is negligibly small
> (libffi takes in my /gnu/store only 272K of space and even
> smaller than that in RAM). Frankly, I would prefer to have libffi
> as a bundled library.

well, it is a Guix principle to unbundle as much as possible, with an
eye on the effort it takes. But now that you have done all the work, I
prefer to keep the library unbundled.

Toggle quote (3 lines)
> That's fine, but is it okay that Maxima CAS, which is a twin sister (or brother)
> of Reduce, resides in maths.scm? It would make sense to put those two together.

Yes, and I think it was a mistake to put Maxima in maths instead of
algebra. But moving it would break "git blame", so I would suggest to
leave it where it is.

Thanks for all your other comments! I have pushed the patch and am
closing this issue.

Apologies again for not working on your submission earlier. Next time it
happens on a patch of yours in my realm, please feel free to ping me.

Andreas
Closed
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 66606@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 66606
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch