@@ -60,6 +60,7 @@
;;; Copyright © 2022 Akira Kyle <akira@akirakyle.com>
;;; Copyright © 2022 Roman Scherer <roman.scherer@burningswell.com>
;;; Copyright © 2023 Jake Leporte <jakeleporte@outlook.com>
+;;; Copyright © 2023 Nigko Yerden <nigko.yerden@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4488,6 +4489,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")