Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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 @@ -595,8 +595,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
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
10 changes: 9 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 Expand Up @@ -907,6 +911,10 @@ def postprocess(self):
if self.options.deprecated:
build_log.CURRENT_VERSION = LooseVersion(self.options.deprecated)

# Convert this to an empty list if not set to simplify usage
if self.options.silence_deprecation_warnings is None:
self.options.silence_deprecation_warnings = []

# log to specified value of --unittest-file
if self.options.unittest_file:
fancylogger.logToFile(self.options.unittest_file, max_bytes=0)
Expand Down
20 changes: 20 additions & 0 deletions test/framework/easyconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -3795,6 +3795,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 deprecatd 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