Skip to content

Commit a793f08

Browse files
committed
Remove _parallelLegacy
1 parent 9e11b40 commit a793f08

File tree

4 files changed

+28
-101
lines changed

4 files changed

+28
-101
lines changed

easybuild/framework/easyblock.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2252,16 +2252,6 @@ def set_parallel(self):
22522252
if par is not None:
22532253
self.log.debug("Desired parallelism specified via 'parallel' build option: %s", par)
22542254

2255-
# Transitional only in case some easyblocks still set/change cfg['parallel']
2256-
# Use _parallelLegacy to avoid deprecation warnings
2257-
# Remove for EasyBuild 5.0
2258-
cfg_par = self.cfg['_parallelLegacy']
2259-
if cfg_par is not None:
2260-
if par is None:
2261-
par = cfg_par
2262-
else:
2263-
par = min(int(par), int(cfg_par))
2264-
22652255
par = det_parallelism(par, maxpar=self.cfg['maxparallel'])
22662256
self.log.info("Setting parallelism: %s" % par)
22672257
self.cfg.parallel = par

easybuild/framework/easyconfig/easyconfig.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -120,19 +120,15 @@ def handle_deprecated_or_replaced_easyconfig_parameters(ec_method):
120120
def new_ec_method(self, key, *args, **kwargs):
121121
"""Check whether any replace easyconfig parameters are still used"""
122122
# map deprecated parameters to their replacements, issue deprecation warning(/error)
123-
if key == 'parallel':
124-
_log.deprecated("Easyconfig parameter 'parallel' is deprecated, "
125-
"use 'maxparallel' or the parallel property instead.", '5.1')
126-
# Use a "hidden" property for now to match behavior as closely as possible
127-
key = '_parallelLegacy'
128-
elif key in ALTERNATIVE_EASYCONFIG_PARAMETERS:
123+
if key in ALTERNATIVE_EASYCONFIG_PARAMETERS:
129124
key = ALTERNATIVE_EASYCONFIG_PARAMETERS[key]
130125
elif key in DEPRECATED_EASYCONFIG_PARAMETERS:
131126
depr_key = key
132127
key, ver = DEPRECATED_EASYCONFIG_PARAMETERS[depr_key]
133128
_log.deprecated("Easyconfig parameter '%s' is deprecated, use '%s' instead" % (depr_key, key), ver)
134129
elif key in REPLACED_PARAMETERS:
135-
_log.nosupport("Easyconfig parameter '%s' is replaced by '%s'" % (key, REPLACED_PARAMETERS[key]), '2.0')
130+
newkey, ver = REPLACED_PARAMETERS[key]
131+
_log.nosupport("Easyconfig parameter '%s' is replaced by '%s'" % (key, newkey), ver)
136132
return ec_method(self, key, *args, **kwargs)
137133

138134
return new_ec_method
@@ -149,9 +145,7 @@ def is_local_var_name(name):
149145
"""
150146
res = False
151147
if name.startswith(LOCAL_VAR_PREFIX) or name.startswith('_'):
152-
# Remove with EasyBuild 5.1
153-
if name != '_parallelLegacy':
154-
res = True
148+
res = True
155149
# __builtins__ is always defined as a 'local' variables
156150
# single-letter local variable names are allowed (mainly for use in list comprehensions)
157151
# in Python 2, variables defined in list comprehensions leak to the outside (no longer the case in Python 3)
@@ -508,8 +502,6 @@ def __init__(self, path, extra_options=None, build_specs=None, validate=True, hi
508502

509503
# Storage for parallel property. Mark as unset initially
510504
self._parallel = None
511-
# Legacy value, remove with EasyBuild 5.1
512-
self._config['_parallelLegacy'] = [None, '', ('', )]
513505

514506
# parse easyconfig file
515507
self.build_specs = build_specs
@@ -711,11 +703,6 @@ def parse(self):
711703
if missing_mandatory_keys:
712704
raise EasyBuildError("mandatory parameters not provided in %s: %s", self.path, missing_mandatory_keys)
713705

714-
if 'parallel' in ec_vars:
715-
# Replace value and issue better warning for EC params (as opposed to warnings meant for easyblocks)
716-
self.log.deprecated("Easyconfig parameter 'parallel' is deprecated, use 'maxparallel' instead.", '5.1')
717-
ec_vars['_parallelLegacy'] = ec_vars.pop('parallel')
718-
719706
# provide suggestions for typos. Local variable names are excluded from this check
720707
possible_typos = [(key, difflib.get_close_matches(key.lower(), self._config.keys(), 1, 0.85))
721708
for key in ec_vars if not is_local_var_name(key) and key not in self]
@@ -1235,8 +1222,6 @@ def parallel(self, value):
12351222
# Update backstorage and template value
12361223
self._parallel = value
12371224
self.template_values['parallel'] = value
1238-
# Backwards compat only. Remove with EasyBuild 5.1
1239-
self._config['_parallelLegacy'][0] = value
12401225

12411226
def dump(self, fp, always_overwrite=True, backup=False, explicit_toolchains=False):
12421227
"""

