Package: guix-patches;
Reported by: David Elsing <david.elsing <at> posteo.net>
Date: Mon, 3 Jul 2023 21:59:02 UTC
Severity: normal
Tags: patch
Done: David Elsing <david.elsing <at> posteo.net>
Bug is archived. No further changes may be made.
Message #8 received at 64448 <at> debbugs.gnu.org (full text, mbox):
From: David Elsing <david.elsing <at> posteo.net> To: 64448 <at> debbugs.gnu.org Cc: David Elsing <david.elsing <at> posteo.net> Subject: [PATCH 1/2] gnu: hdf5-1.8: Remove generated files from source Date: Mon, 3 Jul 2023 22:00:46 +0000
* gnu/packages/maths.scm (hdf5-snippet): New variable. (hdf5-1.8.21-source): New variable. (hdf5-1.8)[source](modules, snippet): New fields. [native-inputs]: Add autoconf, automake, bison, flex, libtool and which. [arguments] Use Gexps. <#:phases>: Add 'copy-scripts, 'make-gen-deterministic, 'generate-flexbison and 'generate-headers phases. (hdf5-1.10)[source](modules, snippet): New fields. [arguments]<#:phases>: Use 'substitute-keyword-arguments' and delete 'copy-scripts phase. (hdf5-1.12): Inherit from hdf5-1.10. [source](modules, snippet): New fields. (hdf5-1.14): Inherit from hdf5-1.10. [source](modules, snippet): New fields. * gnu/packages/patches/hdf5-config-date.patch: Apply to configure.ac instead of configure. --- gnu/packages/maths.scm | 221 +++++++++++++++----- gnu/packages/patches/hdf5-config-date.patch | 14 +- 2 files changed, 176 insertions(+), 59 deletions(-) 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 <at> akirakyle.com> ;;; Copyright © 2022 Roman Scherer <roman.scherer <at> burningswell.com> ;;; Copyright © 2023 Jake Leporte <jakeleporte <at> outlook.com> +;;; Copyright © 2023 David Elsing <david.elsing <at> 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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.