Toggle diff (322 lines)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 653e76027a..b2029db615 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -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 David Elsing <david.elsing@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1376,12 +1377,48 @@ (define-public hdf4-alt
(synopsis
"HDF4 without netCDF API, can be combined with the regular netCDF library")))
-(define-public hdf5-1.8
- (package
- (name "hdf5")
- (version "1.8.23")
- (source
- (origin
+(define hdf5-snippet
+ #~(begin
+ (for-each delete-file (find-files "." "Makefile\\.in$"))
+ (when (file-exists? "autom4te.cache")
+ (delete-file-recursively "autom4te.cache"))
+ (for-each (lambda (file)
+ (when (file-exists? file)
+ (delete-file file)))
+ (list
+ "configure"
+ "bin/ltmain.sh"
+ "bin/compile"
+ "bin/config.guess"
+ "bin/config.sub"
+ "bin/install-sh"
+ "bin/missing"
+ "bin/test-driver"
+ "bin/depcomp"
+ "src/H5config.h.in"
+ "src/H5Epubgen.h"
+ "src/H5Einit.h"
+ "src/H5Eterm.h"
+ "src/H5Edefin.h"
+ "src/H5version.h"
+ "src/H5overflow.h"
+ "aclocal.m4"
+ "hl/tools/gif2h5/testfiles/ex_image2.h5"
+ "hl/tools/gif2h5/testfiles/5giftst.h5"
+ "hl/src/H5LTparse.h"
+ "hl/src/H5LTparse.c"
+ "hl/src/H5LTanalyze.c"
+ ;; In later releases
+ "m4/libtool.m4"
+ "m4/ltoptions.m4"
+ "m4/ltsugar.m4"
+ "m4/ltversion.m4"
+ "m4/lt~obsolete.m4"))))
+
+;; In the 1.8.22 and 1.8.23 release, some m4 scripts are missing
+(define hdf5-1.8.21-source
+ (let ((version "1.8.21"))
+ (origin
(method url-fetch)
(uri (list (string-append "https://support.hdfgroup.org/ftp/HDF5/releases/"
"hdf5-" (version-major+minor version)
@@ -1394,18 +1431,53 @@ (define-public hdf5-1.8
(string-append major minor)))
"/src/hdf5-" version ".tar.bz2")))
(sha256
- (base32 "0km65mr6dgk4ia2dqr1b9dzw9qg15j5z35ymbys9cnny51z1zb39"))
- (patches (search-patches "hdf5-config-date.patch"))))
+ (base32 "03glk4w4wyb1jyb443g53y3y1ncnf6mj2cqwm6avfr2awkgb3cg5"))
+ (modules '((guix build utils)))
+ (snippet hdf5-snippet)
+ (patches (search-patches "hdf5-config-date.patch")))))
+
+(define-public hdf5-1.8
+ (package
+ (name "hdf5")
+ (version "1.8.23")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (list (string-append "https://support.hdfgroup.org/ftp/HDF5/releases/"
+ "hdf5-" (version-major+minor version)
+ "/hdf5-" version "/src/hdf5-"
+ version ".tar.bz2")
+ (string-append "https://support.hdfgroup.org/ftp/HDF5/"
+ "current"
+ (match (string-split version #\.)
+ ((major minor _ ...)
+ (string-append major minor)))
+ "/src/hdf5-" version ".tar.bz2")))
+ (sha256
+ (base32 "0km65mr6dgk4ia2dqr1b9dzw9qg15j5z35ymbys9cnny51z1zb39"))
+ (modules '((guix build utils)))
+ (snippet hdf5-snippet)
+ (patches (search-patches "hdf5-config-date.patch"))))
(build-system gnu-build-system)
(inputs
(list zlib))
(native-inputs
- (list gfortran perl)) ;part of the test machinery needs Perl
+ (list autoconf
+ automake
+ bison
+ flex
+ gfortran
+ libtool
+ ;; Needed to generate some headers and for tests
+ perl
+ which))
(outputs '("out" ; core library
"fortran")) ; fortran interface
(arguments
- `(;; Some of the users, notably Flann, need the C++ interface.
- #:configure-flags '("--enable-cxx"
+ (list
+ ;; Some of the users, notably Flann, need the C++ interface.
+ #:configure-flags #~(list
+ "--enable-cxx"
"--enable-fortran"
"--enable-fortran2003"
@@ -1418,44 +1490,71 @@ (define-public hdf5-1.8
"--enable-threadsafe"
"--with-pthread"
"--enable-unsupported")
- ;; Use -fPIC to allow the R bindings to link with the static libraries
- #:make-flags (list "CFLAGS=-fPIC"
- "CXXFLAGS=-fPIC")
- #:phases
- (modify-phases %standard-phases
- (add-before 'configure 'patch-configure
- (lambda* (#:key outputs #:allow-other-keys)
- (substitute* "configure"
- (("/bin/mv") "mv"))
- (substitute* "fortran/src/Makefile.in"
- (("libhdf5_fortran_la_LDFLAGS =")
- (string-append "libhdf5_fortran_la_LDFLAGS = -Wl,-rpath="
- (assoc-ref outputs "fortran") "/lib")))
- (substitute* "hl/fortran/src/Makefile.in"
- (("libhdf5hl_fortran_la_LDFLAGS =")
- (string-append "libhdf5hl_fortran_la_LDFLAGS = -Wl,-rpath="
- (assoc-ref outputs "fortran") "/lib")))))
- (add-after 'configure 'patch-settings
- (lambda _
- ;; libhdf5.settings contains the full path of the
- ;; compilers used, and its contents are included in
- ;; libhdf5.so. We truncate the hashes to avoid
- ;; unnecessary store references to those compilers:
- (substitute* "src/libhdf5.settings"
- (("(/gnu/store/)([a-zA-Z0-9]*)" all prefix hash)
- (string-append prefix (string-take hash 10) "..."))
- ;; Don't record the build-time kernel version to make the
- ;; settings file reproducible.
- (("Uname information:.*")
- "Uname information: Linux\n"))))
- (add-after 'install 'patch-references
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
- (zlib (assoc-ref inputs "zlib")))
- (substitute* (find-files bin "h5p?cc")
- (("-lz" lib)
- (string-append "-L" zlib "/lib " lib))))))
- (add-after 'install 'split
+ ;; Use -fPIC to allow the R bindings to link with the static libraries
+ #:make-flags #~(list "CFLAGS=-fPIC"
+ "CXXFLAGS=-fPIC")
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; These scripts are missing in this release
+ (add-after 'unpack 'copy-scripts
+ (lambda _
+ (invoke "tar" "-xf" #$hdf5-1.8.21-source
+ "-C" "m4" "--strip-components=2"
+ "hdf5-1.8.21/m4/aclocal_fc.m4"
+ "hdf5-1.8.21/m4/aclocal_cxx.m4")
+ (invoke "tar" "-xf" #$(package-source hdf5-1.10)
+ "-C" "bin" "--strip-components=2"
+ "hdf5-1.10.9/bin/genparser")))
+ (add-after 'copy-scripts 'make-gen-deterministic
+ (lambda _
+ (substitute* "bin/make_err"
+ (("keys %major" all)
+ (string-append "sort " all))
+ (("while.*each \\(%section\\).*")
+ (string-append
+ "foreach $sect_name (sort keys %section) {\n"
+ " $sect_desc = $section{$sect_name};\n")))))
+ (add-after 'copy-scripts 'generate-flexbison
+ (lambda _
+ (invoke "bash" "bin/genparser" "hl/src")))
+ (add-before 'configure 'patch-configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "configure"
+ (("/bin/mv") "mv"))
+ (substitute* "fortran/src/Makefile.in"
+ (("libhdf5_fortran_la_LDFLAGS =")
+ (string-append "libhdf5_fortran_la_LDFLAGS = -Wl,-rpath="
+ (assoc-ref outputs "fortran") "/lib")))
+ (substitute* "hl/fortran/src/Makefile.in"
+ (("libhdf5hl_fortran_la_LDFLAGS =")
+ (string-append "libhdf5hl_fortran_la_LDFLAGS = -Wl,-rpath="
+ (assoc-ref outputs "fortran") "/lib")))))
+ (add-after 'configure 'patch-settings
+ (lambda _
+ ;; libhdf5.settings contains the full path of the
+ ;; compilers used, and its contents are included in
+ ;; libhdf5.so. We truncate the hashes to avoid
+ ;; unnecessary store references to those compilers:
+ (substitute* "src/libhdf5.settings"
+ (("(/gnu/store/)([a-zA-Z0-9]*)" all prefix hash)
+ (string-append prefix (string-take hash 10) "..."))
+ ;; Don't record the build-time kernel version to make the
+ ;; settings file reproducible.
+ (("Uname information:.*")
+ "Uname information: Linux\n"))))
+ (add-after 'configure 'generate-headers
+ (lambda _
+ (invoke "perl" "bin/make_err" "src/H5err.txt")
+ (invoke "perl" "bin/make_vers" "src/H5vers.txt")
+ (invoke "perl" "bin/make_overflow" "src/H5overflow.txt")))
+ (add-after 'install 'patch-references
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
+ (zlib (assoc-ref inputs "zlib")))
+ (substitute* (find-files bin "h5p?cc")
+ (("-lz" lib)
+ (string-append "-L" zlib "/lib " lib))))))
+ (add-after 'install 'split
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Move all fortran-related files
(let* ((out (assoc-ref outputs "out"))
@@ -1515,11 +1614,25 @@ (define-public hdf5-1.10
"/src/hdf5-" version ".tar.bz2")))
(sha256
(base32 "14gih7kmjx4h3lc7pg4fwcl28hf1qqkf2x7rljpxqvzkjrqbxi00"))
- (patches (search-patches "hdf5-config-date.patch"))))))
+ (modules '((guix build utils)))
+ (snippet hdf5-snippet)
+ (patches (search-patches "hdf5-config-date.patch"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments hdf5-1.8)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (delete 'copy-scripts)
+ (add-after 'unpack 'patch-trace-shebang
+ (lambda _
+ (for-each
+ patch-shebang
+ (find-files "bin"
+ (lambda (file stat)
+ (executable-file? file))))))))))))
(define-public hdf5-1.12
(package
- (inherit hdf5-1.8)
+ (inherit hdf5-1.10)
(version "1.12.2")
(source
(origin
@@ -1535,11 +1648,13 @@ (define-public hdf5-1.12
"/src/hdf5-" version ".tar.bz2")))
(sha256
(base32 "1zlawdzb0gsvcxif14fwr5ap2gk4b6j02wirr2hcx8hkcbivp20s"))
+ (modules '((guix build utils)))
+ (snippet hdf5-snippet)
(patches (search-patches "hdf5-config-date.patch"))))))
(define-public hdf5-1.14
(package
- (inherit hdf5-1.8)
+ (inherit hdf5-1.10)
(version "1.14.0")
(source
(origin
@@ -1555,6 +1670,8 @@ (define-public hdf5-1.14
"/src/hdf5-" version ".tar.bz2")))
(sha256
(base32 "181bdh8hp7v9xqwcby3lknr92lxlicc2hqscba3f5nhf8lrr9rz4"))
+ (modules '((guix build utils)))
+ (snippet hdf5-snippet)
(patches (search-patches "hdf5-config-date.patch"))))))
(define-public hdf5
diff --git a/gnu/packages/patches/hdf5-config-date.patch b/gnu/packages/patches/hdf5-config-date.patch
index c105435dc2..d9710f91e9 100644
--- a/gnu/packages/patches/hdf5-config-date.patch
+++ b/gnu/packages/patches/hdf5-config-date.patch
@@ -1,14 +1,14 @@
Honor SOURCE_DATE_EPOCH when exporting configuration date.
Autoconf-level patch submitted upstream on Wed Apr 13 17:03:23 UTC 2016
---- a/configure
-+++ b/configure
-@@ -27737,7 +28573,14 @@
-
+--- a/configure.ac
++++ b/configure.ac
+@@ -3566,7 +3566,14 @@
+ AC_SUBST([H5_VERSION])
## Configuration date
-- CONFIG_DATE="`date`"
-+ CONFIG_DATE="`date -u`"
+-AC_SUBST([CONFIG_DATE]) CONFIG_DATE="`date`"
++AC_SUBST([CONFIG_DATE]) CONFIG_DATE="`date -u`"
+if test -n "$SOURCE_DATE_EPOCH"; then
+ CONFIG_DATE=`date -u -d "@$SOURCE_DATE_EPOCH" 2>/dev/null \
+ || date -u -r "$SOURCE_DATE_EPOCH" 2>/dev/null`
@@ -18,4 +18,4 @@ Autoconf-level patch submitted upstream on Wed Apr 13 17:03:23 UTC 2016
+fi
## User doing the configuration
- CONFIG_USER="`whoami`@`hostname`"
+ AC_SUBST([CONFIG_USER]) CONFIG_USER="`whoami`@`hostname`"
\ No newline at end of file
--
2.40.1