easybuild/framework/easyconfig/parser.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,11 @@
107107

108108
# replaced easyconfig parameters, and their replacements
109109
REPLACED_PARAMETERS = {
110-
'license': 'license_file',
111-
'makeopts': 'buildopts',
112-
'premakeopts': 'prebuildopts',
110+
# <old_param>: (<new_param>, <removed_in_version>),
111+
'license': ('license_file', '2.0'),
112+
'makeopts': ('buildopts', '2.0'),
113+
'parallel': ('maxparallel', '5.0'),
114+
'premakeopts': ('prebuildopts', '2.0'),
113115
}
114116

115117
_log = fancylogger.getLogger('easyconfig.parser', fname=False)

test/framework/easyblock.py

Lines changed: 19 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -2199,30 +2199,31 @@ def test_parallel(self):
21992199
toy_ec = os.path.join(topdir, 'easyconfigs', 'test_ecs', 't', 'toy', 'toy-0.0.eb')
22002200
toytxt = read_file(toy_ec)
22012201

2202+
handle, toy_ec_error = tempfile.mkstemp(prefix='easyblock_test_file_', suffix='.eb')
2203+
os.close(handle)
2204+
write_file(toy_ec_error, toytxt + "\nparallel = 123")
2205+
22022206
handle, toy_ec1 = tempfile.mkstemp(prefix='easyblock_test_file_', suffix='.eb')
22032207
os.close(handle)
2204-
write_file(toy_ec1, toytxt + "\nparallel = 13")
2208+
write_file(toy_ec1, toytxt + "\nmaxparallel = None")
22052209

22062210
handle, toy_ec2 = tempfile.mkstemp(prefix='easyblock_test_file_', suffix='.eb')
22072211
os.close(handle)
2208-
write_file(toy_ec2, toytxt + "\nparallel = 12\nmaxparallel = 6")
2212+
write_file(toy_ec2, toytxt + "\nmaxparallel = 6")
22092213

22102214
handle, toy_ec3 = tempfile.mkstemp(prefix='easyblock_test_file_', suffix='.eb')
22112215
os.close(handle)
2212-
write_file(toy_ec3, toytxt + "\nparallel = False")
2213-
2214-
handle, toy_ec4 = tempfile.mkstemp(prefix='easyblock_test_file_', suffix='.eb')
2215-
os.close(handle)
2216-
write_file(toy_ec4, toytxt + "\nmaxparallel = 6")
2217-
2218-
handle, toy_ec5 = tempfile.mkstemp(prefix='easyblock_test_file_', suffix='.eb')
2219-
os.close(handle)
2220-
write_file(toy_ec5, toytxt + "\nmaxparallel = False")
2216+
write_file(toy_ec3, toytxt + "\nmaxparallel = False")
22212217

22222218
import easybuild.tools.systemtools as st
22232219
auto_parallel = 15
22242220
st.det_parallelism._default_parallelism = auto_parallel
22252221

2222+
# 'parallel' easyconfig parameter specified is an error
2223+
self.assertRaises(EasyBuildError, EasyConfig, toy_ec_error)
2224+
self.assertErrorRegex(EasyBuildError, "Easyconfig parameter 'parallel' is replaced by 'maxparallel'",
2225+
EasyConfig, toy_ec_error)
2226+
22262227
# default: parallelism is derived from # available cores + ulimit
22272228
# Note that maxparallel has a default of 16, so we need a lower auto_paralle value here
22282229
test_eb = EasyBlock(EasyConfig(toy_ec))
@@ -2232,87 +2233,36 @@ def test_parallel(self):
22322233
auto_parallel = 128 # Don't limit by available CPU cores mock
22332234
st.det_parallelism._default_parallelism = auto_parallel
22342235

