CAM icon indicating copy to clipboard operation
CAM copied to clipboard

Report an error if a user uses --model_top with anything other than cam7

Open cacraigucar opened this issue 1 year ago • 1 comments

What is the feature/what would you like to discuss?

If a user attempts to set --model_top MT with --phys cam5, they get an undecipherable error. configure should have a check to prevent the user from specifying this combo.

The error:

Traceback (most recent call last):
  File "/glade/work/juliob/cam6_4_005_jtb/cases/c64_005_ne30pg3_FMTHIST_C5phys_x02/./case.build", line 267, in <module>
    _main_func(__doc__)
  File "/glade/work/juliob/cam6_4_005_jtb/cases/c64_005_ne30pg3_FMTHIST_C5phys_x02/./case.build", line 251, in _main_func
    success = build.case_build(
              ^^^^^^^^^^^^^^^^^
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/build.py", line 1327, in case_build
    return run_and_log_case_status(functor, cb, caseroot=caseroot)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/utils.py", line 2482, in run_and_log_case_status
    rv = func()
         ^^^^^^
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/build.py", line 1311, in <lambda>
    functor = lambda: _case_build_impl(
                      ^^^^^^^^^^^^^^^^^
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/build.py", line 1184, in _case_build_impl
    sharedpath = _build_checks(
                 ^^^^^^^^^^^^^^
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/build.py", line 721, in _build_checks
    case.create_namelists()
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/case/preview_namelists.py", line 90, in create_namelists
    import_and_run_sub_or_cmd(
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/utils.py", line 668, in import_and_run_sub_or_cmd
    raise e1 from None
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/utils.py", line 664, in import_and_run_sub_or_cmd
    run_sub_or_cmd(
  File "/glade/work/juliob/cam6_4_005_jtb/cime/CIME/utils.py", line 709, in run_sub_or_cmd
    getattr(mod, subname)(*subargs)
  File "/glade/work/juliob/cam6_4_005_jtb/cime_config/buildnml", line 81, in buildnml
    raise RuntimeError("CAM's 'buildcpp' script failed to run properly.")
RuntimeError: CAM's 'buildcpp' script failed to run properly.

Is there anyone in particular you want to be part of this conversation?

No response

Will this change (regression test) answers?

No

Will you be implementing this enhancement yourself?

Any CAM SE can do this

cacraigucar avatar Jul 24 '24 23:07 cacraigucar

configure already has this check. The problem is that buildcpp was not reporting the error message from configure. A fix for this in buildcpp was committed with the cam6_4_015 tag. Here is what you get now from a QPC5 test with an xmlchange --append CAM_CONFIG_OPTS="-model_top mt":

Create namelist for component cam
   Calling /work/test-src/cam6_4_016/cime_config/buildnml
     ...calling cam buildcpp to set build time options
configure ERROR: model_top=mt is only implemented for cam7 physics at /work/test-src/cam6_4_016/bld/configure line 1318.
Traceback (most recent call last):
  File "/work/cesm-tests/c64016_qpc5-mt-ne3.3-setup_8x1/./preview_namelists", line 67, in <module>
    _main_func(__doc__)
  File "/work/cesm-tests/c64016_qpc5-mt-ne3.3-setup_8x1/./preview_namelists", line 63, in _main_func
    case.create_namelists(component=args.component)
  File "/work/test-src/cam6_4_016/cime/CIME/case/preview_namelists.py", line 90, in create_namelists
    import_and_run_sub_or_cmd(
  File "/work/test-src/cam6_4_016/cime/CIME/utils.py", line 668, in import_and_run_sub_or_cmd
    raise e1 from None
  File "/work/test-src/cam6_4_016/cime/CIME/utils.py", line 664, in import_and_run_sub_or_cmd
    run_sub_or_cmd(
  File "/work/test-src/cam6_4_016/cime/CIME/utils.py", line 709, in run_sub_or_cmd
    getattr(mod, subname)(*subargs)
  File "/work/test-src/cam6_4_016/cime_config/buildnml", line 81, in buildnml
    raise RuntimeError("CAM's 'buildcpp' script failed to run properly.")
RuntimeError: CAM's 'buildcpp' script failed to run properly.
FAILURE: in preview_namelists

The error message from configure is printed above. Unfortunately buildcpp is still triggering a traceback which makes the error from configure hard to see. I think the buildcpp script could be improved to not invoke this traceback when the error is coming from configure. That behavior would be like what we get from buildnml when build-namelist returns an error.

brian-eaton avatar Jul 25 '24 17:07 brian-eaton