Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions easybuild/framework/easyconfig/easyconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -834,14 +834,16 @@ def check_deprecated(self, path):
deprecated = self['deprecated']
if deprecated:
if isinstance(deprecated, string_type):
depr_msgs.append("easyconfig file '%s' is marked as deprecated:\n%s\n" % (path, deprecated))
if 'easyconfig' not in build_option('silence_deprecation_warnings'):
depr_msgs.append("easyconfig file '%s' is marked as deprecated:\n%s\n" % (path, deprecated))
else:
raise EasyBuildError("Wrong type for value of 'deprecated' easyconfig parameter: %s", type(deprecated))

if self.toolchain.is_deprecated():
# allow use of deprecated toolchains when running unit tests,
# because test easyconfigs/modules often use old toolchain versions (and updating them is far from trivial)
if not build_option('unit_testing_mode'):
if (not build_option('unit_testing_mode')
and 'toolchain' not in build_option('silence_deprecation_warnings')):
depr_msgs.append("toolchain '%(name)s/%(version)s' is marked as deprecated" % self['toolchain'])

if depr_msgs:
Expand Down
3 changes: 1 addition & 2 deletions easybuild/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,8 +603,7 @@ def main(args=None, logfile=None, do_build=None, testing=False, modtool=None):
eb_go, cfg_settings = set_up_configuration(args=args, logfile=logfile, testing=testing)
options, orig_paths = eb_go.options, eb_go.args

silence_deprecation_warnings = build_option('silence_deprecation_warnings') or []
if 'python2' not in silence_deprecation_warnings:
if 'python2' not in build_option('silence_deprecation_warnings'):
python2_is_deprecated()

global _log
Expand Down
2 changes: 1 addition & 1 deletion easybuild/tools/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,6 @@ def mk_full_default_path(name, prefix=DEFAULT_PREFIX):
'rpath_filter',
'rpath_override_dirs',
'required_linked_shared_libs',
'silence_deprecation_warnings',
'skip',
'stop',
'subdir_user_modules',
Expand Down Expand Up @@ -335,6 +334,7 @@ def mk_full_default_path(name, prefix=DEFAULT_PREFIX):
'include_easyblocks_from_pr',
'robot',
'search_paths',
'silence_deprecation_warnings',
],
WARN: [
'check_ebroot_env_vars',
Expand Down
4 changes: 1 addition & 3 deletions easybuild/tools/modules.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,9 +274,7 @@ def set_and_check_version(self):
depr_msg = "Support for %s version < %s is deprecated, " % (self.NAME, self.DEPR_VERSION)
depr_msg += "found version %s" % self.version

silence_deprecation_warnings = build_option('silence_deprecation_warnings') or []

if self.version.startswith('6') and 'Lmod6' in silence_deprecation_warnings:
if self.version.startswith('6') and 'Lmod6' in build_option('silence_deprecation_warnings'):
self.log.warning(depr_msg)
else:
self.log.deprecated(depr_msg, '5.0')
Expand Down
6 changes: 5 additions & 1 deletion easybuild/tools/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,8 @@ def override_options(self):
# override options
descr = ("Override options", "Override default EasyBuild behavior.")

all_deprecations = ('python2', 'Lmod6', 'easyconfig', 'toolchain')

opts = OrderedDict({
'accept-eula': ("Accept EULA for specified software [DEPRECATED, use --accept-eula-for instead!]",
'strlist', 'store', []),
Expand Down Expand Up @@ -494,7 +496,9 @@ def override_options(self):
'set-default-module': ("Set the generated module as default", None, 'store_true', False),
'set-gid-bit': ("Set group ID bit on newly created directories", None, 'store_true', False),
'show-progress-bar': ("Show progress bar in terminal output", None, 'store_true', True),
'silence-deprecation-warnings': ("Silence specified deprecation warnings", 'strlist', 'extend', None),
'silence-deprecation-warnings': (
"Silence specified deprecation warnings out of (%s)" % ', '.join(all_deprecations),
'strlist', 'extend', []),
'skip-extensions': ("Skip installation of extensions", None, 'store_true', False),
'skip-test-cases': ("Skip running test cases", None, 'store_true', False, 't'),
'skip-test-step': ("Skip running the test step (e.g. unit tests)", None, 'store_true', False),
Expand Down
20 changes: 20 additions & 0 deletions test/framework/easyconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -3819,6 +3819,26 @@ def test_deprecated(self):

error_pattern = r"easyconfig file '.*/test.eb' is marked as deprecated:\nthis is just a test\n \(see also"
self.assertErrorRegex(EasyBuildError, error_pattern, EasyConfig, test_ec)
with self.mocked_stdout_stderr():
# But this can be silenced
init_config(build_options={'silence_deprecation_warnings': ['easyconfig']})
EasyConfig(test_ec)
self.assertFalse(self.get_stderr())
self.assertFalse(self.get_stdout())

def test_deprecated_toolchain(self):
"""Test use of deprecated toolchain"""
topdir = os.path.dirname(os.path.abspath(__file__))
deprecated_toolchain_ec = os.path.join(topdir, 'easyconfigs', 'test_ecs', 't', 'toy', 'toy-0.0-gompi-2018a.eb')
init_config(build_options={'silence_deprecation_warnings': [], 'unit_testing_mode': False})
error_pattern = r"toolchain 'gompi/2018a' is marked as deprecated \(see also"
self.assertErrorRegex(EasyBuildError, error_pattern, EasyConfig, deprecated_toolchain_ec)
with self.mocked_stdout_stderr():
# But this can be silenced
init_config(build_options={'silence_deprecation_warnings': ['toolchain'], 'unit_testing_mode': False})
EasyConfig(deprecated_toolchain_ec)
self.assertFalse(self.get_stderr())
self.assertFalse(self.get_stdout())

def test_filename(self):
"""Test filename method of EasyConfig class."""
Expand Down