Skip to content

Conversation

@CodeGat
Copy link
Member

@CodeGat CodeGat commented Jul 29, 2025

Closes #30

Background

This is a simple matrix implementation of build-ci using access3 and non-access3 manifests.

The PR

  • Add access3, no-access3 manifests
  • Add matrix-compatible build-ci

@CodeGat CodeGat added the enhancement New feature or request label Jul 29, 2025
@CodeGat CodeGat self-assigned this Jul 29, 2025
@CodeGat CodeGat added the enhancement New feature or request label Jul 29, 2025
@CodeGat CodeGat linked an issue Jul 29, 2025 that may be closed by this pull request
@CodeGat CodeGat requested a review from anton-seaice July 29, 2025 04:07
@CodeGat CodeGat force-pushed the 30-build-ci-link branch from a437f9d to 8e9624e Compare July 29, 2025 04:36
@anton-seaice
Copy link
Collaborator

@CodeGat

I think the OpenMPI build is incompatible:

/tmp/root/spack-stage/spack-stage-access-cice-git.e0499721dbd5ee653
            dfd8b0facd1d67a9772be39_CICE6.6.0-3-git.5-ngbf4g4afikghnxe7nx5bckag
            lz52k3f/spack-src/cicecore/cicedyn/infrastructure/comm/mpi/ice_exit
            .F90(18): error #7013: This module file was not generated by any re
            lease of this compiler.   [MPI]
     197          use mpi   ! MPI Fortran module
     198    ----------^

This is the concretisation of the failed build:

==> [2025-07-29-04:59:54.724499] Concretized access-cice@git.e0499721dbd5ee653dfd8b0facd1d67a9772be39=CICE6.6.0-3-git.5%oneapi@2025.2.0~access3 io_type=Binary
 -   ngbf4g4  access-cice@git.e0499721dbd5ee653dfd8b0facd1d67a9772be39=CICE6.6.0-3-git.5%oneapi@2025.2.0~access3~ipo~openmp build_system=cmake build_type=Release generator=make io_type=Binary arch=linux-rocky8-x86_64_v3
[^]  bbw5qer      ^cmake@3.24.4%gcc@13.2.0~doc+ncurses+ownlibs build_system=generic build_type=Release arch=linux-rocky8-x86_64
[^]  flywnq4          ^curl@8.7.1%gcc@13.2.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl arch=linux-rocky8-x86_64
[^]  isewm7e              ^nghttp2@1.57.0%gcc@13.2.0 build_system=autotools arch=linux-rocky8-x86_64
[^]  pmlwvz3                  ^diffutils@3.10%gcc@8.5.0 build_system=autotools arch=linux-rocky8-x86_64
[^]  y3ijosh              ^openssl@3.3.0%gcc@13.2.0~docs+shared build_system=generic certs=mozilla arch=linux-rocky8-x86_64
[^]  yde2kfm                  ^ca-certificates-mozilla@2023-05-30%gcc@13.2.0 build_system=generic arch=linux-rocky8-x86_64
[^]  l7iuzcv          ^gcc-runtime@13.2.0%gcc@13.2.0 build_system=generic arch=linux-rocky8-x86_64
[^]  poubuuq          ^ncurses@6.5%gcc@8.5.0~symlinks+termlib abi=none build_system=autotools patches=7a351bc arch=linux-rocky8-x86_64
[^]  bucswa2          ^zlib-ng@2.1.6%gcc@8.5.0+compat+new_strategies+opt+pic+shared build_system=autotools arch=linux-rocky8-x86_64
[e]  uuaslxo      ^glibc@2.28%gcc@13.2.0 build_system=autotools arch=linux-rocky8-x86_64
[^]  nql6rht      ^gmake@4.4.1%gcc@8.5.0~guile build_system=generic arch=linux-rocky8-x86_64
[^]  xvjgomg          ^gcc-runtime@8.5.0%gcc@8.5.0 build_system=generic arch=linux-rocky8-x86_64
[e]  6bfinv7          ^glibc@2.28%gcc@8.5.0 build_system=autotools arch=linux-rocky8-x86_64
 -   mftp7n7      ^intel-oneapi-runtime@2025.2.0%oneapi@2025.2.0 build_system=generic arch=linux-rocky8-x86_64_v3
[^]  mglfhd4      ^openmpi@5.0.5%gcc@13.2.0~atomics~cuda~gpfs~internal-hwloc~internal-libevent~internal-pmix~java~legacylaunchers~lustre~memchecker~openshmem~orterunprefix~romio+rsh~static+vt+wrapper-rpath build_system=autotools fabrics=none romio-filesystem=none schedulers=none arch=linux-rocky8-x86_64

I guess set ^openmpi%oneapi ?

@CodeGat
Copy link
Member Author

CodeGat commented Jul 29, 2025

Sorry, which was that for @anton-seaice? access or no-access? Or both?

@anton-seaice
Copy link
Collaborator

This is for no-access, access will fail until we update the linking in the access3-share cmake

