Subject: bug#66606: closed (Re: [PATCH v3] gnu: Add reduce-csl.)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 07 Feb 2025 13:16:02 +0000

Your bug report

#66606: [PATCH] gnu: Add reduce-csl.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
66606: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66606
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [PATCH v3] gnu: Add reduce-csl.
From: Andreas Enge <[email-masked]>
To: Nigko Yerden <[email-masked]>
Cc: [email-masked], [email-masked], [email-masked]
Date: Fri, 7 Feb 2025 14:15:27 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

Am Fri, Feb 07, 2025 at 05:13:35PM +0500 schrieb Nigko Yerden:
> 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.

> 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

Subject: [PATCH] gnu: Add reduce-csl.
From: Nigko Yerden <[email-masked]>
To: [email-masked]
Cc: Nigko Yerden <[email-masked]>
Date: Wed, 18 Oct 2023 17:26:27 +0500
List-Id: <debbugs-submit.debbugs.gnu.org>

* 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(+)

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 <[email-masked]>
 ;;; Copyright © 2023 Camilo Q.S. (Distopico) <[email-masked]>
 ;;; Copyright © 2023 David Elsing <[email-masked]>
+;;; Copyright © 2023 Nigko Yerden <[email-masked]>
 ;;;
 ;;; 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