ESCOMP / ESCOMP/CTSM

Allow LILAC system tests to share builds

Open
#1,066 0 comments 0 reactions 0 assignees View on GitHub
priority: low testing
Dominant language
Fortran
Stars
352
Forks
361
Avg merge
6d 6h
Merged PRs (30d)
8

Description

The LILAC system tests I'm writing (starting with `LILACSMOKE`) currently do not use the shared build mechanism. This is because they (very intentionally and importantly) use LILAC's `build_ctsm` script to build CTSM and other needed libraries. However, if we start to accumulate more than a few LILAC system tests, we should probably introduce a shared build mechanism for them.

Off-hand, I think this could be done by setting the SHAREDLIBROOT variable in the case created by `build_ctsm` (i.e., the case-within-the-case). We probably can't use the same SHAREDLIBROOT as for other tests (one reason is that the ctsm library will contain the lilac modules for the lilac tests, but not in general), but we could do something like setting the SHAREDLIBROOT for the case-within-the-case to the host case's SHAREDLIBROOT with `.lilac` tacked on at the end. It's possible that we would then need sym links so that the necessary files are still picked up by the ctsm.mk file.

One possible issue with this is: I think there is some logic in the cime test system to prevent tests from stomping on each other in the shared build area. This logic may not be effective with the current setup, because the test system doesn't know about these cases-within-cases. However, I'm hopeful that it will be possible to get this to work. For example, if we change the build phase of the LILAC system tests to operate during the `sharedlib_only` phase rather than the `model_only` phase, that may force serialization of the LILAC builds. This will require some investigation of the cime code as well as some testing (where we run a test suite consisting of a few LILAC tests, and maybe nothing else at least at first).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.