From 5b4e3ed7810f7946b6bcfa180a80c45c14ad07bb Mon Sep 17 00:00:00 2001 From: uturuncoglu Date: Mon, 14 Aug 2023 11:29:17 -0600 Subject: [PATCH 1/4] fix spack build action --- .github/workflows/scripts/spack_concretize.sh | 14 ++++++++++++++ .github/workflows/test-build-spack.yml | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scripts/spack_concretize.sh b/.github/workflows/scripts/spack_concretize.sh index 7a1b74573e..925c388665 100755 --- a/.github/workflows/scripts/spack_concretize.sh +++ b/.github/workflows/scripts/spack_concretize.sh @@ -134,6 +134,20 @@ if [[ "$comp" == *"oneapi"* ]]; then echo "::endgroup::" fi +# check given gcc compiler is found or not? If not, use newer version +if [[ "$comp" == *"gcc"* ]]; then + comp_str=${comp/@/@=} + if [ -z "$(cat ~/.spack/linux/compilers.yaml | grep $comp_str)" ]; then + echo "Given compiler ($comp) not found! Try to find another ..." + str=`echo $comp_str | awk -F\@ '{print $1}'` + comp_ver=`grep -ir "${str}@=" ~/.spack/linux/compilers.yaml | tr -d "spec: ${str}@=" | sort -n | tail -n 1` + comp="${str}@$comp_ver" + echo "New compiler is found! Using $comp ..." + else + echo "Given compiler is found. Using $comp ..." + fi +fi + # create spack.yaml echo "::group::Create spack.yaml" echo "spack:" > spack.yaml diff --git a/.github/workflows/test-build-spack.yml b/.github/workflows/test-build-spack.yml index 84ddf33990..abfd18daf9 100644 --- a/.github/workflows/test-build-spack.yml +++ b/.github/workflows/test-build-spack.yml @@ -1,7 +1,7 @@ name: Build ESMF Using Spack env: - compiler: gcc@11.3.0 + compiler: gcc@12.3.0 esmf_version: 'esmf@develop' nuopc_app_version: 'develop' From 2aa00572155cec70af12ec58e29b80881d6364c7 Mon Sep 17 00:00:00 2001 From: uturuncoglu Date: Mon, 14 Aug 2023 11:36:05 -0600 Subject: [PATCH 2/4] make compiler input argument --- .github/workflows/test-build-spack.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-build-spack.yml b/.github/workflows/test-build-spack.yml index abfd18daf9..7bc602c865 100644 --- a/.github/workflows/test-build-spack.yml +++ b/.github/workflows/test-build-spack.yml @@ -8,6 +8,11 @@ env: on: workflow_dispatch: inputs: + compiler: + description: 'Compiler version like gcc@12.3.0' + required: false + type: string + default: 'gcc@12.3.0' esmf_version: description: 'ESMF version or tag like esmf@develop or esmf@=8.5.0b23' required: false @@ -39,7 +44,11 @@ jobs: echo "ENV : >${{ env.esmf_version }}< >${{ env.nuopc_app_version }}<" # create matrix JSON file - str1="{\"compiler\": [\"${{ env.compiler }}\"]," + if [ -z "${{ inputs.compiler }}" ]; then + str1="{\"compiler\": [\"${{ env.compiler }}\"]," + else + str1="{\"compiler\": [\"${{ inputs.compiler }}\"]," + fi if [ -z "${{ inputs.esmf_version }}" ]; then str2="\"esmf\": [\"${{ env.esmf_version }}+external-parallelio\", \"${{ env.esmf_version }}~external-parallelio\"]}" echo "nuopc_app_version=${{ env.nuopc_app_version }}" >> $GITHUB_OUTPUT From a99ca753f6b39f8f2668033c3a617453664b35dc Mon Sep 17 00:00:00 2001 From: uturuncoglu Date: Mon, 14 Aug 2023 15:15:25 -0600 Subject: [PATCH 3/4] use gcc@latest to indicate latest available gnu compiler --- .github/workflows/scripts/spack_concretize.sh | 25 +++++++++++++------ .github/workflows/test-build-spack.yml | 6 ++--- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.github/workflows/scripts/spack_concretize.sh b/.github/workflows/scripts/spack_concretize.sh index 925c388665..a3222fc347 100755 --- a/.github/workflows/scripts/spack_concretize.sh +++ b/.github/workflows/scripts/spack_concretize.sh @@ -136,16 +136,25 @@ fi # check given gcc compiler is found or not? If not, use newer version if [[ "$comp" == *"gcc"* ]]; then + echo "::group::Check gcc compiler" comp_str=${comp/@/@=} - if [ -z "$(cat ~/.spack/linux/compilers.yaml | grep $comp_str)" ]; then - echo "Given compiler ($comp) not found! Try to find another ..." - str=`echo $comp_str | awk -F\@ '{print $1}'` - comp_ver=`grep -ir "${str}@=" ~/.spack/linux/compilers.yaml | tr -d "spec: ${str}@=" | sort -n | tail -n 1` - comp="${str}@$comp_ver" - echo "New compiler is found! Using $comp ..." - else - echo "Given compiler is found. Using $comp ..." + str=`echo $comp_str | awk -F\@ '{print $1}'` + comp_ver=`grep -ir "${str}@=" ~/.spack/linux/compilers.yaml | tr -d "spec: ${str}@=" | sort -n | tail -n 1` + + use_latest=0 + if [[ "$comp" == *"gcc@latest"* ]]; then + echo "The gcc@latest is set. Trying to find latest available gcc compiler ..." + use_latest=1 + elif [ -z "$(cat ~/.spack/linux/compilers.yaml | grep $comp_str)" ]; then + echo "Given compiler ($comp) is not found! Trying to find latest available gcc compiler ..." + use_latest=1 fi + + if [[ $use_latest == 1 ]]; then + comp="${str}@$comp_ver" + fi + echo "Using $comp gnu compiler." + echo "::endgroup::" fi # create spack.yaml diff --git a/.github/workflows/test-build-spack.yml b/.github/workflows/test-build-spack.yml index 7bc602c865..8a67cdcb20 100644 --- a/.github/workflows/test-build-spack.yml +++ b/.github/workflows/test-build-spack.yml @@ -1,7 +1,7 @@ name: Build ESMF Using Spack env: - compiler: gcc@12.3.0 + compiler: gcc@latest esmf_version: 'esmf@develop' nuopc_app_version: 'develop' @@ -9,10 +9,10 @@ on: workflow_dispatch: inputs: compiler: - description: 'Compiler version like gcc@12.3.0' + description: 'Compiler version like gcc@12.3.0 or gcc@latest (latest available version on runner)' required: false type: string - default: 'gcc@12.3.0' + default: 'gcc@latest' esmf_version: description: 'ESMF version or tag like esmf@develop or esmf@=8.5.0b23' required: false From 4d88abf46240ee930ba06cdfa7098037e1a551ec Mon Sep 17 00:00:00 2001 From: uturuncoglu Date: Mon, 14 Aug 2023 15:55:35 -0600 Subject: [PATCH 4/4] force to exit if requested gcc is not available --- .github/workflows/scripts/spack_concretize.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scripts/spack_concretize.sh b/.github/workflows/scripts/spack_concretize.sh index a3222fc347..ee486eaedd 100755 --- a/.github/workflows/scripts/spack_concretize.sh +++ b/.github/workflows/scripts/spack_concretize.sh @@ -146,8 +146,8 @@ if [[ "$comp" == *"gcc"* ]]; then echo "The gcc@latest is set. Trying to find latest available gcc compiler ..." use_latest=1 elif [ -z "$(cat ~/.spack/linux/compilers.yaml | grep $comp_str)" ]; then - echo "Given compiler ($comp) is not found! Trying to find latest available gcc compiler ..." - use_latest=1 + echo "Given compiler ($comp) is not found! Exiting ..." + exit 1 fi if [[ $use_latest == 1 ]]; then