moves the lib list to the driver buildnml with backward compatibility#4836
moves the lib list to the driver buildnml with backward compatibility#4836jedwards4b merged 13 commits intoESMCI:masterfrom
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4836 +/- ##
==========================================
+ Coverage 55.28% 55.33% +0.05%
==========================================
Files 266 266
Lines 38491 38493 +2
Branches 8323 8323
==========================================
+ Hits 21279 21302 +23
+ Misses 14856 14848 -8
+ Partials 2356 2343 -13 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
sjsprecious
left a comment
There was a problem hiding this comment.
Thanks @jedwards4b for working on this PR. I could confirm that it builds and runs the Kokkos lib/kernels successfully in CAM, together with your other PR (ESCOMP/CMEPS#584).
| if comp_interface == "nuopc" and (not ufs_driver or ufs_driver != "nems"): | ||
| libs.append("CDEPS") | ||
| # Build shared code of CDEPS nuopc data models | ||
| build_script = {} |
There was a problem hiding this comment.
I think this line is pointless, no? It's already set before the if clause.
There was a problem hiding this comment.
Looks like a merge error, I'll clean it up - thanks.
|
|
||
| if uses_kokkos(case) and comp_interface != "nuopc": | ||
| libs.append("ekat") | ||
| if uses_kokkos(case) and comp_interface != "nuopc": |
There was a problem hiding this comment.
That's correct, this code is only still here for backward compatibility.
There was a problem hiding this comment.
Yeah, that was my idea. I don't want to inject knowledge about host model tpls into CIME. All CIME should care about is a list of libs names, and where to find their build scripts.
|
@jedwards4b Could you document this under Can we comment which sections are being kept for backwards compatibility. |
|
An issue that I think we still need to resolve is that some support libraries depend on others and |
Perhaps a non-trivial API change, but...what about asking that the buildlib.foo scripts also offer a command line option like Alternatively, we can ask that buildnml (or config_compset.xml, depending on where this logic should be impl-ed) adds ALL libs (including deps) in the correct order. So, eg., if EAMxx in E3SM needs kokkos and for some reason kokkos depends on csm_share, it must add the libs "csm_share,kokkos" (and not just "kokkos"). CIME will concat all lists, and remove duplicates. |
|
@bargol your alternate solution is what I was suggesting and have implemented. |
|
@bartgol I have added ESCOMP/MOM_interface#276 to show what this looks like in a particular component and have tested this together with the CMEPS and cime changes. |
|
@jasonb5 I am ready to merge this with you're review. |
jasonb5
left a comment
There was a problem hiding this comment.
LGTM
@jedwards4b Added some tests and a warning about using a deprecated method.
Description
Proposed change to handle list of support libraries in the driver rather than in cime.
Checklist