Update to ip 4.3.0 #507
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ubuntu-ci-x86_64-build | |
on: | |
pull_request: | |
paths-ignore: | |
- 'doc/**' | |
- '**.md' | |
- '.github/ISSUE_TEMPLATE/*' | |
- '.gitignore' | |
workflow_dispatch: | |
# inputs: | |
# template: | |
# description: 'Base spack.yaml template. Default is a complete JEDI-UFS environment.' | |
# required: true | |
# default: 'unified-dev' | |
# specs: | |
# description: 'Which specs to add to the template. Default is none (empty string).' | |
# required: false | |
# default: '' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash | |
#shell: bash -leo pipefail {0} | |
jobs: | |
ubuntu-ci-x86_64-build: | |
runs-on: [ubuntu-ci-x86_64] | |
steps: | |
- name: cleanup | |
run: | | |
pwd | |
ls -lart | |
rm -fr * | |
- name: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: create-env | |
run: | | |
source ./setup.sh | |
# DH* 20230302 - to avoid using padded_length for build caches, | |
# always build in the same environment so that the length of the | |
# path doesn't change - see also other 'DH* 20230302' changes below | |
#export ENVNAME=${{ inputs.template || 'unified-dev' }}.ubuntu-ci-x86_64 | |
export ENVNAME=ci-env.ubuntu-ci-x86_64 | |
# *DH | |
export ENVDIR=$PWD/envs/${ENVNAME} | |
spack stack create env --site linux.default --template ${{ inputs.template || 'unified-dev' }} --name ${ENVNAME} | |
spack env activate ${ENVDIR} | |
spack add ${{ inputs.specs || '' }} | |
export SPACK_SYSTEM_CONFIG_PATH="${ENVDIR}/site" | |
# Find external packages | |
spack external find --scope system --exclude bison --exclude openssl | |
spack external find --scope system perl | |
spack external find --scope system wget | |
PATH="/usr/local/opt/curl/bin:$PATH" \ | |
spack external find --scope system curl | |
PATH="/usr/local/opt/qt5/bin:$PATH" \ | |
spack external find --scope system qt | |
spack external find --scope system texlive | |
spack external find --scope system mysql | |
# For GNU | |
# MISSING | |
# For Intel | |
# Need to find external Intel MPI and annotate with the | |
# correct compiler, no way to do that with spack commands. | |
echo "" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
echo " intel-oneapi-mpi:" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
echo " buildable: false" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
echo " externals:" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
echo " - spec: [email protected]%[email protected]" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
echo " prefix: /opt/intel" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
echo " modules:" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
echo " - libfabric-aws/1.16.0~amzn4.0" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
echo " - intelmpi" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml | |
# For GNU | |
## Find compilers | |
#spack compiler find --scope system | |
# For Intel | |
echo "" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo "compilers:" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo "- compiler:" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " spec: [email protected]" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " paths:" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " cc: /opt/intel/oneapi/compiler/2022.1.0/linux/bin/intel64/icc" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " cxx: /opt/intel/oneapi/compiler/2022.1.0/linux/bin/intel64/icpc" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " f77: /opt/intel/oneapi/compiler/2022.1.0/linux/bin/intel64/ifort" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " fc: /opt/intel/oneapi/compiler/2022.1.0/linux/bin/intel64/ifort" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " flags: {}" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " operating_system: ubuntu20.04" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " target: x86_64" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " modules: []" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " environment:" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " prepend_path:" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " LD_LIBRARY_PATH: '/opt/intel/oneapi/compiler/2022.1.0/linux/compiler/lib/intel64_lin'" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " set:" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " I_MPI_PMI_LIBRARY: '/opt/slurm/lib/libpmi.so'" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
echo " extra_rpaths: []" >> ${SPACK_SYSTEM_CONFIG_PATH}/compilers.yaml | |
export -n SPACK_SYSTEM_CONFIG_PATH | |
# DH* 20230302 - Don't use yet, too many problems | |
## For buildcaches | |
#spack config add config:install_tree:padded_length:true | |
# *DH | |
# Set compiler and MPI | |
spack config add "packages:all:providers:mpi:[[email protected]]" | |
spack config add "packages:all:compiler:[[email protected]]" | |
sed -i "s/\['\%aocc', '\%apple-clang', '\%gcc', '\%intel'\]/\['\%intel'\]/g" $ENVDIR/spack.yaml | |
# Add additional variants for MET packages, different from config/common/packages.yaml | |
spack config add "packages:met:variants:+python +grib2 +graphics +lidar2nc +modis" | |
# Concretize and check for duplicates | |
spack concretize 2>&1 | tee log.concretize.intel-2022.1.0 | |
${SPACK_STACK_DIR}/util/show_duplicate_packages.py -d log.concretize.intel-2022.1.0 -i fms -i crtm | |
# Add and update source cache | |
spack mirror add local-source file:///home/ubuntu/spack-stack/source-cache/ | |
# DH* 20230721 - todo remove || true | |
spack mirror create -a -d /home/ubuntu/spack-stack/source-cache/ || true | |
# Add binary cache and reindex it | |
spack mirror add local-binary file:///home/ubuntu/spack-stack/build-cache/ | |
# DH* 20230721 - todo remove || true | |
spack buildcache update-index local-binary || true | |
echo "Packages in combined spack build caches:" | |
spack buildcache list | |
# Break installation up in pieces and create build caches in between | |
# This allows us to "spin up" builds that altogether take longer than | |
# six hours, and/or fail later in the build process. | |
# base-env | |
echo "base-env ..." | |
# DH* 20230721 - todo remove --no-checksum | |
spack install --fail-fast --source --no-check-signature --no-checksum base-env 2>&1 | tee log.install.intel-2022.1.0.base-env | |
# DH* 20230721 - todo remove || true (this was here all the time, but should not be needed if spack creates buildcaches correctly) | |
spack buildcache create -a -u /home/ubuntu/spack-stack/build-cache/ || true | |
# the rest | |
echo "${{ inputs.template || 'unified-dev' }} ..." | |
# DH* 20230721 - todo remove --no-checksum | |
spack install --fail-fast --source --no-check-signature --no-checksum 2>&1 | tee [email protected].${{ inputs.template || 'unified-dev' }} | |
# DH* 20230721 - todo remove || true (this was here all the time, but should not be needed if spack creates buildcaches correctly) | |
spack buildcache create -a -u /home/ubuntu/spack-stack/build-cache/ || true | |
# Next steps: synchronize source and build cache to a central/combined mirror? | |
echo "Next steps ..." | |
spack clean -a | |
spack module tcl refresh -y | |
spack stack setup-meta-modules | |
spack env deactivate | |
# Test environment chaining | |
echo "Test environment chaining" | |
spack stack create env --name chaintest --template empty --site linux.default --upstream $(realpath envs/ci-env.ubuntu-ci-x86_64/install) | |
# Retain config from upstream so we don't have to rebuild: | |
cp -r $PWD/envs/ci-env.ubuntu-ci-x86_64/{site,common} $PWD/envs/chaintest/. | |
spack env activate ${PWD}/envs/chaintest | |
spack add [email protected]%intel | |
spack concretize | tee envs/chaintest/log.concretize | |
unwanted_duplicates=$(( cat envs/chaintest/log.concretize | grep -E '^ - ' | grep -Fv '[email protected]' || true ) | wc -l) | |
if [ ${unwanted_duplicates} -gt 0 ]; then echo "Environment chaining test failed"; exit 1; fi | |
spack env deactivate | |
- name: test-env | |
run: | | |
source /etc/profile.d/z00_lmod.sh | |
module use /usr/share/modules/modulefiles | |
module use /opt/intel/mpi/2021.6.0/modulefiles | |
module use /home/ubuntu/jedi/modulefiles | |
# DH* 20230302 - to avoid using padded_length for build caches, | |
# always build in the same environment so that the length of the | |
# path doesn't change - see also other 'DH* 20230302' changes below | |
#export ENVNAME=${{ inputs.template || 'unified-dev' }}.ubuntu-ci-x86_64 | |
export ENVNAME=ci-env.ubuntu-ci-x86_64 | |
# *DH | |
export ENVDIR=$PWD/envs/${ENVNAME} | |
ls -l ${ENVDIR}/install/modulefiles/Core | |
module use ${ENVDIR}/install/modulefiles/Core | |
module load stack-intel/2022.1.0 | |
module load stack-intel-oneapi-mpi/2021.6.0 | |
module load stack-python/3.10.8 | |
module available | |
module load jedi-ufs-env/1.0.0 | |
module load ewok-env/1.0.0 | |
module load soca-env/1.0.0 | |
module list | |
# Skip this for now, copied from other yaml | |
#- name: upload-mirror | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: spack_mirror | |
# path: cache/source_cache |