Skip to content

Commit 76955f9

Browse files
committed
ECLand: Add manual netcdf build for Intel and NVHPC
1 parent 09b22f1 commit 76955f9

File tree

3 files changed

+119
-2
lines changed

3 files changed

+119
-2
lines changed

.github/tools/install-netcdf-c.sh

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/usr/bin/env bash
2+
3+
version=4.9.2
4+
5+
TEMPORARY_FILES="${TMPDIR:-/tmp}"
6+
export NETCDF_INSTALL_DIR=$(pwd)/netcdf-install
7+
while [ $# != 0 ]; do
8+
case "$1" in
9+
"--prefix")
10+
export NETCDF_INSTALL_DIR="$2"; shift
11+
;;
12+
"--tmpdir")
13+
TEMPORARY_FILES="$2"; shift
14+
;;
15+
"--version")
16+
version="$2"; shift
17+
;;
18+
"--hdf5-root")
19+
export HDF5_ROOT="$2"; shift
20+
;;
21+
*)
22+
echo "Unrecognized argument '$1'"
23+
exit 1
24+
;;
25+
esac
26+
shift
27+
done
28+
29+
NETCDF_MIRROR=https://downloads.unidata.ucar.edu/netcdf-c/
30+
NETCDF_VERSION=${version}
31+
32+
URL=${NETCDF_MIRROR}/${NETCDF_VERSION}/netcdf-c-${NETCDF_VERSION}.tar.gz
33+
FOLDER=netcdf-c-${NETCDF_VERSION}
34+
35+
if [ ! -d "${TEMPORARY_FILES}/${FOLDER}" ]; then
36+
echo "Downloading ${TEMPORARY_FILES}/${FOLDER} from URL [${URL}]"
37+
mkdir -p ${TEMPORARY_FILES}
38+
curl --location \
39+
"${URL}" | tar zx -C "${TEMPORARY_FILES}"
40+
else
41+
echo "Download already present in ${TEMPORARY_FILES}/${FOLDER}"
42+
fi
43+
44+
mkdir -p ${TEMPORARY_FILES}/build-${FOLDER} && cd ${TEMPORARY_FILES}/build-${FOLDER}
45+
rm -rf ./*
46+
cmake -G Ninja ${TEMPORARY_FILES}/${FOLDER} \
47+
-DHDF5_DIR=${HDF5_ROOT}/cmake -DCMAKE_INSTALL_PREFIX="${NETCDF_INSTALL_DIR}" \
48+
-DENABLE_TESTS=OFF
49+
cmake --build . --config Release
50+
cmake --install .
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/usr/bin/env bash
2+
3+
version=4.6.1
4+
5+
TEMPORARY_FILES="${TMPDIR:-/tmp}"
6+
export NETCDF_INSTALL_DIR=$(pwd)/netcdf-install
7+
while [ $# != 0 ]; do
8+
case "$1" in
9+
"--prefix")
10+
export NETCDF_INSTALL_DIR="$2"; shift
11+
;;
12+
"--tmpdir")
13+
TEMPORARY_FILES="$2"; shift
14+
;;
15+
"--version")
16+
version="$2"; shift
17+
;;
18+
"--netcdf-root")
19+
export NETCDF_ROOT="$2"; shift
20+
;;
21+
*)
22+
echo "Unrecognized argument '$1'"
23+
exit 1
24+
;;
25+
esac
26+
shift
27+
done
28+
29+
NETCDF_MIRROR=https://downloads.unidata.ucar.edu/netcdf-fortran/
30+
NETCDF_VERSION=${version}
31+
32+
URL=${NETCDF_MIRROR}/${NETCDF_VERSION}/netcdf-fortran-${NETCDF_VERSION}.tar.gz
33+
FOLDER=/netcdf-fortran-${NETCDF_VERSION}
34+
35+
if [ ! -d "${TEMPORARY_FILES}/${FOLDER}" ]; then
36+
echo "Downloading ${TEMPORARY_FILES}/${FOLDER} from URL [${URL}]"
37+
mkdir -p ${TEMPORARY_FILES}
38+
curl --location \
39+
"${URL}" | tar zx -C "${TEMPORARY_FILES}"
40+
else
41+
echo "Download already present in ${TEMPORARY_FILES}/${FOLDER}"
42+
fi
43+
44+
45+
mkdir -p ${TEMPORARY_FILES}/build-${FOLDER} && cd ${TEMPORARY_FILES}/build-${FOLDER}
46+
rm -rf ./*
47+
NETCDF_LIB_DIR="$(${NETCDF_ROOT}/bin/nc-config --libdir)"
48+
cmake -G Ninja ${TEMPORARY_FILES}/${FOLDER} \
49+
-DnetCDF_LIBRARIES="${NETCDF_LIB_DIR}/libnetcdf.so" -DnetCDF_INCLUDE_DIR="${NETCDF_ROOT}/include" \
50+
-DENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX="${NETCDF_INSTALL_DIR}"
51+
cmake --build . --config Release
52+
cmake --install .

.github/workflows/build.yml

+17-2
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,10 @@ jobs:
116116
echo "SDKROOT=$(xcrun --show-sdk-path)" >> $GITHUB_ENV
117117
brew install ninja
118118
brew install libomp
119-
brew install netcdf-fortran
120119
brew install coreutils
121120
else
122121
sudo apt-get update
123122
sudo apt-get install ninja-build
124-
sudo apt-get install libnetcdff-dev
125123
fi
126124
127125
pip3 install numpy
@@ -183,6 +181,23 @@ jobs:
183181
[ -f ${DEPS_DIR}/openmpi/env.sh ] && source ${DEPS_DIR}/openmpi/env.sh
184182
[ -z ${MPI_HOME+x} ] || echo "MPI_HOME=${MPI_HOME}" >> $GITHUB_ENV
185183
184+
- name: Install NetCDF C
185+
run: |
186+
if [[ -f ${{ env.DEPS_DIR }}/netcdf/bin/nc-config ]]; then
187+
echo "::debug::NetCDF C restored from cache"
188+
else
189+
${ECRAD_TOOLS}/install-netcdf-c.sh --prefix ${{ env.DEPS_DIR }}/netcdf --hdf5-root ${HDF5_ROOT}
190+
fi
191+
echo "NETCDF_ROOT=${{ env.DEPS_DIR }}/netcdf" >> $GITHUB_ENV
192+
193+
- name: Install NetCDF Fortran
194+
run: |
195+
if [[ -f ${NETCDF_ROOT}/bin/nf-config ]]; then
196+
echo "::debug::NetCDF Fortran restored from cache"
197+
else
198+
${ECLAND_TOOLS}/install-netcdf-fortran.sh --prefix ${{ env.DEPS_DIR }}/netcdf --netcdf-root ${NETCDF_ROOT}
199+
fi
200+
186201
- name: Set Build & Test Environment
187202
run: |
188203

0 commit comments

Comments
 (0)