2235-
# only 'parallel' easyconfig parameter specified (no 'parallel' build option)
2236-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2237-
test_eb = EasyBlock(EasyConfig(toy_ec1))
2238-
test_eb.check_readiness_step()
2239-
self.assertEqual(test_eb.cfg.parallel, 13)
2240-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2241-
self.assertEqual(test_eb.cfg['parallel'], 13)
2242-
2243-
# both 'parallel' and 'maxparallel' easyconfig parameters specified (no 'parallel' build option)
2244-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2245-
test_eb = EasyBlock(EasyConfig(toy_ec2))
2246-
test_eb.check_readiness_step()
2247-
self.assertEqual(test_eb.cfg.parallel, 6)
2248-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2249-
self.assertEqual(test_eb.cfg['parallel'], 6)
2250-
2251-
# make sure 'parallel = False' is not overriden (no 'parallel' build option)
2252-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2253-
test_eb = EasyBlock(EasyConfig(toy_ec3))
2254-
test_eb.check_readiness_step()
2255-
self.assertEqual(test_eb.cfg.parallel, False)
2256-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2257-
self.assertEqual(test_eb.cfg['parallel'], False)
2258-
22592236
# only 'maxparallel' easyconfig parameter specified (no 'parallel' build option)
2260-
test_eb = EasyBlock(EasyConfig(toy_ec4))
2237+
test_eb = EasyBlock(EasyConfig(toy_ec2))
22612238
test_eb.check_readiness_step()
22622239
self.assertEqual(test_eb.cfg.parallel, 6)
2263-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2264-
self.assertEqual(test_eb.cfg['parallel'], 6)
22652240

22662241
# make sure 'maxparallel = False' is treated as 1 (no 'parallel' build option)
2267-
test_eb = EasyBlock(EasyConfig(toy_ec5))
2242+
test_eb = EasyBlock(EasyConfig(toy_ec3))
22682243
test_eb.check_readiness_step()
22692244
self.assertEqual(test_eb.cfg.parallel, 1)
2270-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2271-
self.assertEqual(test_eb.cfg['parallel'], 1)
22722245

22732246
# only 'parallel' build option specified
22742247
init_config(build_options={'parallel': '13', 'validate': False})
22752248
test_eb = EasyBlock(EasyConfig(toy_ec))
22762249
test_eb.check_readiness_step()
22772250
self.assertEqual(test_eb.cfg.parallel, 13)
2278-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2279-
self.assertEqual(test_eb.cfg['parallel'], 13)
22802251

2281-
# both 'parallel' build option and easyconfig parameter specified (no 'maxparallel')
2282-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2283-
test_eb = EasyBlock(EasyConfig(toy_ec1))
2252+
# 'maxparallel = None' is the same as unset
2253+
test_eb = EasyBlock(EasyConfig(toy_ec1))
22842254
test_eb.check_readiness_step()
22852255
self.assertEqual(test_eb.cfg.parallel, 13)
2286-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2287-
self.assertEqual(test_eb.cfg['parallel'], 13)
2288-
2289-
# both 'parallel' and 'maxparallel' easyconfig parameters specified + 'parallel' build option
2290-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2291-
test_eb = EasyBlock(EasyConfig(toy_ec2))
2292-
test_eb.check_readiness_step()
2293-
self.assertEqual(test_eb.cfg.parallel, 6)
2294-
2295-
# make sure 'parallel = False' is not overriden (with 'parallel' build option)
2296-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2297-
test_eb = EasyBlock(EasyConfig(toy_ec3))
2298-
test_eb.check_readiness_step()
2299-
self.assertEqual(test_eb.cfg.parallel, 0)
2300-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2301-
self.assertEqual(test_eb.cfg['parallel'], 0)
23022256

2303-
# only 'maxparallel' easyconfig parameter specified (with 'parallel' build option)
2304-
test_eb = EasyBlock(EasyConfig(toy_ec4))
2257+
# 'maxparallel' easyconfig parameter with 'parallel' build option
2258+
test_eb = EasyBlock(EasyConfig(toy_ec2))
23052259
test_eb.check_readiness_step()
23062260
self.assertEqual(test_eb.cfg.parallel, 6)
2307-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2308-
self.assertEqual(test_eb.cfg['parallel'], 6)
23092261

23102262
# make sure 'maxparallel = False' is treated as 1 (with 'parallel' build option)
2311-
test_eb = EasyBlock(EasyConfig(toy_ec5))
2263+
test_eb = EasyBlock(EasyConfig(toy_ec3))
23122264
test_eb.check_readiness_step()
23132265
self.assertEqual(test_eb.cfg.parallel, 1)
2314-
with self.temporarily_allow_deprecated_behaviour(), self.mocked_stdout_stderr():
2315-
self.assertEqual(test_eb.cfg['parallel'], 1)
23162266

23172267
# Template updated correctly
23182268
test_eb.cfg['buildopts'] = '-j %(parallel)s'

0 commit comments

Comments
 (0)