[PATCH] gnu: Add reduce-csl.

  • Open
  • quality assurance status badge
Details
One participant
  • 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
?
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