Skip to content

Commit

Permalink
Merge pull request #98 from JCSDA-internal/release/1.1.0
Browse files Browse the repository at this point in the history
Release/1.1.0
  • Loading branch information
srherbener authored Jun 12, 2021
2 parents 66249f4 + 910d939 commit c34e968
Show file tree
Hide file tree
Showing 50 changed files with 909 additions and 415 deletions.
28 changes: 28 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: Bug report
about: Use this template to report bugs
title: "[Bug]"
labels: 'bug'
assignees: ''

---

## Current behavior (describe the bug)
>[Be sure to add a Pipeline, Label, Estimate, Assignees, and Epic](https://jointcenterforsatellitedataassimilation-jedi-docs.readthedocs-hosted.com/en/latest/inside/practices/issues.html)
## To Reproduce

> What computer are you running on?
> What compilers/modules are you using?
> Steps to reproduce the behavior
1.
2.
3.
...

## Expected behavior

## Additional information (optional)
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: JCSDA
url: https://jcsda.org/
about: JCSDA web site
- name: Forums
url: https://forums.jcsda.org/
about: JCSDA user/developer forums
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/general-issue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: General issue template
about: Use this template for general issues
title: "[New issue]"
labels: ''
assignees: ''

---

## Description
>Provide a detailed description of this issue.
>What problem needs to be fixed? What new capability needs to be added?
>If this is a bug, describe the current behavior (or use the bug template).
>[Be sure to add a Pipeline, Label, Estimate, Assignees, and Epic](https://jointcenterforsatellitedataassimilation-jedi-docs.readthedocs-hosted.com/en/latest/inside/practices/issues.html)
## Requirements

>If this is a new feature: What does the new code need to accomplish? Does it require new software dependencies (e.g. new jedi-stack components or new python modules?)
>If this is a bugfix: What is the expected behavior?
## Acceptance Criteria (Definition of Done)
>What does it mean for this to be finished?
## Dependencies
>What must be done before this can be done? Add issue dependencies in ZenHub as appropriate
>Does this block progress on other issues? Add this issue as a dependency to other ZenHub issues as appropriate
289 changes: 101 additions & 188 deletions README.md

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions buildscripts/Mac/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Notes on building the Software Stack for JEDI applications on Mac OS

Installing a minimal JEDI software stack on Mac OS (*catalina 10.15.7* and newer) is described in some detail elsewhere, in particular:

[Minimum steps for working with JEDI natively on Mac OS](https://github.com/JCSDA-internal/jedi-docs/blob/develop/howto/macos/minimum.md)

The [brew](https://brew.sh) package manager installs packages to their own directory (`/usr/local/Cellar/<package>)` and then symlinks their files into the system location `/usr/local`. There are exceptions: Sometimes, brew cannot symlink to header files or libraries in `/usr/local`, and for some packages that have multiple related components, they are not installed in a common root location in `/usr/local/Cellar`.

If you are building the optional jedi-stack component [ecFlow](https://confluence.ecmwf.int/display/ECFLOW/ecflow+home), two scripts are provided to properly symlink software packages that ecFlow requires:

| software | helper script | Notes |
| ------- | --------------- | ----- |
| openssl | linkOpenSSLmacOS.sh | backs up deprecated versions of system libraries and symlinks to brew's version |
| boost / boost-python3 | linkBoostPythonLibsmacOS.sh | co-locates boost and boost-python libraries, allowing you to set the build config variable `BOOST_ROOT` |

Running these scripts after installing openssl and boost / boost-python3 will properly set up symlinks for jedi-stack components that depend on them to build correctly.
24 changes: 24 additions & 0 deletions buildscripts/Mac/linkBoostPythonLibsmacOS.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

# Co-locate (via symlink) brew-installed boost / boost-python libraries and headers
# brew installs these packages in different locations; a typical build from source
# code would co-locate them, so that setting BOOST_ROOT for use in building other
# software is made easier.
# Steps:
# brew install boost boost-python3
# run this script

# Boost libraries and headers: version and location
boostLib_version=`brew list --versions | grep "boost " | cut -d ' ' -f 2`
boostLib_cellar=`brew --cellar boost`

# Boost python libraries: version and location
boostPython_version=`brew list --versions | grep boost-python3 | cut -d ' ' -f 2`
boostPython_cellar=`brew --cellar boost-python3`

echo 'Linking boost-python3 libraries into boost installation location'
for lib in `ls $boostPython_cellar/$boostPython_version/lib/lib*`; do
echo "Linking $lib into $boostLib_cellar/$boostLib_version/lib"
sudo ln -s $lib $boostLib_cellar/$boostLib_version/lib
done

45 changes: 45 additions & 0 deletions buildscripts/Mac/linkOpenSSLmacOS.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/bin/bash

# Replace macOS-supplied openssl libraries; macOS SIP often prevents proper linking
# Steps:
# brew install [email protected]
# run this script

version=`brew list --versions | grep openssl | cut -d ' ' -f 2`
cellar=`brew --cellar openssl`

echo 'Linking [email protected] v$version libraries and pkgconfig files'

if [ -f /usr/local/lib/libssl.dylib ]; then
echo 'backing up existing libssl.dylib'
mv /usr/local/lib/libssl.dylib /usr/local/lib/libssl_bak.dylib
fi

if [ -f /usr/local/lib/libcrypto.dylib ]; then
echo 'backing up existing libcrypto.dylib'
mv /usr/local/lib/libcrypto.dylib /usr/local/lib/libcrypto_bak.dylib
fi

echo 'add symlink for openssl libs'

if [ -f $cellar/$version/lib/libssl.1.1.dylib ]; then
sudo ln -s $cellar/$version/lib/libssl.1.1.dylib /usr/local/lib/libssl.dylib
fi

if [ -f $cellar/$version/lib/libcrypto.1.1.dylib ]; then
sudo ln -s $cellar$version/lib/libcrypto.1.1.dylib /usr/local/lib/libcrypto.dylib
fi

echo 'add symlink for openssl pkgconfig files'

if [ -f $cellar/$version/lib/pkgconfig/openssl.pc ]; then
sudo ln -s $cellar/$version/lib/pkgconfig/openssl.pc /usr/local/lib/pkgconfig/openssl.pc
fi

if [ -f $cellar/$version/lib/pkgconfig/libssl.pc ]; then
sudo ln -s $cellar/$version/lib/pkgconfig/libssl.pc /usr/local/lib/pkgconfig/libssl.pc
fi

if [ -f $cellar/$version/lib/pkgconfig/libcrypto.pc ]; then
sudo ln -s $cellar/$version/lib/pkgconfig/libcrypto.pc /usr/local/lib/pkgconfig/libcrypto.pc
fi
23 changes: 12 additions & 11 deletions buildscripts/build_stack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -77,18 +77,18 @@ $MODULES && (set +x; source $MODULESHOME/init/bash; module purge; set -x)
# - should add a check at some point to see if they are already there.
# this can be done in each script individually
# it might warrant a --force flag to force rebuild when desired
build_lib CMAKE cmake 3.17.2
build_lib UDUNITS udunits 2.2.26
build_lib CMAKE cmake 3.20.0
build_lib UDUNITS udunits 2.2.28
build_lib JPEG jpeg 9.1.0
build_lib ZLIB zlib 1.2.11
build_lib PNG png 1.6.35
build_lib SZIP szip 2.1.1
build_lib LAPACK lapack 3.8.0
build_lib BOOST_HDRS boost 1.68.0 headers-only
build_lib EIGEN3 eigen 3.3.7
build_lib BUFRLIB bufrlib 11.3.2
build_lib ECBUILD ecbuild jcsda 3.3.2.jcsda3
build_lib CGAL cgal 5.0.2
build_lib BUFR bufr noaa-emc 11.5.0
build_lib ECBUILD ecbuild ecmwf 3.6.1
build_lib CGAL cgal 5.0.4
build_lib GITLFS git-lfs 2.11.0

#----------------------
Expand All @@ -97,11 +97,11 @@ build_lib HDF5 hdf5 1.12.0
build_lib PNETCDF pnetcdf 1.12.1
build_lib NETCDF netcdf 4.7.4 4.5.3 4.3.0
build_lib NCCMP nccmp 1.8.7.0
build_lib ECKIT eckit jcsda 1.11.6.jcsda2
build_lib FCKIT fckit jcsda 0.7.0.jcsda1
build_lib ATLAS atlas jcsda 0.20.2.jcsda1
build_lib ECKIT eckit ecmwf 1.16.0
build_lib FCKIT fckit ecmwf 0.9.2
build_lib ATLAS atlas ecmwf 0.24.1
build_lib ODB odb 0.18.1.r2
build_lib ODC odc jcsda 1.0.3
build_lib ODC odc ecmwf 2021.03.0

# ===============================================================================
# Optional Extensions to the JEDI Stack
Expand All @@ -115,17 +115,18 @@ build_lib NCEPLIBS nceplibs fv3
build_lib TKDIFF tkdiff 4.3.5
build_lib PYJEDI pyjedi
build_lib PYBIND11 pybind11 2.5.0
build_lib GSL_LITE gsl_lite 0.34.0
build_lib GSL_LITE gsl_lite 0.37.0
build_lib GEOS geos 3.8.1
build_lib SQLITE sqlite 3.32.3
build_lib PROJ proj 7.1.0
build_lib JSON json 3.9.1
build_lib JSON_SCHEMA_VALIDATOR json-schema-validator 2.1.0
build_lib ECFLOW ecflow ecmwf 5.5.3 boost 1.68.0

#----------------------
# These must be rebuilt for each MPI implementation
build_lib GPTL gptl 8.0.3
build_lib NCO nco 4.7.9
build_lib NCO nco 4.9.9
build_lib PIO pio 2.5.1
build_lib FFTW fftw 3.3.8
build_lib BOOST_FULL boost 1.68.0
Expand Down
19 changes: 10 additions & 9 deletions buildscripts/config/choose_modules.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,32 @@
# http://www.apache.org/licenses/LICENSE-2.0.

# Minimal JEDI Stack
export STACK_BUILD_CMAKE=N
export STACK_BUILD_CMAKE=Y
export STACK_BUILD_GITLFS=N
export STACK_BUILD_SZIP=Y
export STACK_BUILD_UDUNITS=Y
export STACK_BUILD_ZLIB=Y
export STACK_BUILD_LAPACK=N
export STACK_BUILD_LAPACK=Y
export STACK_BUILD_BOOST_HDRS=Y
export STACK_BUILD_BUFRLIB=Y
export STACK_BUILD_BUFR=Y
export STACK_BUILD_EIGEN3=Y
export STACK_BUILD_HDF5=Y
export STACK_BUILD_PNETCDF=Y
export STACK_BUILD_NETCDF=Y
export STACK_BUILD_NCCMP=Y
export STACK_BUILD_ECBUILD=Y
export STACK_BUILD_ECKIT=Y
export STACK_BUILD_FCKIT=N
export STACK_BUILD_ATLAS=N
export STACK_BUILD_FCKIT=Y
export STACK_BUILD_ATLAS=Y
export STACK_BUILD_GSL_LITE=Y
export STACK_BUILD_PYBIND11=Y

# Optional Additions
export STACK_BUILD_ODC=N
export STACK_BUILD_PIO=Y
export STACK_BUILD_PIO=N
export STACK_BUILD_GPTL=N
export STACK_BUILD_NCO=N
export STACK_BUILD_PYJEDI=N
export STACK_BUILD_PYBIND11=N
export STACK_BUILD_NCEPLIBS=N
export STACK_BUILD_JPEG=N
export STACK_BUILD_PNG=N
Expand All @@ -47,5 +47,6 @@ export STACK_BUILD_GEOS=N
export STACK_BUILD_SQLITE=N
export STACK_BUILD_PROJ=N
export STACK_BUILD_FMS=N
export STACK_BUILD_JSON=N
export STACK_BUILD_JSON_SCHEMA_VALIDATOR=N
export STACK_BUILD_JSON=Y
export STACK_BUILD_JSON_SCHEMA_VALIDATOR=Y
export STACK_BUILD_ECFLOW=N
39 changes: 39 additions & 0 deletions buildscripts/config/config_ami-gnu-openmpi-dev.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash
# © Copyright 2020 UCAR
# This software is licensed under the terms of the Apache Licence Version 2.0 which can be obtained at
# http://www.apache.org/licenses/LICENSE-2.0.


# Compiler/MPI combination
export JEDI_COMPILER="gnu/9.3.0"
export JEDI_MPI="openmpi/4.1.0"

# This tells jedi-stack how you want to build the compiler and mpi modules
# valid options include:
# native-module: load a pre-existing module (common for HPC systems)
# native-pkg: use pre-installed executables located in /usr/bin or /usr/local/bin,
# as installed by package managers like apt-get or hombrewo.
# This is a common option for, e.g., gcc/g++/gfortrant
# from-source: This is to build from source
export COMPILER_BUILD="native-pkg"
export MPI_BUILD="from-source"

# Build options
export PREFIX=/optjedi/modules
export USE_SUDO=Y
export PKGDIR=pkg
export LOGDIR=buildscripts/log
export OVERWRITE=N
export NTHREADS=4
export MAKE_CHECK=N
export MAKE_VERBOSE=N
export MAKE_CLEAN=N
export DOWNLOAD_ONLY=F
export STACK_EXIT_ON_FAIL=T
export WGET="wget -nv"
#Global compiler flags
export FFLAGS=""
export CFLAGS=""
export CXXFLAGS=""
export LDFLAGS=""

44 changes: 44 additions & 0 deletions buildscripts/config/config_ami-intel-impi-dev.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/bash
# © Copyright 2020 UCAR
# This software is licensed under the terms of the Apache Licence Version 2.0 which can be obtained at
# http://www.apache.org/licenses/LICENSE-2.0.


# Compiler/MPI combination
export JEDI_COMPILER="intel/2021.2"
export JEDI_MPI="impi/2021.2"
export PATH=/usr/local/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
export CPATH=/usr/local/include:$CPATH

# This tells jedi-stack how you want to build the compiler and mpi modules
# valid options include:
# native-module: load a pre-existing module (common for HPC systems)
# native-pkg: use pre-installed executables located in /usr/bin or /usr/local/bin,
# as installed by package managers like apt-get or hombrewo.
# This is a common option for, e.g., gcc/g++/gfortran
# from-source: This is to build from source
export COMPILER_BUILD="native-pkg"
export MPI_BUILD="native-pkg"

# Build options
export PREFIX=/optjedi/modules
export USE_SUDO=Y
export PKGDIR=pkg
export LOGDIR=buildscripts/log
export OVERWRITE=N
export NTHREADS=4
export MAKE_CHECK=N
export MAKE_VERBOSE=N
export MAKE_CLEAN=N
export DOWNLOAD_ONLY=F
export STACK_EXIT_ON_FAIL=T
export WGET="wget -nv"

#Global compiler flags
export FFLAGS=""
export CFLAGS=""
export CXXFLAGS=""
export LDFLAGS=""

Loading

0 comments on commit c34e968

Please sign in to comment.