Skip to content

Commit

Permalink
mch climate analysis (#121)
Browse files Browse the repository at this point in the history
add the R-based `climana` uenv for MCH research.
  • Loading branch information
bcumming authored Sep 5, 2024
1 parent 6691247 commit 59a5c5e
Show file tree
Hide file tree
Showing 12 changed files with 841 additions and 1 deletion.
9 changes: 9 additions & 0 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,15 @@ uenvs:
deploy:
eiger: [zen2]
todi: [gh200]
climana:
"24.7":
recipes:
zen2: mch/climana/24.7
zen3: mch/climana/24.7
a100: mch/climana/24.7
deploy:
balfrin: [zen3, a100]
develop: False
editors:
"24.7":
recipes:
Expand Down
5 changes: 5 additions & 0 deletions recipes/mch/climana/24.7/compilers.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
bootstrap:
spec: [email protected]
gcc:
specs:
- [email protected]
6 changes: 6 additions & 0 deletions recipes/mch/climana/24.7/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
name: mch
store: /user-environment
spack:
commit: releases/v0.22
repo: https://github.com/spack/spack.git
description: Tools for MCH validation.
54 changes: 54 additions & 0 deletions recipes/mch/climana/24.7/environments.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
climana:
compiler:
- toolchain: gcc
spec: gcc@12
unify: when_possible
mpi:
spec: [email protected]
packages:
- perl
- autoconf
- m4
- automake
- texinfo
- libtool
- gawk
- curl
specs:
# choose fftw instead of the default intel-oneapi-mkl.
# this saves ~2GB of space, and reduces image build time.
- cdo ^[virtuals=fftw-api] fftw
- gdal
- geos
- gsl
- [email protected] +fortran +threadsafe ~mpi
- ncview
- nco
- ncl
- [email protected]~mpi ^hdf5~mpi api=v18
- proj
- [email protected]
- sqlite
- udunits
# R and its packages
# +X is required for png, tiff, jpeg, etc support
- [email protected] +X
# install here so that the openssl built by Spack is used.
- r-curl
# R needs to find all of the following use pkg-config
# so we add them to the view, where they will be picked up.
- freetype
- fribidi
- glib
- harfbuzz
- libjpeg-turbo
- libpng
- libtiff
# required as a runtime dependency of the ssl R package
- openssl
views:
climana:
link: roots
uenv:
prefix_paths:
LD_LIBRARY_PATH: [lib, lib64]
36 changes: 36 additions & 0 deletions recipes/mch/climana/24.7/modules.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
modules:
# Paths to check when creating modules for all module sets
prefix_inspections:
bin:
- PATH
lib:
- LD_LIBRARY_PATH
lib64:
- LD_LIBRARY_PATH
lib/pkgconfig:
- PKG_CONFIG_PATH
lib64/pkgconfig:
- PKG_CONFIG_PATH

default:
arch_folder: false
# Where to install modules
roots:
tcl: /user-environment/modules
tcl:
all:
autoload: none
netcdf-c:
environment:
set:
NETCDF_C_ROOT: '{prefix}'
hash_length: 0
exclude_implicits: true
include:
- hdf5
- zlib+shared
exclude:
- '%[email protected]'
- 'gcc %[email protected]'
projections:
all: '{name}/{version}'
39 changes: 39 additions & 0 deletions recipes/mch/climana/24.7/post-install
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

# don't generate an error message if a glob does not match any files
shopt -s nullglob

# where all of the applications built by spack are installed
# this has to change if
# - the compiler version used to build software changes
# - we build for a different micro-architecture
# - we upgrade to SLES 16
install_base=/user-environment/linux-sles15-zen3/gcc-12.3.0
view_base=/user-environment/env/climana

# iterate over all of the locations where pkgconfig files are likely to be installed
for pkbase in "lib/pkgconfig" "lib64/pkgconfig" "share/pkgconfig" "rlib/pkgconfig"
do
# find all directories that match the pattern
pkgpaths=$(find $install_base -type d -path '*/'$pkbase)

# iterate over each directory, searching for pkg-config .pc files
for pkpath in $pkgpaths
do
pcfiles=($pkpath/*.pc)
for pcpath in ${pcfiles[@]}
do
pcfile=$(basename $pcpath)
from=$pkpath/$pcfile
to_root=$view_base/$pkbase
to=$to_root/$pcfile
mkdir -p $to_root
if [ ! -e $to ]; then
echo '+ ' $pkbase/$pcfile
ln -s "$from" "$to"
else
echo 'skip ' $pkbase/$pcfile
fi
done
done
done
67 changes: 67 additions & 0 deletions recipes/mch/climana/24.7/repo/packages/r/change_optflags_tmp.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
diff -ur R-3.6.3.org/configure R-3.6.3/configure
--- R-3.6.3.org/configure 2020-03-09 11:09:16.060825352 +0900
+++ R-3.6.3/configure 2020-03-09 11:10:47.011280195 +0900
@@ -6470,13 +6470,13 @@
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
- CFLAGS="-g -O2"
+ CFLAGS="-g -O1"
else
CFLAGS="-g"
fi
else
if test "$GCC" = yes; then
- CFLAGS="-O2"
+ CFLAGS="-O1"
else
CFLAGS=
fi
@@ -7445,13 +7445,13 @@
FCFLAGS=$ac_save_FCFLAGS
elif test $ac_cv_prog_fc_g = yes; then
if test "x$ac_cv_fc_compiler_gnu" = xyes; then
- FCFLAGS="-g -O2"
+ FCFLAGS="-g -O1"
else
FCFLAGS="-g"
fi
else
if test "x$ac_cv_fc_compiler_gnu" = xyes; then
- FCFLAGS="-O2"
+ FCFLAGS="-O1"
else
FCFLAGS=
fi
@@ -7717,13 +7717,13 @@
CXXFLAGS=$ac_save_CXXFLAGS
elif test $ac_cv_prog_cxx_g = yes; then
if test "$GXX" = yes; then
- CXXFLAGS="-g -O2"
+ CXXFLAGS="-g -O1"
else
CXXFLAGS="-g"
fi
else
if test "$GXX" = yes; then
- CXXFLAGS="-O2"
+ CXXFLAGS="-O1"
else
CXXFLAGS=
fi
@@ -8336,13 +8336,13 @@
OBJCFLAGS=$ac_save_OBJCFLAGS
elif test $ac_cv_prog_objc_g = yes; then
if test "$GOBJC" = yes; then
- OBJCFLAGS="-g -O2"
+ OBJCFLAGS="-g -O1"
else
OBJCFLAGS="-g"
fi
else
if test "$GOBJC" = yes; then
- OBJCFLAGS="-O2"
+ OBJCFLAGS="-O1"
else
OBJCFLAGS=
fi
Loading

0 comments on commit 59a5c5e

Please sign in to comment.