CodeGat and others added 2 commits July 30, 2025 10:35
Co-authored-by: Anton Steketee <79179784+anton-seaice@users.noreply.github.com>
@CodeGat
Copy link
Member Author

CodeGat commented Jul 30, 2025

Might add the compiler definitions to a data file once this is done. Also once this completes successfully, it should push a lot of these packages to the binary cache, so this should be as slow as it gets

@CodeGat
Copy link
Member Author

CodeGat commented Jul 30, 2025

Err, at least the %gcc one worked, @anton-seaice 😬 Would you know what those errors mean?

@anton-seaice
Copy link
Collaborator

We need to add the mpi linking to the access3-share package - that's why the access3 ones are failing

Why the standalone builds are failing is a mystery! That code is a bit of c code mixed in with the fortran, maybe that's related somehow?

@CodeGat
Copy link
Member Author

CodeGat commented Jul 30, 2025

https://github.com/ACCESS-NRI/CICE/actions/runs/16612429581/job/46998060356?pr=31#step:13:1682

😌 this is what we wanna see

@anton-seaice
Copy link
Collaborator

Ok - ill park this until i update access3-share! Thanks for the progress so far @CodeGat :)

@CodeGat
Copy link
Member Author

CodeGat commented Jul 30, 2025

No worries @anton-seaice, give me a shout if you need anything

@@ -0,0 +1,10 @@
spack:
specs:
- access-cice @git.{{ ref }} ~access3 io_type=PIO %gcc@13.2.0 target=x86_64
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to use template variables for compiler versions to make it easier to keep them all sync. My preference would be to use the ones defined in the build-ci repo so they're consistent across the org.

Same for the others below. May as well use the target variable too.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 672529f

@aidanheerdegen
Copy link
Member

@anton-seaice I suggest splitting out the bits that are currently crashing, merge the stuff that is working, and represents the current state, and make an issue and PR to fix the failing CI build.

@CodeGat
Copy link
Member Author

CodeGat commented Jul 31, 2025

I've excluded the two failing manifests from the matrix build for now, see 0caddea @aidanheerdegen, @anton-seaice

Copy link
Member

@aidanheerdegen aidanheerdegen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a question about the CMake build system changes.

Ok to merge if those are required, otherwise we should drop them for this PR.

@anton-seaice
Copy link
Collaborator

I have a question about the CMake build system changes.

Ok to merge if those are required, otherwise we should drop them for this PR.

Adding REQUIRED COMPONENTS Fortran and target_link_libraries(cicelib PUBLIC MPI::MPI_Fortran) is not require on Gadi, but is required on the github runners for anything to build. We are confident this is fine to add.

Moving target_compile_definitions(cicelib PRIVATE FORTRANUNDERSCORE ncdf) outside of the if statement is possibly becuase we never build with io_type = Binary on gadi ?

Co-authored-by: Anton Steketee <79179784+anton-seaice@users.noreply.github.com>
@anton-seaice
Copy link
Collaborator

Happy to merge @CodeGat - ill resolve the remaining issues with the access3-share workflow soon !

@CodeGat
Copy link
Member Author

CodeGat commented Aug 4, 2025

Cool. I was wondering, did you want to pin the version of access3-share rather than the branch reference main so it doesn't reuse a potentially old version from the build-cache where you expect it to be new?

@anton-seaice
Copy link
Collaborator

anton-seaice commented Aug 4, 2025

main (as a spack version of the access3-share package) is only something i was messing with in a branch of spack-packages - i don't think it would end up in main of spack-packages :)

@CodeGat CodeGat merged commit 725ca30 into CICE6.6.0-x Aug 4, 2025
5 checks passed
@CodeGat CodeGat deleted the 30-build-ci-link branch August 4, 2025 23:57
@CodeGat
Copy link
Member Author

CodeGat commented Aug 4, 2025

Thanks for your help with this one, @anton-seaice

This was referenced Aug 4, 2025
anton-seaice added a commit that referenced this pull request Aug 6, 2025
* Add matrix-compatible build-ci

* Add access3, no-access3 manifests

* add MPI components fortran and linking

* Change esmf to git.8.7.0

* Prepend v to esmf requirements

* Add oneapi compiler to openmpi constraints

* Split manifests down compiler lines, update max-parallel to 5

* Apply suggestions from code review

Co-authored-by: Anton Steketee <79179784+anton-seaice@users.noreply.github.com>

* Specify target explicitly so it caches better

* Try setting FORTRANUNDERSCORE

* Replace compiler, target with template vars

* Exclude `[intel|oneapi]-access3.spack.yaml.j2` manifests from matrix pending fix

* Apply suggestions from code review

Co-authored-by: Anton Steketee <79179784+anton-seaice@users.noreply.github.com>

---------

Co-authored-by: anton-seaice <anton.steketee@anu.edu.au>
Co-authored-by: Anton Steketee <79179784+anton-seaice@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build CI Link Up

3 participants