From: Efraim Flashner <efraim@flashner.co.il>
To: David Elsing <david.elsing@posteo.net>
Cc: 66201-done@debbugs.gnu.org
Subject: bug#66201: [PATCH 1/2] gnu: scilab: Update to 2023.1.0.
Date: Wed, 4 Oct 2023 18:00:34 +0300 [thread overview]
Message-ID: <ZR1-Eosd9vaLF2Yi@3900XT> (raw)
In-Reply-To: <20230925211319.9698-1-david.elsing@posteo.net>
[-- Attachment #1: Type: text/plain, Size: 18310 bytes --]
Thanks. Patch pushed, with a couple of comments below:
On Mon, Sep 25, 2023 at 09:13:12PM +0000, David Elsing wrote:
> * gnu/packages/maths.scm (scilab): Update to 2023.1.0.
> [source] Use git-fetch.
> <modules>: Add (guix build utils) and (ice-9 ftw).
> <patches>: Add patch for hdf5 >= 1.10.
> <snippet>: Move contents of the "scilab" directory to its parents. Remove
> the other files and autogenerated files.
> [native-inputs]: Add autoconf, autoconf-archive, automake, bison, eigen, flex,
> libtool, ocaml and ocaml-findlib.
> [inputs]: Add ocaml-num, replace hdf5-1.8 by hdf5-1.14 and suitesparse-3 by
> suitesparse.
> [arguments]: Remove quasiquote. Add --enable-build-parser,
> --with-eigen-include=..., OCAMLC=... and OCAMLOPT=... to #:configure-flags.
> <#:phases>: Add fix-ocaml-num, remove-desktop-files,
> bootstrap-dynamic_link-scripts and build-parsers phases. Remove fixes for
> compilation and linker errors from the pre-build phase.
> [home-page]: Update URL.
> [description]: Add two spaces between sentences.
> [license]: Update to gpl2 and bsd-3.
> ---
> gnu/packages/maths.scm | 256 +++++++++++-------
> .../patches/scilab-hdf5-1.8-api.patch | 71 +++++
> 2 files changed, 236 insertions(+), 91 deletions(-)
> create mode 100644 gnu/packages/patches/scilab-hdf5-1.8-api.patch
>
> diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
> index 62d4adfbd1..ff50a99599 100644
> --- a/gnu/packages/maths.scm
> +++ b/gnu/packages/maths.scm
> @@ -61,6 +61,7 @@
> ;;; Copyright © 2022 Roman Scherer <roman.scherer@burningswell.com>
> ;;; Copyright © 2023 Jake Leporte <jakeleporte@outlook.com>
> ;;; Copyright © 2023 Camilo Q.S. (Distopico) <distopico@riseup.net>
> +;;; Copyright © 2023 David Elsing <david.elsing@posteo.net>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -8422,112 +8423,185 @@ (define-public optizelle
> (define-public scilab
> (package
> (name "scilab")
> - (version "5.5.2")
> + (version "2023.1.0")
> (source
> (origin
> - (method url-fetch)
> - (uri
> - (string-append "https://www.scilab.org/download/"
> - version "/scilab-" version "-src.tar.gz"))
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://gitlab.com/scilab/scilab")
> + (commit version)))
> + (file-name (git-file-name name version))
> (sha256
> - (base32 "0phg9pn24yw98hbh475ik84dnikf1225b2knh7qbhdbdx6fm2d57"))))
> + (base32
> + "0hbqsnc67b4f8zc690kl79bwhjaasykjlmqbln8iymnjcn3l5ypd"))
> + (modules '((guix build utils)
> + (ice-9 ftw)))
> + (patches (search-patches "scilab-hdf5-1.8-api.patch"))
> + (snippet
Wow, that is a big snippet. I added some comments and grouped up some
repetitive commands with a for-each.
> + #~(begin
> + (for-each
> + (lambda (file)
> + (unless (member file '("." ".." "scilab"))
> + (delete-file-recursively file)))
> + (scandir "."))
> + (for-each
> + (lambda (file)
> + (unless (member file '("." ".."))
> + (rename-file (string-append "scilab/" file) file)))
> + (scandir "scilab"))
> + (delete-file-recursively "scilab")
> + (delete-file "aclocal.m4")
> + (for-each
> + delete-file
> + (find-files "." "^Makefile\\.in$"))
> + (delete-file-recursively "config")
> + (delete-file "configure")
> + (delete-file-recursively "libs/GetWindowsVersion")
> + (delete-file "m4/ax_cxx_compile_stdcxx.m4")
> + (delete-file "m4/lib-ld.m4")
> + (delete-file "m4/libtool.m4")
> + (delete-file "m4/ltoptions.m4")
> + (delete-file "m4/ltsugar.m4")
> + (delete-file "m4/ltversion.m4")
> + (delete-file "m4/lt~obsolete.m4")
> + (delete-file "m4/pkg.m4")
> + (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"))
> + (delete-file-recursively "modules/dynamic_link/src/scripts/m4")
> + (delete-file "modules/ast/src/cpp/parse/scanscilab.cpp")
> + (delete-file "modules/ast/src/cpp/parse/bison/parsescilab.output")
> + (delete-file "modules/ast/includes/parse/parsescilab.hxx")
> + (delete-file "modules/ast/src/cpp/parse/parsescilab.cpp")))))
> (build-system gnu-build-system)
> - (native-inputs (list pkg-config gfortran))
> - (inputs (list libxml2
> - `(,pcre "bin")
> + (native-inputs
> + (list autoconf
> + autoconf-archive
> + automake
> + bison
> + eigen
> + flex
> + gfortran
> + libtool
> + ocaml
> + ocaml-findlib
> + pkg-config))
> + (inputs (list `(,pcre "bin")
> `(,pcre "out")
> - readline
> - hdf5-1.8
> - curl
> - openblas
> - lapack
> + libxml2
> arpack-ng
> + curl
> fftw
> gettext-minimal
> - suitesparse-3
> - tcl
> - tk
> + hdf5-1.14
> + lapack
> libx11
> - matio))
> + matio
> + ocaml-num
> + openblas
> + readline
> + suitesparse
> + tcl
> + tk))
> (arguments
> - `(#:tests? #f
> - #:configure-flags
> - ,#~(list
> - "--enable-relocatable"
> - "--disable-static-system-lib"
> - ;; Disable all java code.
> - "--without-gui"
> - "--without-javasci"
> - "--disable-build-help"
> - "--with-external-scirenderer"
> - ;; Tcl and Tk library locations.
> - (string-append "--with-tcl-include="
> - (string-drop-right
> - (search-input-file %build-inputs "include/tcl.h")
> - (string-length "/tcl.h")))
> - (string-append "--with-tcl-library="
> - (string-drop-right
> - (search-input-directory %build-inputs "lib/tcl8")
> - (string-length "/tcl8")))
> - (string-append "--with-tk-include="
> - (string-drop-right
> - (search-input-file %build-inputs "include/tk.h")
> - (string-length "/tk.h")))
> - (string-append "--with-tk-library="
> - (string-drop-right
> - (search-input-directory %build-inputs "lib/tk8.6")
> - (string-length "/tk8.6")))
> - ;; There are some 2018-fortran errors that are ignored
> - ;; with this fortran compiler flag.
> - "FFLAGS=-fallow-argument-mismatch")
> - #:phases
> - ,#~(modify-phases %standard-phases
> - (add-before 'build 'pre-build
> - (lambda _
> - ;; Fix scilab script.
> - (substitute* "bin/scilab"
> - (("\\/bin\\/ls")
> - (which "ls")))
> - ;; Fix core.start.
> - (substitute* "modules/core/etc/core.start"
> - (("'SCI/modules")
> - "SCI+'/modules"))
> - ;; Fix fortran compilation error.
> - (substitute*
> - "modules/differential_equations/src/fortran/twodq.f"
> - (("node\\(10\\),node1\\(10\\),node2\\(10\\),coef")
> - "node(9),node1(9),node2(9),coef"))
> - ;; Fix C compilation errors.
> - ;; remove &
> - (substitute* "modules/hdf5/src/c/h5_readDataFromFile_v1.c"
> - (("(H5Rdereference\\(_iDatasetId, H5R_OBJECT, )&(.*)\\);$"
> - all common ref)
> - (string-append common ref)))
> - ;; fix multiple definitions
> - (substitute* "modules/tclsci/src/c/TCL_Command.h"
> - (("^__thread")
> - "extern __thread"))
> - (substitute* "modules/tclsci/src/c/InitTclTk.c"
> - (("BOOL TK_Started = FALSE;" all)
> - (string-append all "\n"
> - "__threadId TclThread;" "\n"
> - "__threadSignal InterpReady;" "\n"
> - "__threadSignalLock InterpReadyLock;"
> - "\n")))
> - ;; Fix CPP compilation errors.
> - (substitute* "modules/output_stream/src/cpp/diary_manager.cpp"
> - (("if \\(array_size > 0\\)")
> - "if (*array_size > 0)"))
> - ;; Set SCIHOME to /tmp before macros compilation.
> - (setenv "SCIHOME" "/tmp"))))))
> - (home-page "https://scilab.org")
> + (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="
Here I've used dirname, so the following 3 lines become:
(dirname
(search-input-file %build-inputs "include/tcl.h"))
> + (string-drop-right
> + (search-input-file %build-inputs "include/tcl.h")
> + (string-length "/tcl.h")))
> + (string-append "--with-tcl-library="
> + (string-drop-right
> + (search-input-directory %build-inputs "lib/tcl8")
> + (string-length "/tcl8")))
> + (string-append "--with-tk-include="
> + (string-drop-right
> + (search-input-file %build-inputs "include/tk.h")
> + (string-length "/tk.h")))
> + (string-append "--with-tk-library="
> + (string-drop-right
> + (search-input-directory %build-inputs "lib/tk8.6")
> + (string-length "/tk8.6")))
> + (string-append "--with-eigen-include="
While I was at it I changed this one to also use search-input-directory,
so we can replace eigen if desired (--with-input=eigen=my-eigen) and
still keep the flag working.
> + #$(this-package-native-input "eigen")
> + "/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"
I changed the invoke line to:
((assoc-ref %standard-phases 'bootstrap))
> + (invoke "autoreconf" "-i"))))
> + (add-before 'build 'pre-build
> + (lambda _
> + ;; Fix scilab script.
> + (substitute* "bin/scilab"
> + (("\\/bin\\/ls")
> + (which "ls")))
I'm not sure if scilab can be cross-compiled, but we want to use
search-input instead of (which "ls"), so we get the one for the correct
architecture.
> + ;; 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 _
> + (with-directory-excursion "modules/ast"
> + (invoke "make" "src/cpp/parse/parsescilab.cpp"
> + "src/cpp/parse/scanscilab.cpp")))))))
In order to keep the make-flags (if there are any) this becomes:
(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)))))))
> + (home-page "https://www.scilab.org/")
> (synopsis "Software for engineers and scientists")
> (description "This package provides the non-graphical version of the Scilab
> -software for engineers and scientists. Scilab is used for signal processing,
> +software for engineers and scientists. Scilab is used for signal processing,
> statistical analysis, image enhancement, fluid dynamics simulations, numerical
> optimization, and modeling, simulation of explicit and implicit dynamical
> systems and symbolic manipulations.")
> - (license license:cecill))) ;CeCILL v2.1
> + (license (list license:gpl2 license:bsd-3))))
>
> (define-public ruy
> (let ((commit "caa244343de289f913c505100e6a463d46c174de")
> diff --git a/gnu/packages/patches/scilab-hdf5-1.8-api.patch b/gnu/packages/patches/scilab-hdf5-1.8-api.patch
> new file mode 100644
> index 0000000000..8b453e4720
> --- /dev/null
> +++ b/gnu/packages/patches/scilab-hdf5-1.8-api.patch
> @@ -0,0 +1,71 @@
> +This patch fixes the compilation with hdf5 version >= 1.10. Adapted from
> +https://aur.archlinux.org/cgit/aur.git/plain/hdf5_18_api.patch?h=scilab-git.
> +
> +diff -ur a/scilab/modules/hdf5/includes/HDF5Objects.h b/scilab/modules/hdf5/includes/HDF5Objects.h
> +--- a/scilab/modules/hdf5/includes/HDF5Objects.h
> ++++ b/scilab/modules/hdf5/includes/HDF5Objects.h
> +@@ -16,14 +16,12 @@
> + #ifndef __HDF5OBJECTS_H__
> + #define __HDF5OBJECTS_H__
> +
> +-#define H5_NO_DEPRECATED_SYMBOLS
> + #undef H5_USE_16_API
> ++#define H5_USE_18_API
> +
> +-#define H5Eset_auto_vers 2
> + #include <hdf5.h>
> + #include <hdf5_hl.h>
> +
> +-#undef H5_NO_DEPRECATED_SYMBOLS
> +
> + //#define __HDF5OBJECTS_DEBUG__
> + //#define __HDF5ERROR_PRINT__
> +diff -ur a/scilab/modules/hdf5/Makefile.am b/scilab/modules/hdf5/Makefile.am
> +--- a/scilab/modules/hdf5/Makefile.am
> ++++ b/scilab/modules/hdf5/Makefile.am
> +@@ -104,8 +104,7 @@
> + -DH5Gopen_vers=2 \
> + -DH5Tget_array_dims_vers=2 \
> + -DH5Acreate_vers=2 \
> +- -DH5Rdereference_vers=2 \
> +- -DNO_DEPRECATED_SYMBOLS
> ++ -DH5Rdereference_vers=2
> +
> +
> + libscihdf5_la_CPPFLAGS = \
> +diff -ur a/scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_listvar_v3.cpp b/scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_listvar_v3.cpp
> +--- a/scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_listvar_v3.cpp
> ++++ b/scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_listvar_v3.cpp
> +@@ -13,6 +13,8 @@
> + *
> + */
> +
> ++#define H5_USE_18_API
> ++
> + #include <vector>
> + #include "function.hxx"
> + #include "string.hxx"
> +diff -ur a/scilab/modules/hdf5/src/c/h5_readDataFromFile.c b/scilab/modules/hdf5/src/c/h5_readDataFromFile.c
> +--- a/scilab/modules/hdf5/src/c/h5_readDataFromFile.c
> ++++ b/scilab/modules/hdf5/src/c/h5_readDataFromFile.c
> +@@ -13,7 +13,7 @@
> + *
> + */
> +
> +-#define H5_NO_DEPRECATED_SYMBOLS
> ++#define H5_USE_18_API
> +
> + #ifndef _MSC_VER
> + #include <sys/time.h>
> +diff -ur a/scilab/modules/hdf5/src/c/h5_readDataFromFile_v1.c b/scilab/modules/hdf5/src/c/h5_readDataFromFile_v1.c
> +--- a/scilab/modules/hdf5/src/c/h5_readDataFromFile_v1.c
> ++++ b/scilab/modules/hdf5/src/c/h5_readDataFromFile_v1.c
> +@@ -13,7 +13,7 @@
> + *
> + */
> +
> +-#define H5_NO_DEPRECATED_SYMBOLS
> ++#define H5_USE_18_API
> +
> + #ifndef _MSC_VER
> + #include <sys/time.h>
> --
> 2.41.0
>
>
>
>
--
Efraim Flashner <efraim@flashner.co.il> רנשלפ םירפא
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2023-10-04 15:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-25 21:00 [bug#66201] [PATCH 0/2] Update scilab and remove suitesparse-3 David Elsing
2023-09-25 21:13 ` [bug#66201] [PATCH 1/2] gnu: scilab: Update to 2023.1.0 David Elsing
2023-10-04 15:00 ` Efraim Flashner [this message]
2023-09-25 21:13 ` [bug#66201] [PATCH 2/2] gnu: Remove suitesparse-3 David Elsing
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZR1-Eosd9vaLF2Yi@3900XT \
--to=efraim@flashner.co.il \
--cc=66201-done@debbugs.gnu.org \
--cc=david.elsing@posteo.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).