From: Thomas Danckaert <post@thomasdanckaert.be>
To: ludo@gnu.org
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] gnu: Add hdf4
Date: Wed, 12 Oct 2016 20:50:46 +0200 (CEST) [thread overview]
Message-ID: <20161012.205046.1873161880859659372.post@thomasdanckaert.be> (raw)
In-Reply-To: <87shs1ohgv.fsf@gnu.org>
[-- Attachment #1: Type: Text/Plain, Size: 2052 bytes --]
From: ludo@gnu.org (Ludovic Courtès)
Subject: Re: [PATCH] gnu: Add hdf4
Date: Wed, 12 Oct 2016 14:54:40 +0200
>> - I've also added a variant “hdf4-alt”: by default, HDF4 includes
>> a
>> netCDF API to access HDF4 files, which clashes with the symbols
>> in
>> the real netCDF library when you try to use both libraries in
>> your
>> program. This variant uses the “--disable-netcdf” configure
>> flag
>> to avoid this. We could call it “hdf4-nonetcdf”, but the name
>> “hdf4-alt” is used by Debian, so maybe it's good to use the
>> same?
>
> Would “hdf4-minimal” sound appropriate here? That’s a convention
> we use
> in similar cases. Otherwise “hdf4-alt” is fine with me.
With --disable-netcdf, the library still includes all the same
features, the netCDF API function names are just mangled to avoid
conflicts. So it's not really more “minimal” than the regular HDF4
:-) I'd either go for something that explicitly mentions netCDF, or
hdf4-alt because that's what Debian uses.
>> + (substitute*
>> + (map (lambda (dir) (string-append dir
>> "/Makefile.in"))
>> + '("hdf" "hdf/examples" "hdf/fortran"
>> "hdf/src"
>> + "hdf/test" "hdf/util" "mfhdf"
>> "mfhdf/dumper"
>> + "mfhdf/examples" "mfhdf/fortran"
>> "mfhdf/hdfimport"
>> + "mfhdf/hdiff" "mfhdf/hrepack"
>> "mfhdf/libsrc"
>> + "mfhdf/ncgen" "mfhdf/ncdump"
>> "mfhdf/nctest"
>> + "mfhdf/test" "mfhdf/xdr"))
>
> Maybe simply (find-files "." "^Makefile\\.in$")?
Yes, I was convinced something like that had to exist, but am not
good at reading the docs, it seems.
> - CONFIG_DATE="`date`"
> + CONFIG_DATE="$SOURCE_DATE_EPOCH"
>
> The smaller the patch, the better. :-)
I went with
+CONFIG_DATE=`date -u -d "@$SOURCE_DATE_EPOCH"`
(which just results in 1 Jan 1970, but anyway)
cheers,
Thomas
[-- Attachment #2: 0001-gnu-Add-hdf4.patch --]
[-- Type: Text/X-Patch, Size: 6375 bytes --]
From 3778ec2dfea4e5d7c0712ae1d354b463c8ee6694 Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <thomas.danckaert@gmail.com>
Date: Wed, 28 Sep 2016 10:34:58 +0200
Subject: [PATCH] gnu: Add hdf4
* gnu/packages/maths.scm (hdf4, hdf4-alt): New variables.
* gnu/packages/patches/hdf4-reproducibility.patch: New file.
* gnu/packages/patches/hdf4-shared-fortran.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add patches.
Co-Authored-By: Jeremy Robst <jpro@bas.ac.uk>
---
gnu/local.mk | 2 +
gnu/packages/maths.scm | 59 +++++++++++++++++++++++++
gnu/packages/patches/hdf4-reproducibility.patch | 35 +++++++++++++++
gnu/packages/patches/hdf4-shared-fortran.patch | 25 +++++++++++
4 files changed, 121 insertions(+)
create mode 100644 gnu/packages/patches/hdf4-reproducibility.patch
create mode 100644 gnu/packages/patches/hdf4-shared-fortran.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 1ce95f2..1b65e74 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -570,6 +570,8 @@ dist_patch_DATA = \
%D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \
%D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
%D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
+ %D%/packages/patches/hdf4-shared-fortran.patch \
+ %D%/packages/patches/hdf4-reproducibility.patch \
%D%/packages/patches/hdf5-config-date.patch \
%D%/packages/patches/hdf-eos5-build-shared.patch \
%D%/packages/patches/hdf-eos5-remove-gctp.patch \
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index d5e82bb..07934e3 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -445,6 +445,65 @@ computations.")
(home-page "https://github.com/OkoSanto/GCTP")
(license license:public-domain))) ;https://www2.usgs.gov/laws/info_policies.html
+(define-public hdf4
+ (package
+ (name "hdf4")
+ (version "4.2.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://support.hdfgroup.org/ftp/HDF/releases/HDF"
+ version "/src/hdf-" version ".tar.bz2"))
+ (sha256
+ (base32 "16yr50j845zlfx20skmw3y75ww77akk9gg0affjqkg66ih5r03mv"))
+ (patches (search-patches "hdf4-reproducibility.patch"
+ "hdf4-shared-fortran.patch"))))
+
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("gfortran" ,gfortran)
+ ("bison" ,bison)
+ ("flex" ,flex)))
+ (inputs
+ `(("zlib" ,zlib)
+ ("libjpeg" ,libjpeg)))
+ (arguments
+ `(#:parallel-tests? #f
+ #:configure-flags '("--enable-shared")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'patchbuild
+ (lambda _
+ (substitute*
+ '("mfhdf/hdfimport/testutil.sh.in" "hdf/util/testutil.sh.in")
+ (("/bin/rm") "rm")
+ (("/bin/mkdir") "mkdir"))
+ (substitute* (find-files "." "^Makefile\\.in$")
+ (("@HDF_BUILD_XDR_TRUE@XDR_ADD = \
+-R\\$\\(abs_top_builddir\\)/mfhdf/xdr/\\.libs") "")
+ (("@HDF_BUILD_SHARED_TRUE@AM_LDFLAGS = \
+-R\\$\\(abs_top_builddir\\)/mfhdf/libsrc/\\.libs \
+-R\\$\\(abs_top_builddir\\)/hdf/src/\\.libs \\$\\(XDR_ADD\\)") "")))))))
+ (home-page "https://www.hdfgroup.org/products/hdf4/")
+ (synopsis
+ "Library and multi-object file format for storing and managing data")
+ (description "HDF4 is a library and multi-object file format for storing
+and managing data between machines. HDF4 is an older hierarchical data format,
+incompatible with HDF5.")
+ (license
+ (license:non-copyleft
+ "https://www.hdfgroup.org/ftp/HDF/HDF_Current/src/unpacked/COPYING"))))
+
+(define-public hdf4-alt
+ (package
+ (inherit hdf4)
+ (name "hdf4-alt")
+ (arguments
+ (substitute-keyword-arguments (package-arguments hdf4)
+ ((#:configure-flags flags) `(cons* "--disable-netcdf" ,flags))))
+ (synopsis
+ "HDF4 without netCDF API, can be combined with the regular netCDF library")))
+
(define-public hdf5
(package
(name "hdf5")
diff --git a/gnu/packages/patches/hdf4-reproducibility.patch b/gnu/packages/patches/hdf4-reproducibility.patch
new file mode 100644
index 0000000..9b5fea6
--- /dev/null
+++ b/gnu/packages/patches/hdf4-reproducibility.patch
@@ -0,0 +1,35 @@
+Remove/patch unreproducible config data.
+
+diff --git a/configure b/configure
+index eb9f346..ebab94d 100755
+--- a/configure
++++ b/configure
+@@ -23163,7 +23163,7 @@ H4_VERSION="`cut -d' ' -f3 $srcdir/README.txt | head -1`"
+
+
+ ## Configuration date
+- CONFIG_DATE="`date`"
++CONFIG_DATE=`date -u -d "@$SOURCE_DATE_EPOCH"`
+
+ ## User doing the configuration
+ CONFIG_USER="`whoami`@`hostname`"
+diff --git a/libhdf4.settings.in b/libhdf4.settings.in
+index 1d9bbb9..4180d72 100644
+--- a/libhdf4.settings.in
++++ b/libhdf4.settings.in
+@@ -5,10 +5,10 @@ General Information:
+ -------------------
+ HDF4 Version: @H4_VERSION@
+ Configured on: @CONFIG_DATE@
+- Configured by: @CONFIG_USER@
++ Configured by: guix
+ Configure mode: @CONFIG_MODE@
+- Host system: @host_cpu@-@host_vendor@-@host_os@
+- Uname information: @UNAME_INFO@
++ Host system: guix
++ Uname information: guix
+ Libraries: @STATIC_SHARED@
+ Installation point: @prefix@
+
+--
+2.10.0
diff --git a/gnu/packages/patches/hdf4-shared-fortran.patch b/gnu/packages/patches/hdf4-shared-fortran.patch
new file mode 100644
index 0000000..60db355
--- /dev/null
+++ b/gnu/packages/patches/hdf4-shared-fortran.patch
@@ -0,0 +1,25 @@
+Allow building a shared library with Fortran.
+---
+ configure | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/configure b/configure
+index f37d2fa..eb9f346 100755
+--- a/configure
++++ b/configure
+@@ -6141,12 +6141,6 @@ if test "X${enable_shared}" != "Xyes"; then
+ enable_shared="no"
+ fi
+
+-if test "X${enable_shared}" = "Xyes"; then
+- if test "X${BUILD_FORTRAN}" = "Xyes"; then
+- as_fn_error $? "Cannot build shared fortran libraries. Please configure with --disable-fortran flag." "$LINENO" 5
+- fi
+-fi
+-
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+ $as_echo_n "checking whether ln -s works... " >&6; }
+--
+2.10.0
+
--
2.10.0
next prev parent reply other threads:[~2016-10-12 18:51 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-11 8:57 [PATCH] gnu: Add hdf4 Thomas Danckaert
2016-10-12 12:54 ` Ludovic Courtès
2016-10-12 18:50 ` Thomas Danckaert [this message]
2016-10-12 20:28 ` Ludovic Courtès
2016-10-14 8:11 ` Andreas Enge
2016-10-14 11:13 ` Thomas Danckaert
[not found] ` <20161014.110029.603260973900204345.post@thomasdanckaert.be>
2016-10-16 15:05 ` Andreas Enge
-- strict thread matches above, loose matches on Subject: below --
2016-05-23 17:22 Jeremy Robst
2016-05-23 18:17 ` Leo Famulari
2016-05-24 13:20 ` Jeremy Robst
2016-05-24 19:06 ` Eric Bavier
2016-05-25 17:42 ` Jeremy Robst
2016-05-27 17:19 ` Leo Famulari
2016-05-28 14:32 ` Ludovic Courtès
2016-05-29 17:36 ` Jeremy Robst
2016-05-29 22:07 ` Ludovic Courtès
2016-06-02 14:43 ` Eric Bavier
2016-06-02 14:58 ` Jeremy Robst
2016-06-03 8:37 ` Ludovic Courtès
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161012.205046.1873161880859659372.post@thomasdanckaert.be \
--to=post@thomasdanckaert.be \
--cc=guix-devel@gnu.org \
--cc=ludo@gnu.org \
/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 external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.