diff --git a/testing_and_setup/compass/setup_testcase.py b/testing_and_setup/compass/setup_testcase.py index a4553301e6..ed3538d707 100755 --- a/testing_and_setup/compass/setup_testcase.py +++ b/testing_and_setup/compass/setup_testcase.py @@ -26,6 +26,7 @@ import textwrap import netCDF4 import shutil +import errno try: from collections import defaultdict @@ -517,6 +518,8 @@ def generate_driver_scripts(config_file, configs): # {{{ if not os.path.exists(init_path): os.makedirs(init_path) + link_load_compass_env(init_path, configs) + # Create script file script = open('{}/{}'.format(init_path, name), 'w') @@ -1549,6 +1552,24 @@ def get_case_name(config_file): # {{{ return name # }}} + +def link_load_compass_env(init_path, configs): # {{{ + + if configs.getboolean('conda', 'link_load_compass'): + target = '{}/{}/load_compass_env.sh'.format( + configs.get('script_paths', 'script_path'), + configs.get('script_paths', 'core_dir')) + + link_name = '{}/load_compass_env.sh'.format(init_path) + try: + os.symlink(target, link_name) + except OSError as e: + if e.errno == errno.EEXIST: + os.remove(link_name) + os.symlink(target, link_name) + else: + raise e +# }}} # }}} @@ -1590,6 +1611,10 @@ def get_case_name(config_file): # {{{ help="If set, script will create case directories in " "work_dir rather than the current directory.", metavar="PATH") + parser.add_argument("--link_load_compass", dest="link_load_compass", + action="store_true", + help="If set, a link to /load_compass_env.sh is " + "included with each test case") args = parser.parse_args() @@ -1678,6 +1703,15 @@ def get_case_name(config_file): # {{{ config.set('script_input_arguments', 'model_runtime', args.model_runtime) + if not config.has_section('conda'): + config.add_section('conda') + + if not config.has_option('conda', 'link_load_compass'): + config.set('conda', 'link_load_compass', 'False') + + if args.link_load_compass: + config.set('conda', 'link_load_compass', 'True') + # Build variables for history output old_dir = os.getcwd() os.chdir(config.get('script_paths', 'script_path'))