Permalink
Fetching contributors…
Cannot retrieve contributors at this time
203 lines (171 sloc) 6.84 KB
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup muniversal 1.0
PortGroup mpi 1.0
name hdf5
version 1.10.2
revision 0
set shortversion [join [lrange [split ${version} .] 0 1] .]
categories science
maintainers {mmoll @mamoll} openmaintainer
description HDF5 general purpose library and file format for storing\
scientific data
long_description HDF5 is a data model, library, and file format for storing\
and managing data. It supports an unlimited variety of\
datatypes, and is designed for flexible and efficient I/O\
and for high volume and complex data. HDF5 is portable and\
is extensible, allowing applications to evolve in their use\
of HDF5. The HDF5 Technology suite includes tools and\
applications for managing, manipulating, viewing, and\
analyzing data in the HDF5 format.
homepage https://portal.hdfgroup.org/display/HDF5
platforms darwin
master_sites \
https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${shortversion}/hdf5-${version}/src
checksums rmd160 1df1af071878997f04655212fa67360990861f5a \
sha256 1cad5b7bfdf128dfc53cd16fba48f6e7ae4e93c75c371d9ec8dfc4df0c1fcb71 \
size 8609163
mpi.setup -gcc44 -gcc45
use_bzip2 yes
depends_lib port:zlib
use_parallel_build yes
patchfiles patch-tools-src-misc-h5cc.in.diff
# llvm-gcc-4.2 produced code fails type conversion tests
# Upstream suggestion is use -O0. Clang-produced code passes all tests.
compiler.blacklist llvm-gcc-4.2
# #pragma pack() results in "too many #pragma options align=reset"
compiler.blacklist-append gcc-3.3 gcc-4.0 gcc-4.2 apple-gcc-4.2
if {[vercmp ${xcodeversion} 4.0] < 0} {
# configure.cxx is still /usr/bin/llvm-g++-4.2
compiler.blacklist-append clang
}
if {[ variant_isset gcc8 ]} {
# see https://trac.macports.org/ticket/56977 and
# https://forum.hdfgroup.org/t/1-10-2-h5detect-compile-error-gcc-8-1-0-on-centos-7-2-solved/4441/3
# This can probably be removed in the next version
patchfiles-append patch-src-H5detect.c.diff
}
# Use lib/hdf5 rather than hdf5/lib plugin directory
configure.args --with-zlib=yes \
--enable-build-mode=production --disable-fortran \
--disable-cxx --disable-hl --enable-shared --enable-static \
--disable-parallel --disable-threadsafe \
--with-default-plugindir=${prefix}/lib/hdf5
# http://mail.hdfgroup.org/pipermail/hdf-forum_hdfgroup.org/2010-March/002682.html
license NCSA
default_variants +cxx +hl
post-configure {
if {[variant_isset universal]} {
set dirs {}
foreach arch ${universal_archs_to_use} {
lappend dirs ${worksrcpath}-${arch}
}
} else {
set dirs ${worksrcpath}
}
foreach dir ${dirs} {
reinplace -E {s|-arch [a-z0-9_]+||g} \
${dir}/tools/src/misc/h5cc \
${dir}/c++/src/h5c++ \
${dir}/src/libhdf5.settings \
${dir}/fortran/src/h5fc
reinplace {s|ccache ||} ${dir}/tools/src/misc/h5cc
reinplace {s|ccache ||} ${dir}/c++/src/h5c++
}
}
post-destroot {
xinstall -d ${destroot}${prefix}/share/hdf5/
xinstall -m 444 ${worksrcpath}/COPYING\
${destroot}${prefix}/share/hdf5/
}
pre-activate {
if {![catch {set installed [lindex [registry_active hdf5-18] 0]}]} {
set _version [lindex $installed 1]
if {[vercmp $_version 1.8.15] < 0} {
registry_deactivate_composite hdf5-18 "" [list ports_nodepcheck 1]
}
}
}
test.run yes
test.target check
variant szip description {Enable szip support. (Noncommercial license)} {
depends_lib-append port:szip
configure.args-append --with-szlib=yes
license Noncommercial
}
variant hl description {
Enable High Level interface.
+hl is EXPERIMENTAL with +threadsafe
} {
configure.args-delete --disable-hl
configure.args-append --enable-hl
}
variant cxx description {
Enable c++ interface.
+cxx is EXPERIMENTAL with +threadsafe or any mpi variant
} {
configure.args-delete --disable-cxx
configure.args-append --enable-cxx
}
variant fortran description {
Enable Fortran bindings.
+fortran is EXPERIMENTAL with +threadsafe
} {
configure.args-delete --disable-fortran
configure.args-append --enable-fortran --enable-fortran2003
if {![fortran_variant_isset]} {
default_variants +gfortran
}
}
if {[ variant_isset fortran ] && ![ fortran_variant_isset ] } {
ui_error "+fortran requires a fortran compiler to be selected"
return -code error
}
if {([ variant_isset gfortran ] || [ variant_isset g95 ]) && ![ variant_isset fortran ]} {
default_variants +fortran
}
variant threadsafe description {
Enable threadsafety.
+threadsafe is EXPERIMENTAL with +cxx, +fortran, or any mpi variant
} {
configure.args-delete --disable-threadsafe
configure.args-append --enable-threadsafe --with-pthread
}
if {[ variant_isset threadsafe ] && ([ variant_isset cxx ] ||
[ variant_isset hl ] ||
[ variant_isset fortran ]) ||
([ mpi_variant_isset ]) &&
([ variant_isset cxx ] || [ variant_isset threadsafe ]) } {
# Tell hdf5 to configure in this experimental configuration
configure.args-append --enable-unsupported
notes-append {
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
hdf5 has been installed in an unsupported "Experimental" mode due to\
selected variants. See "port variants hdf5 | grep EXPERIMENTAL" for more\
information.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
pre-configure {
ui_warn {
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
hdf5 will been configured in an unsupported "Experimental" mode due to\
selected variants. See "port variants hdf5 | grep EXPERIMENTAL" for more\
information.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
}
if {[ mpi_variant_isset ]} {
configure.args-delete --disable-parallel
configure.args-append --enable-parallel
}
notes-append {
Mac users may need to set the environment variable "HDF5_USE_FILE_LOCKING"\
to the five-character string "FALSE" when accessing network mounted files. \
This is an application run-time setting, not a configure or build setting. \
Otherwise errors such as "unable to open file" or "HDF5 error" may be \
encountered.
}
livecheck.type regex
livecheck.url http://www.hdfgroup.org/HDF5/release/obtain5.html
livecheck.regex 5-(\[0-9.\]+\[0-9\]+)