From 2fafd58626c8d67b6e4df5e537ae0ac7d6a97060 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Wed, 11 Jul 2018 10:56:06 +0200 Subject: [PATCH] ioapi added --- HDF5/ioapi/build | 60 ++++ HDF5/ioapi/files/Makefile.pncf.sed.patch | 271 ++++++++++++++++++ HDF5/ioapi/files/Makeinclude.OSX_x86_gfortmpi | 46 +++ HDF5/ioapi/files/variants | 1 + HDF5/ioapi/modulefile | 19 ++ 5 files changed, 397 insertions(+) create mode 100755 HDF5/ioapi/build create mode 100644 HDF5/ioapi/files/Makefile.pncf.sed.patch create mode 100644 HDF5/ioapi/files/Makeinclude.OSX_x86_gfortmpi create mode 100644 HDF5/ioapi/files/variants create mode 100644 HDF5/ioapi/modulefile diff --git a/HDF5/ioapi/build b/HDF5/ioapi/build new file mode 100755 index 0000000..6838d9e --- /dev/null +++ b/HDF5/ioapi/build @@ -0,0 +1,60 @@ +#!/usr/bin/env modbuild + +pbuild::set_download_url "https://gitlab.psi.ch/Pmodules/download/raw/master/$P-$V.tar.gz" + +pbuild::add_to_group 'HDF5' +pbuild::compile_in_sourcetree +pbuild::add_patch 'files/Makefile.pncf.sed.patch' + +pbuild::add_docfile README.txt +pbuild::add_docfile V32-CHANGES.txt +pbuild::add_docfile VERSION.txt +pbuild::add_docfile HTML/gpl.txt + +echo $SRC_DIR + +pbuild::post_prep() { + find "${SRC_DIR}" -name "*.mod" -exec rm {} \; + find "${SRC_DIR}" -name "*.o" -exec rm {} \; +} + +pbuild::pre_configure() { + config_args=() + config_args+=( "BASEDIR=${SRC_DIR}" ) + config_args+=( "CPLMODE=pncf" ) + config_args+=( "INSTALL=${PREFIX}" ) + config_args+=( "NCFLIBS=-lpnetcdf -lnetcdf -lnetcdff -lgfortran" ) + + case "${OS}" in + "Darwin" ) + config_args+=( "BIN=OSX_x86_gfortmpi" ) + ;; + * ) + echo "OS not supported!" 1>&2 + exit 1 + ;; + esac +} + +pbuild::pre_configure_Darwin() { + cd "${SRC_DIR}" + cp Makefile.template Makefile + cp -av "${BUILDBLOCK_DIR}/files/Makeinclude.OSX_x86_gfortmpi" "ioapi" +} + +pbuild::configure() { + cd "${SRC_DIR}" + make "${config_args[@]}" configure +} + +pbuild::build() { + make "${config_args[@]}" all +} + +pbuild::install() { + mkdir -p "${PREFIX}" + make "${config_args[@]}" install +} + +pbuild::make_all + diff --git a/HDF5/ioapi/files/Makefile.pncf.sed.patch b/HDF5/ioapi/files/Makefile.pncf.sed.patch new file mode 100644 index 0000000..c6b21e5 --- /dev/null +++ b/HDF5/ioapi/files/Makefile.pncf.sed.patch @@ -0,0 +1,271 @@ +Only in src/: .configure +Only in src/: .prep +Only in src/: Linux2_x86_64 +Only in src/: Makefile +Only in src/: OSX_x86_gfortmpi +Only in src/ioapi: Makefile +Only in src/ioapi: Makeinclude.OSX_x86_gfortmpi +Only in ioapi-3.2/ioapi: bilin.o +Only in ioapi-3.2/ioapi: bmatvec.o +Only in ioapi-3.2/ioapi: bufint3.o +Only in ioapi-3.2/ioapi: cbarnes1.o +Only in ioapi-3.2/ioapi: cbarnesN.o +Only in ioapi-3.2/ioapi: check3.o +Only in ioapi-3.2/ioapi: check3c.o +Only in ioapi-3.2/ioapi: chkbuf3.o +Only in ioapi-3.2/ioapi: chkfil3.o +Only in ioapi-3.2/ioapi: ckdesc3.o +Only in ioapi-3.2/ioapi: ckfile3.o +Only in ioapi-3.2/ioapi: ckgeom.o +Only in ioapi-3.2/ioapi: ckname.o +Only in ioapi-3.2/ioapi: cktflag3.o +Only in ioapi-3.2/ioapi: close3.o +Only in ioapi-3.2/ioapi: close3c.o +Only in ioapi-3.2/ioapi: crdict3.o +Only in ioapi-3.2/ioapi: crlf.o +Only in ioapi-3.2/ioapi: crtbuf3.o +Only in ioapi-3.2/ioapi: crtfil3.o +Only in ioapi-3.2/ioapi: crtkf.o +Only in ioapi-3.2/ioapi: currec.o +Only in ioapi-3.2/ioapi: currstep.o +Only in ioapi-3.2/ioapi: currstepc.o +Only in ioapi-3.2/ioapi: daymon.o +Only in ioapi-3.2/ioapi: daymonc.o +Only in ioapi-3.2/ioapi: dble2real.o +Only in ioapi-3.2/ioapi: dbllist.o +Only in ioapi-3.2/ioapi: ddtvar3.o +Only in ioapi-3.2/ioapi: ddtvar3c.o +Only in ioapi-3.2/ioapi: ddtvar3v.o +Only in ioapi-3.2/ioapi: desc3.o +Only in ioapi-3.2/ioapi: desc3c.o +Only in ioapi-3.2/ioapi: dmatvec.o +Only in ioapi-3.2/ioapi: dscgrid.o +Only in ioapi-3.2/ioapi: dscgridc.o +Only in ioapi-3.2/ioapi: dt2str.o +Only in ioapi-3.2/ioapi: dt2strc.o +Only in ioapi-3.2/ioapi: envgets.o +Only in ioapi-3.2/ioapi: filchk3.o +Only in ioapi-3.2/ioapi: filchk3c.o +Only in ioapi-3.2/ioapi: find1.o +Only in ioapi-3.2/ioapi: find2.o +Only in ioapi-3.2/ioapi: find3.o +Only in ioapi-3.2/ioapi: find4.o +Only in ioapi-3.2/ioapi: findc.o +Only in ioapi-3.2/ioapi: findr1.o +Only in ioapi-3.2/ioapi: findr2.o +Only in ioapi-3.2/ioapi: findr3.o +Only in ioapi-3.2/ioapi: findr4.o +Only in ioapi-3.2/ioapi: findsc.o +diff -ur ioapi-3.2/ioapi/fixed_src/STATE3.EXT src/ioapi/fixed_src/STATE3.EXT +--- ioapi-3.2/ioapi/fixed_src/STATE3.EXT 2017-06-20 20:00:05.000000000 +0200 ++++ src/ioapi/fixed_src/STATE3.EXT 2018-07-09 16:29:26.000000000 +0200 +@@ -11,8 +11,11 @@ + !.................................................................... + ! INCLUDE FILE STATE3.EXT + ! ++! PRIVATE! ++! For internal I/O API use only. ++! Do not use in model or other application code. + ! +-! DO NOT EDIT !! ++! DO NOT EDIT !! + ! + ! The EDSS/Models-3 I/O API depends in an essential manner + ! upon the contents of this INCLUDE file. ANY CHANGES are +Only in ioapi-3.2/ioapi: flush3.o +Only in ioapi-3.2/ioapi: gcd.o +Only in ioapi-3.2/ioapi: gctp.o +Only in ioapi-3.2/ioapi: get_endian.o +Only in ioapi-3.2/ioapi: getdate.o +Only in ioapi-3.2/ioapi: getdble.o +Only in ioapi-3.2/ioapi: getdfile.o +Only in ioapi-3.2/ioapi: getdfilec.o +Only in ioapi-3.2/ioapi: getdttime.o +Only in ioapi-3.2/ioapi: getefile.o +Only in ioapi-3.2/ioapi: getefilec.o +Only in ioapi-3.2/ioapi: getffile.o +Only in ioapi-3.2/ioapi: getmenu.o +Only in ioapi-3.2/ioapi: getnum.o +Only in ioapi-3.2/ioapi: getreal.o +Only in ioapi-3.2/ioapi: getstr.o +Only in ioapi-3.2/ioapi: getyn.o +Only in ioapi-3.2/ioapi: grdchk3.o +Only in ioapi-3.2/ioapi: gridops.o +Only in ioapi-3.2/ioapi: hhmmss.o +Only in ioapi-3.2/ioapi: hhmmssc.o +Only in ioapi-3.2/ioapi: index1.o +Only in ioapi-3.2/ioapi: init3.o +Only in ioapi-3.2/ioapi: init3c.o +Only in ioapi-3.2/ioapi: initblk3.o +Only in ioapi-3.2/ioapi: initlog3.o +Only in ioapi-3.2/ioapi: inqatt3.o +Only in ioapi-3.2/ioapi: inqatt3c.o +Only in ioapi-3.2/ioapi: interp3.o +Only in ioapi-3.2/ioapi: interp3c.o +Only in ioapi-3.2/ioapi: intg2real.o +Only in ioapi-3.2/ioapi: intlist.o +Only in ioapi-3.2/ioapi: iobin3.o +Only in ioapi-3.2/ioapi: iocpl.o +Only in ioapi-3.2/ioapi: iocplf2c.o +Only in ioapi-3.2/ioapi: ioparms3.o +Only in ioapi-3.2/ioapi: isdstime.o +Only in ioapi-3.2/ioapi: jstep3.o +Only in ioapi-3.2/ioapi: julian.o +Only in ioapi-3.2/ioapi: julianc.o +Only in ioapi-3.2/ioapi: junit.o +Only in ioapi-3.2/ioapi: kfindx.o +Only in ioapi-3.2/ioapi: kfopen.o +Only in ioapi-3.2/ioapi: kfread.o +Only in ioapi-3.2/ioapi: kfwrite.o +Only in ioapi-3.2/ioapi: lambert.o +Only in ioapi-3.2/ioapi: lblank.o +Only in ioapi-3.2/ioapi: len2.o +Only in ioapi-3.2/ioapi: ll2utm.o +Only in ioapi-3.2/ioapi: locat1.o +Only in ioapi-3.2/ioapi: locat2.o +Only in ioapi-3.2/ioapi: locat3.o +Only in ioapi-3.2/ioapi: locat4.o +Only in ioapi-3.2/ioapi: locatc.o +Only in ioapi-3.2/ioapi: locatr1.o +Only in ioapi-3.2/ioapi: locatr2.o +Only in ioapi-3.2/ioapi: locatr3.o +Only in ioapi-3.2/ioapi: locatr4.o +Only in ioapi-3.2/ioapi: locatsc.o +Only in ioapi-3.2/ioapi: lustr.o +Only in ioapi-3.2/ioapi: m3abort.o +Only in ioapi-3.2/ioapi: m3err.o +Only in ioapi-3.2/ioapi: m3errc.o +Only in ioapi-3.2/ioapi: m3exit.o +Only in ioapi-3.2/ioapi: m3exitc.o +Only in ioapi-3.2/ioapi: m3mesgc.o +Only in ioapi-3.2/ioapi: m3msg2.o +Only in ioapi-3.2/ioapi: m3utilio.mod +Only in ioapi-3.2/ioapi: m3utilio.o +Only in ioapi-3.2/ioapi: m3warn.o +Only in ioapi-3.2/ioapi: m3warnc.o +Only in ioapi-3.2/ioapi: mmddyy.o +Only in ioapi-3.2/ioapi: mmddyyc.o +Only in ioapi-3.2/ioapi: modatts3.mod +Only in ioapi-3.2/ioapi: modatts3.o +Only in ioapi-3.2/ioapi: modgctp.mod +Only in ioapi-3.2/ioapi: modgctp.o +Only in ioapi-3.2/ioapi: modmpasfio.mod +Only in ioapi-3.2/ioapi: modmpasfio.o +Only in ioapi-3.2/ioapi: modncfio.mod +Only in ioapi-3.2/ioapi: modncfio.o +Only in ioapi-3.2/ioapi: modpdata.mod +Only in ioapi-3.2/ioapi: modpdata.o +Only in ioapi-3.2/ioapi: modwrfio.mod +Only in ioapi-3.2/ioapi: modwrfio.o +Only in ioapi-3.2/ioapi: name2fid.o +Only in ioapi-3.2/ioapi: nameval.o +Only in ioapi-3.2/ioapi: nextime.o +Only in ioapi-3.2/ioapi: nextimec.o +Only in ioapi-3.2/ioapi: open3.o +Only in ioapi-3.2/ioapi: open3c.o +Only in ioapi-3.2/ioapi: opnfil3.o +Only in ioapi-3.2/ioapi: opnkf.o +Only in ioapi-3.2/ioapi: opnlist3.o +Only in ioapi-3.2/ioapi: opnlog3.o +Only in ioapi-3.2/ioapi: pcoef.o +Only in ioapi-3.2/ioapi: pgrdsum.o +Only in ioapi-3.2/ioapi: pmatvec.o +Only in ioapi-3.2/ioapi: pn_crtfil3.o +Only in ioapi-3.2/ioapi: pn_opnfil3.o +Only in ioapi-3.2/ioapi: pn_wrvars.o +Only in ioapi-3.2/ioapi: poly.o +Only in ioapi-3.2/ioapi: promptdfile.o +Only in ioapi-3.2/ioapi: promptffile.o +Only in ioapi-3.2/ioapi: promptgrid.o +Only in ioapi-3.2/ioapi: promptmfile.o +Only in ioapi-3.2/ioapi: rdatt3.o +Only in ioapi-3.2/ioapi: rdatt3c.o +Only in ioapi-3.2/ioapi: rdbndary.o +Only in ioapi-3.2/ioapi: rdbuf3.o +Only in ioapi-3.2/ioapi: rdcustom.o +Only in ioapi-3.2/ioapi: rddict3.o +Only in ioapi-3.2/ioapi: rdgrdded.o +Only in ioapi-3.2/ioapi: rdgrnest.o +Only in ioapi-3.2/ioapi: rdiddata.o +Only in ioapi-3.2/ioapi: rdprofil.o +Only in ioapi-3.2/ioapi: rdsmatrx.o +Only in ioapi-3.2/ioapi: rdtflag.o +Only in ioapi-3.2/ioapi: rdvars.o +Only in ioapi-3.2/ioapi: read3.o +Only in ioapi-3.2/ioapi: read3c.o +Only in ioapi-3.2/ioapi: read4d.o +Only in ioapi-3.2/ioapi: read4dc.o +Only in ioapi-3.2/ioapi: readsmet.o +Only in ioapi-3.2/ioapi: realist.o +Only in ioapi-3.2/ioapi: rmfile.o +Only in ioapi-3.2/ioapi: runspec.o +Only in ioapi-3.2/ioapi: scanint.o +Only in ioapi-3.2/ioapi: sec2time.o +Only in ioapi-3.2/ioapi: sec2timec.o +Only in ioapi-3.2/ioapi: secsdiff.o +Only in ioapi-3.2/ioapi: secsdiffc.o +Only in ioapi-3.2/ioapi: setsphere.o +Only in ioapi-3.2/ioapi: shut3.o +Only in ioapi-3.2/ioapi: shut3c.o +Only in ioapi-3.2/ioapi: skipl.o +Only in ioapi-3.2/ioapi: sleep3.o +Only in ioapi-3.2/ioapi: smatvec.o +Only in ioapi-3.2/ioapi: sortic.o +Only in ioapi-3.2/ioapi: sortir.o +Only in ioapi-3.2/ioapi: sortis.o +Only in ioapi-3.2/ioapi: splitline.o +Only in ioapi-3.2/ioapi: str2dble.o +Only in ioapi-3.2/ioapi: str2int.o +Only in ioapi-3.2/ioapi: str2real.o +Only in ioapi-3.2/ioapi: strlist.o +Only in ioapi-3.2/ioapi: sync3.o +Only in ioapi-3.2/ioapi: sync3c.o +Only in ioapi-3.2/ioapi: syncfid.o +Only in ioapi-3.2/ioapi: synchtao.o +Only in ioapi-3.2/ioapi: systemf.o +Only in ioapi-3.2/ioapi: time2sec.o +Only in ioapi-3.2/ioapi: time2secc.o +Only in ioapi-3.2/ioapi: trimlen.o +Only in ioapi-3.2/ioapi: ungridb.o +Only in ioapi-3.2/ioapi: ungridi.o +Only in ioapi-3.2/ioapi: upcase.o +Only in ioapi-3.2/ioapi: utm2ll.o +Only in ioapi-3.2/ioapi: wkday.o +Only in ioapi-3.2/ioapi: wkdayc.o +Only in ioapi-3.2/ioapi: wratt3.o +Only in ioapi-3.2/ioapi: wratt3c.o +Only in ioapi-3.2/ioapi: wrbndary.o +Only in ioapi-3.2/ioapi: wrbuf3.o +Only in ioapi-3.2/ioapi: wrcustom.o +Only in ioapi-3.2/ioapi: wrdict3.o +Only in ioapi-3.2/ioapi: wrgrdded.o +Only in ioapi-3.2/ioapi: wrgrnest.o +Only in ioapi-3.2/ioapi: wriddata.o +Only in ioapi-3.2/ioapi: write3.o +Only in ioapi-3.2/ioapi: write3c.o +Only in ioapi-3.2/ioapi: write4d.o +Only in ioapi-3.2/ioapi: write4dc.o +Only in ioapi-3.2/ioapi: wrmpigrd.o +Only in ioapi-3.2/ioapi: wrpatch.o +Only in ioapi-3.2/ioapi: wrprofil.o +Only in ioapi-3.2/ioapi: wrsmatrx.o +Only in ioapi-3.2/ioapi: wrtflag.o +Only in ioapi-3.2/ioapi: wrvars.o +Only in ioapi-3.2/ioapi: xtbuf3.o +Only in ioapi-3.2/ioapi: xtract3.o +Only in ioapi-3.2/ioapi: xtract3c.o +Only in ioapi-3.2/ioapi: year4.o +Only in ioapi-3.2/ioapi: yr2day.o +Only in src/m3tools: Makefile +diff -ur ioapi-3.2/m3tools/Makefile.pncf.sed src/m3tools/Makefile.pncf.sed +--- ioapi-3.2/m3tools/Makefile.pncf.sed 2017-10-21 03:37:21.000000000 +0200 ++++ src/m3tools/Makefile.pncf.sed 2018-07-09 18:01:58.000000000 +0200 +@@ -99,7 +99,7 @@ + insertgrid jul2greg juldate juldiff julshift \ + kfxtract latlon m3agmax m3agmask m3cple \ + m3combo m3diff m3edhdr m3fake m3hdr \ +-m3interp m3mask m3merge m3pair m3probe \ ++m3interp m3merge m3pair m3probe \ + m3stat m3totxt m3tproc m3tshift m3wndw \ + m3xtract mtxblend mtxbuild mtxcalc mtxcple \ + presterp presz projtool selmrg2d timeshift \ diff --git a/HDF5/ioapi/files/Makeinclude.OSX_x86_gfortmpi b/HDF5/ioapi/files/Makeinclude.OSX_x86_gfortmpi new file mode 100644 index 0000000..c2dbaaa --- /dev/null +++ b/HDF5/ioapi/files/Makeinclude.OSX_x86_gfortmpi @@ -0,0 +1,46 @@ +# Version "$Id: Makeinclude.Linux2_x86_64gfortmpi 1 2017-06-10 18:05:20Z coats $" +# +# Build MPI/PnetCDF distributed-file support using "mpif90" and "mpcc", +# where compilers are built "on top of" Gnu compilers +# +# 12/2013 by CJC: Conditional preprocessor-code "-DNEED_ARGS=1" +# to implement IARGC() and GETARG() for compilers +# ("gfortran" version 4.8 or later to be exact) that insist on +# enforcing F2003-only with no backwards nor industry-standards compatibility. +# +# Remove "-DNEED_ARGS=1" from ARCHFLAGS for version 4.7.x and earlier +# +# Use "-march=native -mtune=native" if compile-platform and compute-platform +# are the same. +# Use "-Wall -Wsurprising" for full diagnostics. + +AR = ar +CC = mpicc +CXX = mpiCC +FC = mpif90 +M4 = m4 +LINK = $(CC) + +## Module-include-directory command +MODI = -I +E132 = -ffixed-line-length-132 + +MFLAGS = -ffast-math -funroll-loops -m64 # -Wall -Wsurprising -march=native -mtune=native + +OMPFLAGS = -fopenmp +OMPLIBS = -fopenmp +COPTFLAGS = -O3 ${MFLAGS} +FOPTFLAGS = -O3 ${MFLAGS} +FPPFLAGS = -DF90=1 -DIOAPI_PNCF=1 +FSFLAGS = -fno-automatic +ARCHFLAGS = \ + -DAUTO_ARRAYS=1 \ + -DF90=1 -DFLDMN=1 \ + -DFSTR_L=int \ + -DIOAPI_NO_STDOUT=1 \ + -DNEED_ARGS=1 +PARFLAGS = +ARCHLIB = -dynamic -lm -lpthread -lc + +M4DEFFILE = $(PVM_ROOT)/conf/$(PVM_ARCH).m4 +PVMLIBS = -lpvm3 diff --git a/HDF5/ioapi/files/variants b/HDF5/ioapi/files/variants new file mode 100644 index 0000000..09884c3 --- /dev/null +++ b/HDF5/ioapi/files/variants @@ -0,0 +1 @@ +ioapi/3.2 unstable gcc/7.3.0 openmpi/1.10.7 hdf5/1.10.1 netcdf/4.6.1 parallel-netcdf/1.9.0 diff --git a/HDF5/ioapi/modulefile b/HDF5/ioapi/modulefile new file mode 100644 index 0000000..be7b1dd --- /dev/null +++ b/HDF5/ioapi/modulefile @@ -0,0 +1,19 @@ +#%Module1.0 + +module-whatis "Models-3 Input/Output Applications Programming Interface" +module-url "https://www.cmascenter.org/ioapi/" +module-license "GNU GPLv2" +module-maintainer "Achim Gsell " + +module-help " +The Models-3 Input/Output Applications Programming Interface (I/O API) is +a selective and direct-access programming interface to the data: you tell +the system what variables and dates and times you're talking about and it +figures all the stuff about record numbers, etc., for itself. Also, you +don't have to read the data in consecutive order, or to write it in order, +either -- you just ask for what you want, and the I/O API finds it for you +(although there are moderate performance penalties for writing data out-of- +order). The files are self-describing files -- that is, the file headers +have all the dimensioning and descriptive information needed about the data +in them. +"