summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Johnson <glenn-johnson@uiowa.edu>2021-12-24 07:43:13 -0600
committerGitHub <noreply@github.com>2021-12-24 14:43:13 +0100
commitd098f92c4a8bbcfffba69dacb711e936c732fe6f (patch)
tree85da80e0386e0d5049428202da489b4412178041
parent6ed282bb2da04790e6e399faad4d2ba8dfc214c4 (diff)
downloadspack-d098f92c4a8bbcfffba69dacb711e936c732fe6f.tar.gz
spack-d098f92c4a8bbcfffba69dacb711e936c732fe6f.tar.bz2
spack-d098f92c4a8bbcfffba69dacb711e936c732fe6f.tar.xz
spack-d098f92c4a8bbcfffba69dacb711e936c732fe6f.zip
r-hdf5r: use pkg-config to find hdf5 (#27847)
* r-hdf5r: use pkg-config to find hdf5 Since hdf5 was switched from autotools to cmake, the hdf5 compiler wrappers can not be used to find and configure hdf5. This PR switches to using pkg-config for configuration. * Add comment about configure patch
-rw-r--r--var/spack/repos/builtin/packages/r-hdf5r/configure.patch98
-rw-r--r--var/spack/repos/builtin/packages/r-hdf5r/package.py24
2 files changed, 110 insertions, 12 deletions
diff --git a/var/spack/repos/builtin/packages/r-hdf5r/configure.patch b/var/spack/repos/builtin/packages/r-hdf5r/configure.patch
new file mode 100644
index 0000000000..3997edd0b2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/r-hdf5r/configure.patch
@@ -0,0 +1,98 @@
+diff -ru a/configure b/configure
+--- a/configure 2021-11-15 13:13:34.000000000 -0600
++++ b/configure 2021-12-07 15:08:23.118115118 -0600
+@@ -3673,43 +3673,15 @@
+ with_hdf5="no"
+ with_hdf5_fortran="no"
+ else
+- HDF5_SHOW=$(eval $H5CC -show)
+
+- HDF5_CC=$(eval $H5CC -show | $AWK '{print $1}')
+- if test "$HDF5_CC" = "ccache"; then
+- HDF5_CC=$(eval $H5CC -show | $AWK '{print $2}')
+- fi
+-
+-
+- HDF5_VERSION=$(eval $H5CC -showconfig | $GREP 'HDF5 Version:' \
+- | $AWK '{print $3}')
++ HDF5_VERSION=$(eval pkg-config --modversion hdf5)
+ HDF5_MAJOR_VERSION=$(echo $HDF5_VERSION | $AWK -F \. '{print $1}')
+ HDF5_MINOR_VERSION=$(echo $HDF5_VERSION | $AWK -F \. {'print $2'})
+ HDF5_REVISION_VERSION=$(echo $HDF5_VERSION | $AWK -F \. {'print $3'})
+
+- HDF5_tmp_flags=$(eval $H5CC -showconfig \
+- | $GREP 'FLAGS\|Extra libraries:' \
+- | $AWK -F: '{printf("%s "), $2}' )
+-
+- HDF5_tmp_inst=$(eval $H5CC -showconfig \
+- | $GREP 'Installation point:' \
+- | $AWK '{print $NF}' )
+-
+- HDF5_CPPFLAGS="-I${HDF5_tmp_inst}/include"
+-
+- for arg in $HDF5_SHOW $HDF5_tmp_flags ; do
+- case "$arg" in
+- -I*) echo $HDF5_CPPFLAGS | $GREP -e "$arg" 2>&1 >/dev/null \
+- || HDF5_CPPFLAGS="$arg $HDF5_CPPFLAGS"
+- ;;
+- -L*) echo $HDF5_LDFLAGS | $GREP -e "$arg" 2>&1 >/dev/null \
+- || HDF5_LDFLAGS="$arg $HDF5_LDFLAGS"
+- ;;
+- -l*) echo $HDF5_LIBS | $GREP -e "$arg" 2>&1 >/dev/null \
+- || HDF5_LIBS="$arg $HDF5_LIBS"
+- ;;
+- esac
+- done
++
++ HDF5_CPPFLAGS=$(eval pkg-config --cflags hdf5)
++ HDF5_LDFLAGS=$(eval pkg-config --libs hdf5)
+
+ HDF5_LIBS="$HDF5_LIBS -lhdf5"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $HDF5_VERSION)" >&5
+@@ -3725,7 +3697,6 @@
+ ax_lib_hdf5_save_CPPFLAGS=$CPPFLAGS
+ ax_lib_hdf5_save_LIBS=$LIBS
+ ax_lib_hdf5_save_LDFLAGS=$LDFLAGS
+- CC=$HDF5_CC
+ CPPFLAGS=$HDF5_CPPFLAGS
+ LIBS=$HDF5_LIBS
+ LDFLAGS=$HDF5_LDFLAGS
+@@ -3893,20 +3864,6 @@
+ with_hdf5_fortran="yes"
+
+
+- for arg in `$H5FC -show`
+- do
+- case "$arg" in #(
+- -I*) echo $HDF5_FFLAGS | $GREP -e "$arg" >/dev/null \
+- || HDF5_FFLAGS="$arg $HDF5_FFLAGS"
+- ;;#(
+- -L*) echo $HDF5_FFLAGS | $GREP -e "$arg" >/dev/null \
+- || HDF5_FFLAGS="$arg $HDF5_FFLAGS"
+- echo $HDF5_FFLAGS | $GREP -e "-I${arg#-L}" >/dev/null \
+- || HDF5_FFLAGS="-I${arg#-L} $HDF5_FFLAGS"
+- ;;
+- esac
+- done
+-
+ for arg in $HDF5_LIBS
+ do
+ case "$arg" in #(
+@@ -4384,8 +4341,6 @@
+ as_fn_error $? "${GREP} does not support option -o" "$LINENO" 5
+ fi
+
+- LIBS=`${H5CC} -show | ${GREP} -o " \-[lL][^[:space:]]\+" | tr "\n" " "`
+-
+
+ HDF5R_LIBS="${LIBS} -L. -lhdf5_hl -lhdf5 -lz -lm"
+
+@@ -4447,8 +4402,6 @@
+
+
+
+- HDF5R_CPPFLAGS=`${H5CC} -show -c myconftest.c | ${GREP} -o "\-I[^[:space:]]\+" | tr "\n" " "`
+-
+ rm -f myconftest.c
+ fi
+
diff --git a/var/spack/repos/builtin/packages/r-hdf5r/package.py b/var/spack/repos/builtin/packages/r-hdf5r/package.py
index 860270bafe..d0bb6ff8d6 100644
--- a/var/spack/repos/builtin/packages/r-hdf5r/package.py
+++ b/var/spack/repos/builtin/packages/r-hdf5r/package.py
@@ -20,21 +20,21 @@ class RHdf5r(RPackage):
url = "https://cloud.r-project.org/src/contrib/hdf5r_1.2.0.tar.gz"
list_url = "https://cloud.r-project.org/src/contrib/Archive/hdf5r"
+ version('1.3.5',
+ sha256='87b75173ab226a9fbaa5b28289349f3c56b638629560a172994b8f9323c1622f')
version('1.3.3', sha256='a0f83cbf21563e81dbd1a1bd8379623ed0c9c4df4e094c75013abfd7a5271545')
version('1.2.0', sha256='58813e334fd3f9040038345a7186e5cb02090898883ac192477a76a5b8b4fe81')
depends_on('r@3.2.2:', type=('build', 'run'))
depends_on('r-r6', type=('build', 'run'))
depends_on('r-bit64', type=('build', 'run'))
- depends_on('hdf5@1.8.13:')
-
- def configure_args(self):
- if 'mpi' in self.spec:
- args = [
- '--with-hdf5={0}/h5pcc'.format(self.spec['hdf5'].prefix.bin),
- ]
- else:
- args = [
- '--with-hdf5={0}/h5cc'.format(self.spec['hdf5'].prefix.bin),
- ]
- return args
+ depends_on('hdf5@1.8.13:+hl')
+ depends_on('pkgconfig', type='build')
+
+ # The configure script in the package uses the hdf5 h5cc compiler wrapper
+ # in the PATH to configure hdf5. That works fine if hdf5 was built with
+ # autotools but the hdf5 package in Spack is built with cmake. The compiler
+ # wrapper built with cmake does not support the '-show' or '-showconfig'
+ # flags. The following patch replaces those commands in the configure
+ # script with pkg-config commands.
+ patch('configure.patch')