-
Notifications
You must be signed in to change notification settings - Fork 383
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Switch E3SM build system to CMake! #3043
Merged
Merged
Conversation
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
we don't need to lowball the proc-cost of a case build in test scheduler.
Also, clarify things by using better names: COMP_CLASS and COMP_NAME
…uild_use_old Upstream to pick up new MPAS submodule * origin/master: (69 commits) Upon further thought create_test: fix baseline_root for non-default compiler rename anvil-centos7 back to anvil Fix py3 issue with floating point data in env_batch Update Theta module after PM Update mpas-source to include new cmake scripts adding melving settings for ne4np4pg2 Add strict to compy debug queue Revert "Adds two regression tests for inline interpolation" Set SCM to run with netcdf Add other machines to use the tri-grid pe-layouts specified for sandiatoss3 Fix time limits for queues on anvil add 'strict' keyword for anvil queues update anvil queues for time limits depending on size Add fsurdat file definition for new 20TR compset as well Update Theta modules Update HOMME Theta machine file Update tri-grid I-case pelayout for sandiatoss3 Modified walltimemax for both queues Try larger pe-layouts for tri-grid tests on sandiatoss3 ...
Did another upstream merge and quick re-test on melvin. All looks good! Merging to next. |
jgfouca
added a commit
that referenced
this pull request
Nov 15, 2019
Switch E3SM build system to CMake! See the GitHub PR for details. [BFB] * jgfouca/cime/case_build_use_old: (45 commits) e3sm no longer uses MODEL in config_compilers Add dry-run capability to case.build Fixes for cori Make sure ninja builds are verbose Make ninja the default backend Add comment pertaining to MPAS MPAS' mandatory use of PIO2 should be caputured in make cmake files, not config_compilers.xml Significant refactor to support per-component macro settings Fixes for summit + pgiacc Fix summit cxx linking Fix comment Disable compiler checks that happen upon cmake launch Fix paths to cime files in Depends.intel.cmake Fix generation of cmake macros for negated string checks Add helper for setting flags for indv files. change cmake bld dir Fix pylint warnings Only E3SM needs --use-old option to case.build With separate build dirs, special handling of xshare is no longer needed Progress towards separate build dirs for components ...
jgfouca
added a commit
that referenced
this pull request
Nov 15, 2019
Merge 2 for this PR. [BFB] * jgfouca/cime/case_build_use_old: Forgot to push these compy fixes
jgfouca
added a commit
that referenced
this pull request
Nov 16, 2019
Switch E3SM build system to CMake! Merge three for this PR. [BFB] * jgfouca/cime/case_build_use_old: Switch back to gmake as default backend
jgfouca
added a commit
that referenced
this pull request
Nov 18, 2019
Switch E3SM build system to CMake Merge four for this pr. [BFB] * jgfouca/cime/case_build_use_old: No need to set CMAKE_EXE_LINKER flags, target_link_libs already was handling that
jgfouca
added a commit
that referenced
this pull request
Nov 18, 2019
Switch E3SM build system to CMake! See github PR for in-depth description. [BFB] * jgfouca/cime/case_build_use_old: (48 commits) No need to set CMAKE_EXE_LINKER flags, target_link_libs already was handling that Switch back to gmake as default backend Forgot to push these compy fixes e3sm no longer uses MODEL in config_compilers Add dry-run capability to case.build Fixes for cori Make sure ninja builds are verbose Make ninja the default backend Add comment pertaining to MPAS MPAS' mandatory use of PIO2 should be caputured in make cmake files, not config_compilers.xml Significant refactor to support per-component macro settings Fixes for summit + pgiacc Fix summit cxx linking Fix comment Disable compiler checks that happen upon cmake launch Fix paths to cime files in Depends.intel.cmake Fix generation of cmake macros for negated string checks Add helper for setting flags for indv files. change cmake bld dir Fix pylint warnings ...
This was referenced Nov 19, 2019
jgfouca
added a commit
that referenced
this pull request
Oct 6, 2021
) Major build system enhancement: deprecate config_compilers.xml! This is the most significant change to the case-control system since the cmake-ification (#3043) effort 2 years ago. This PR is a natural follow-on to that effort that further cmake-ifies our build system and reduces technical debt / complexity in the build system by stripping away layers of CIME magic that were not adding much value for us. Specifically, the config_compilers.xml file, which CIME uses to generate the Macros.make and Macros.cmake casedir files (specifies compilers, flags, link flags etc), will be replaced with hierarchical CMake cache files that are persistently stored in our repo. [BFB] * jgfouca/replace_xml_with_cmake_macros: Fix handling of '\!' Add CIME hotfix Use COMP_NAME, not MODEL Sync with latest config_compilers.xml Add support for compiler_os.cmake macros Improve dox for compare-flags compare-flags: make tool more flexible and better output Refresh cache files after upstream merge Add some helper scripts for this effort Update CIME with latest Add support for universal macro Update CIME to bring in new macro capability Remove obsolete comment Add new cmake-based macros
jgfouca
added a commit
that referenced
this pull request
Oct 7, 2021
…4537) Major build system enhancement: deprecate config_compilers.xml! This is the most significant change to the case-control system since the cmake-ification (#3043) effort 2 years ago. This PR is a natural follow-on to that effort that further cmake-ifies our build system and reduces technical debt / complexity in the build system by stripping away layers of CIME magic that were not adding much value for us. Specifically, the config_compilers.xml file, which CIME uses to generate the Macros.make and Macros.cmake casedir files (specifies compilers, flags, link flags etc), will be replaced with hierarchical CMake cache files that are persistently stored in our repo. [BFB] * jgfouca/replace_xml_with_cmake_macros: Fix handling of '\!' Add CIME hotfix Use COMP_NAME, not MODEL Sync with latest config_compilers.xml Add support for compiler_os.cmake macros Improve dox for compare-flags compare-flags: make tool more flexible and better output Refresh cache files after upstream merge Add some helper scripts for this effort Update CIME with latest Add support for universal macro Update CIME to bring in new macro capability Remove obsolete comment Add new cmake-based macros
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Atmosphere
BFB
PR leaves answers BFB
CIME
Coupler
enhancement
Land
mpas-albany-landice
mpas-ocean
River
Scripts
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is the big one! This PR switches E3SM's default build-system to be cmake-based. This will be the most significant change to CIME since the pythonization of the case control system. Note that this change only impacts components, builds of sharedlibs will not change.
I had been attempting to integrate this work in smaller chunks, but I had to suspend these integrations in order not to disrupt things before the code freeze. This PR will also need to not be integrated until the code freeze is over.
At a high level, we are going from this:

To this:

Plot legend for above images:
Motivations
User impacts
XML changes
This PR disambiguates the selection of component specific flags in config_compiles.xml. We used to support the MODEL selector, IE:
But it was unclear whether MODEL referred to the component name ("cam") or component class ("atm"). The interpretation of MODEL was not even consistent across components. So MODEL is gone. Instead, please use COMP_NAME and COMP_CLASS.
Testing:
Future work:
I would be super happy if others took the time to help me beta-test this. You'll need to be on this branch and set your mpas-source submodule to 20d6cdb0, which you can fetch from git@github.com:jgfouca/MPAS-Model.git.
In the meantime, please avoid (or consult with me) changes to the classic system.
@jedwards4b , @mvertens , @billsacks , @bmpersc
[BFB]