summaryrefslogtreecommitdiff
path: root/gnu/packages/maths.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/maths.scm')
-rw-r--r--gnu/packages/maths.scm236
1 files changed, 141 insertions, 95 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 34710fc65c..246f189115 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -58,6 +58,7 @@
;;; Copyright © 2022, 2023 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2022 Maximilian Heisinger <mail@maxheisinger.at>
;;; Copyright © 2022 Akira Kyle <akira@akirakyle.com>
+;;; Copyright © 2022, 2023 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2022 Roman Scherer <roman.scherer@burningswell.com>
;;; Copyright © 2023 Jake Leporte <jakeleporte@outlook.com>
;;; Copyright © 2023 Camilo Q.S. (Distopico) <distopico@riseup.net>
@@ -103,6 +104,7 @@
#:use-module (gnu packages algebra)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
@@ -9529,7 +9531,7 @@ computation is supported via MPI.")
(define-public scilab
(package
(name "scilab")
- (version "2023.1.0")
+ (version "2024.0.0")
(source
(origin
(method git-fetch)
@@ -9539,10 +9541,9 @@ computation is supported via MPI.")
(file-name (git-file-name name version))
(sha256
(base32
- "0hbqsnc67b4f8zc690kl79bwhjaasykjlmqbln8iymnjcn3l5ypd"))
+ "08nyfli3x7gd396ffd1a8zn9fj3gm6a8yw0ggm547c09sp2rgvl7"))
(modules '((guix build utils)
(ice-9 ftw)))
- (patches (search-patches "scilab-hdf5-1.8-api.patch"))
(snippet
#~(begin
;; Delete everything except for scilab itself:
@@ -9559,7 +9560,8 @@ computation is supported via MPI.")
(for-each delete-file-recursively
'("scilab"
"config"
- "libs/GetWindowsVersion"))
+ "libs/GetWindowsVersion"
+ "Visual-Studio-settings"))
(for-each delete-file
(cons* "aclocal.m4"
"configure"
@@ -9571,22 +9573,23 @@ computation is supported via MPI.")
"m4/ltversion.m4"
"m4/lt~obsolete.m4"
"m4/pkg.m4"
+ "Scilab.sln"
(find-files "." "^Makefile\\.in$")))
;; And finally some files in the modules directory:
(for-each
- (lambda (file)
- (delete-file
- (string-append "modules/dynamic_link/src/scripts/" file)))
- '("aclocal.m4"
- "configure"
- "compile"
- "config.guess"
- "config.sub"
- "ltmain.sh"
- "depcomp"
- "install-sh"
- "missing"))
+ (lambda (file)
+ (delete-file
+ (string-append "modules/dynamic_link/src/scripts/" file)))
+ '("aclocal.m4"
+ "configure"
+ "compile"
+ "config.guess"
+ "config.sub"
+ "ltmain.sh"
+ "depcomp"
+ "install-sh"
+ "missing"))
(delete-file-recursively "modules/dynamic_link/src/scripts/m4")
(for-each delete-file
'("modules/ast/src/cpp/parse/scanscilab.cpp"
@@ -9595,7 +9598,7 @@ computation is supported via MPI.")
"modules/ast/src/cpp/parse/parsescilab.cpp"))))))
(build-system gnu-build-system)
(native-inputs
- (list autoconf
+ (list autoconf-2.71
autoconf-archive
automake
bison
@@ -9612,8 +9615,9 @@ computation is supported via MPI.")
curl
fftw
gettext-minimal
- hdf5-1.14
+ hdf5-1.10
lapack
+ libarchive
libx11
libxml2
matio
@@ -9624,83 +9628,125 @@ computation is supported via MPI.")
tcl
tk))
(arguments
- (list
- ;; The tests require java code.
- #:tests? #f
- #:configure-flags
- #~(list
- "--enable-relocatable"
- "--disable-static-system-lib"
- "--enable-build-parser"
- ;; Disable all java code.
- "--without-gui"
- "--without-javasci"
- "--disable-build-help"
- "--with-external-scirenderer"
- ;; Tcl and Tk library locations.
- (string-append "--with-tcl-include="
- (dirname
- (search-input-file %build-inputs "include/tcl.h")))
- (string-append "--with-tcl-library="
- (dirname
- (search-input-directory %build-inputs "lib/tcl8")))
- (string-append "--with-tk-include="
- (dirname
- (search-input-file %build-inputs "include/tk.h")))
- (string-append "--with-tk-library="
- (dirname
- (search-input-directory %build-inputs "lib/tk8.6")))
- (string-append "--with-eigen-include="
- (search-input-directory %build-inputs "include/eigen3"))
- ;; Find and link to the OCaml Num package
- "OCAMLC=ocamlfind ocamlc -package num"
- "OCAMLOPT=ocamlfind ocamlopt -package num -linkpkg"
- ;; There are some 2018-fortran errors that are ignored
- ;; with this fortran compiler flag.
- "FFLAGS=-fallow-argument-mismatch")
- #:phases
- #~(modify-phases %standard-phases
- ;; The Num library is specified with the OCAMLC and
- ;; OCAMLOPT variables above.
- (add-after 'unpack 'fix-ocaml-num
- (lambda _
- (substitute*
- '("modules/scicos/Makefile.modelica.am"
- "modules/scicos/src/translator/makefile.mak"
- "modules/scicos/src/modelica_compiler/makefile.mak")
- (("nums\\.cmx?a") ""))))
- ;; Install only scilab-cli.desktop
- (add-after 'unpack 'remove-desktop-files
- (lambda _
- (substitute* "desktop/Makefile.am"
- (("desktop_DATA =")
- "desktop_DATA = scilab-cli.desktop\nDUMMY ="))))
- ;; These generated files are assumed to be present during
- ;; the build.
- (add-after 'bootstrap 'bootstrap-dynamic_link-scripts
- (lambda _
- (with-directory-excursion "modules/dynamic_link/src/scripts"
- ((assoc-ref %standard-phases 'bootstrap)))))
- (add-before 'build 'pre-build
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Fix scilab script.
- (substitute* "bin/scilab"
- (("\\/bin\\/ls")
- (search-input-file inputs "bin/ls")))
- ;; Fix core.start.
- (substitute* "modules/core/etc/core.start"
- (("'SCI/modules")
- "SCI+'/modules"))
- ;; Set SCIHOME to /tmp before macros compilation.
- (setenv "SCIHOME" "/tmp")))
- ;; Prevent race condition
- (add-after 'pre-build 'build-parsers
- (lambda* (#:key (make-flags #~'()) #:allow-other-keys)
- (with-directory-excursion "modules/ast"
- (apply invoke "make"
- "src/cpp/parse/parsescilab.cpp"
- "src/cpp/parse/scanscilab.cpp"
- make-flags)))))))
+ (let* ((tcl (this-package-input "tcl"))
+ (tk (this-package-input "tk")))
+ (list
+ #:configure-flags
+ #~(list
+ "--enable-relocatable"
+ "--disable-static-system-lib"
+ "--enable-build-parser"
+ ;; Disable all java code.
+ "--without-gui"
+ "--without-javasci"
+ "--disable-build-help"
+ "--with-external-scirenderer"
+ ;; Tcl and Tk library locations.
+ (string-append "--with-tcl-include=" #$tcl "/include")
+ (string-append "--with-tcl-library=" #$tcl "/lib")
+ (string-append "--with-tk-include=" #$tk "/include")
+ (string-append "--with-tk-library=" #$tk "/lib")
+ (string-append "--with-eigen-include="
+ (search-input-directory %build-inputs "include/eigen3"))
+ ;; Find and link to the OCaml Num package
+ "OCAMLC=ocamlfind ocamlc -package num"
+ "OCAMLOPT=ocamlfind ocamlopt -package num -linkpkg")
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; The Num library is specified with the OCAMLC and
+ ;; OCAMLOPT variables above.
+ (add-after 'unpack 'fix-ocaml-num
+ (lambda _
+ (substitute*
+ '("modules/scicos/Makefile.modelica.am"
+ "modules/scicos/src/translator/makefile.mak"
+ "modules/scicos/src/modelica_compiler/makefile.mak")
+ (("nums\\.cmx?a") ""))))
+ (add-after 'unpack 'fix-linking
+ (lambda _
+ (substitute* "modules/Makefile.am"
+ (("libscilab_cli_la_LDFLAGS = .*\\)" all)
+ (string-append all " -lcurl")))))
+ (add-after 'unpack 'set-version
+ (lambda _
+ (substitute* "modules/core/includes/version.h.in"
+ (("scilab-branch-main") ; version
+ (string-append
+ "scilab-"
+ #$(version-major+minor (package-version this-package)))))))
+ (add-after 'unpack 'restrain-to-scilab-cli
+ (lambda _
+ ;; Install only scilab-cli.desktop
+ (substitute* "desktop/Makefile.am"
+ (("desktop_DATA =")
+ "desktop_DATA = scilab-cli.desktop\nDUMMY ="))
+ ;; Replace scilab with scilab-cli for tests.
+ (substitute* "Makefile.incl.am"
+ (("scilab-bin") "scilab-cli-bin")
+ (("scilab -nwni") "scilab-cli")
+ ;; Do not install tests, demos and examples.
+ ;; This saves up to 140 Mo in the final output.
+ (("(TESTS|DEMOS|EXAMPLES)_DIR=.*" all kind)
+ (string-append kind "_DIR=")))))
+ (add-before 'check 'disable-failing-tests
+ (lambda _
+ (substitute* "Makefile"
+ (("TESTS = .*")
+ "TESTS =\n"))
+ (substitute* "modules/functions_manager/Makefile"
+ (("check:.*")
+ "check:\n"))
+ (substitute* "modules/types/Makefile"
+ (("\\$\\(MAKE\\) \\$\\(AM_MAKEFLAGS\\) check-am")
+ ""))))
+ ;; These generated files are assumed to be present during
+ ;; the build.
+ (add-after 'bootstrap 'bootstrap-dynamic_link-scripts
+ (lambda _
+ (with-directory-excursion "modules/dynamic_link/src/scripts"
+ ((assoc-ref %standard-phases 'bootstrap)))))
+ (add-before 'build 'pre-build
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Fix scilab script.
+ (substitute* "bin/scilab"
+ (("/bin/ls")
+ (search-input-file inputs "bin/ls")))
+ ;; Fix core.start.
+ (substitute* "modules/core/etc/core.start"
+ (("'SCI/modules")
+ "SCI+'/modules"))))
+ ;; Prevent race condition
+ (add-after 'pre-build 'build-parsers
+ (lambda* (#:key (make-flags #~'()) #:allow-other-keys)
+ (with-directory-excursion "modules/ast"
+ (apply invoke "make"
+ "src/cpp/parse/parsescilab.cpp"
+ "src/cpp/parse/scanscilab.cpp"
+ make-flags))))
+ ;; The startup script is mostly there to define the following env
+ ;; variables properly. We can do this with guix directly.
+ (add-after 'install 'rewrap-scilab-cli
+ (lambda _
+ (define (bin path) (string-append #$output "/bin/" path))
+ (delete-file (bin "scilab-cli"))
+ (wrap-program (bin "scilab-cli-bin")
+ `("SCI" = (,(string-append #$output "/share/scilab")))
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-append #$output "/lib/scilab")))
+ `("TCL_LIBRARY" = (,(string-append #$tcl "/lib")))
+ `("TK_LIBRARY" = (,(string-append #$tk "/lib"))))
+ (copy-file (bin "scilab-cli-bin") (bin "scilab-cli"))
+ (copy-file (bin ".scilab-cli-bin-real") (bin "scilab-cli-bin"))
+ (delete-file (bin ".scilab-cli-bin-real"))
+ (substitute* (bin "scilab-cli")
+ ;; Also set SCIHOME to sensible XDG base dirs value.
+ (("\\.scilab-cli-bin-real\"")
+ (string-append
+ "scilab-cli-bin\" -scihome "
+ "\"${XDG_STATE_HOME:-$HOME/.local/state}/scilab/"
+ #$(package-version this-package) "\""))
+ (("export SCI=")
+ "unset LANGUAGE\nexport SCI="))))))))
(home-page "https://www.scilab.org/")
(synopsis "Software for engineers and scientists")
(description "This package provides the non-graphical version of the Scilab