Skip to content

Commit bebf495

Browse files
authored
Merge pull request #9 from boegel/cpath-mod-opt
minor tweak for support for `--module-search-path-headers`
2 parents 8cf9189 + 10525cd commit bebf495

File tree

6 files changed

+21
-22
lines changed

6 files changed

+21
-22
lines changed

easybuild/framework/easyblock.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
from easybuild.tools.build_details import get_build_stats
7676
from easybuild.tools.build_log import EasyBuildError, EasyBuildExit, dry_run_msg, dry_run_warning, dry_run_set_dirs
7777
from easybuild.tools.build_log import print_error, print_msg, print_warning
78-
from easybuild.tools.config import CHECKSUM_PRIORITY_JSON, DEFAULT_ENVVAR_USERS_MODULES, DEFAULT_MOD_SEARCH_PATH_HEADERS
78+
from easybuild.tools.config import CHECKSUM_PRIORITY_JSON, DEFAULT_ENVVAR_USERS_MODULES
7979
from easybuild.tools.config import EASYBUILD_SOURCES_URL, EBPYTHONPREFIXES # noqa
8080
from easybuild.tools.config import FORCE_DOWNLOAD_ALL, FORCE_DOWNLOAD_PATCHES, FORCE_DOWNLOAD_SOURCES
8181
from easybuild.tools.config import MOD_SEARCH_PATH_HEADERS, PYTHONPATH, SEARCH_PATH_BIN_DIRS, SEARCH_PATH_LIB_DIRS
@@ -100,7 +100,7 @@
100100
from easybuild.tools.module_generator import ModuleGeneratorLua, ModuleGeneratorTcl, module_generator, dependencies_for
101101
from easybuild.tools.module_naming_scheme.utilities import det_full_ec_version
102102
from easybuild.tools.modules import ROOT_ENV_VAR_NAME_PREFIX, VERSION_ENV_VAR_NAME_PREFIX, DEVEL_ENV_VAR_NAME_PREFIX
103-
from easybuild.tools.modules import Lmod, ModEnvVarType, ModuleLoadEnvironment
103+
from easybuild.tools.modules import Lmod, ModEnvVarType, ModuleLoadEnvironment, MODULE_LOAD_ENV_HEADERS
104104
from easybuild.tools.modules import curr_module_paths, invalidate_module_caches_for, get_software_root
105105
from easybuild.tools.modules import get_software_root_env_var_name, get_software_version_env_var_name
106106
from easybuild.tools.output import PROGRESS_BAR_DOWNLOAD_ALL, PROGRESS_BAR_EASYCONFIG, PROGRESS_BAR_EXTENSIONS
@@ -223,14 +223,10 @@ def __init__(self, ec, logfile=None):
223223
# environment variables on module load
224224
mod_load_aliases = {}
225225
# apply --module-search-path-headers: easyconfig parameter has precedence
226-
mod_load_cpp_headers = self.cfg['module_search_path_headers']
227-
if mod_load_cpp_headers is False:
228-
mod_load_cpp_headers = build_option('module_search_path_headers')
229-
if mod_load_cpp_headers is False or mod_load_cpp_headers is None:
230-
mod_load_cpp_headers = DEFAULT_MOD_SEARCH_PATH_HEADERS
226+
mod_load_cpp_headers = self.cfg['module_search_path_headers'] or build_option('module_search_path_headers')
231227

232228
try:
233-
mod_load_aliases['HEADERS'] = MOD_SEARCH_PATH_HEADERS[mod_load_cpp_headers]
229+
mod_load_aliases[MODULE_LOAD_ENV_HEADERS] = MOD_SEARCH_PATH_HEADERS[mod_load_cpp_headers]
234230
except KeyError as err:
235231
raise EasyBuildError(
236232
f"Unknown value selected for option module-search-path-headers: {mod_load_cpp_headers}. "

easybuild/framework/easyconfig/default.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@
208208
'moduleloadnoconflict': [False, "Don't check for conflicts, unload other versions instead ", MODULES],
209209
'module_depends_on': [None, 'Use depends_on (Lmod 7.6.1+) for dependencies in generated module '
210210
'(implies recursive unloading of modules) [DEPRECATED]', MODULES],
211-
'module_search_path_headers': [False, "Environment variable set by modules on load with search paths "
212-
"to header files", MODULES],
211+
'module_search_path_headers': [None, "Environment variable set by modules on load "
212+
"with search paths to header files (if None, use $CPATH)", MODULES],
213213
'recursive_module_unload': [None, "Recursive unload of all dependencies when unloading module "
214214
"(True/False to hard enable/disable; None implies honoring the "
215215
"--recursive-module-unload EasyBuild configuration setting", MODULES],

easybuild/tools/config.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,12 +183,13 @@
183183
PYTHON_SEARCH_PATH_TYPES = [PYTHONPATH, EBPYTHONPREFIXES]
184184

185185
# options to handle header search paths in environment of modules
186+
MOD_SEARCH_PATH_HEADERS_CPATH = 'cpath'
187+
MOD_SEARCH_PATH_HEADERS_INCLUDE_PATHS = 'include_paths'
186188
MOD_SEARCH_PATH_HEADERS = {
187-
"none": [],
188-
"cpath": ["CPATH"],
189-
"include_paths": ["C_INCLUDE_PATH", "CPLUS_INCLUDE_PATH", "OBJC_INCLUDE_PATH"],
189+
MOD_SEARCH_PATH_HEADERS_CPATH: ['CPATH'],
190+
MOD_SEARCH_PATH_HEADERS_INCLUDE_PATHS: ['C_INCLUDE_PATH', 'CPLUS_INCLUDE_PATH', 'OBJC_INCLUDE_PATH'],
190191
}
191-
DEFAULT_MOD_SEARCH_PATH_HEADERS = "cpath"
192+
DEFAULT_MOD_SEARCH_PATH_HEADERS = MOD_SEARCH_PATH_HEADERS_CPATH
192193

193194

194195
class Singleton(ABCMeta):
@@ -315,7 +316,6 @@ def mk_full_default_path(name, prefix=DEFAULT_PREFIX):
315316
'logtostdout',
316317
'minimal_toolchains',
317318
'module_only',
318-
'module_search_path_headers',
319319
'package',
320320
'parallel_extensions_install',
321321
'read_only_installdir',
@@ -398,6 +398,9 @@ def mk_full_default_path(name, prefix=DEFAULT_PREFIX):
398398
DEFAULT_MINIMAL_BUILD_ENV: [
399399
'minimal_build_env',
400400
],
401+
DEFAULT_MOD_SEARCH_PATH_HEADERS: [
402+
'module_search_path_headers',
403+
],
401404
DEFAULT_PKG_RELEASE: [
402405
'package_release',
403406
],

easybuild/tools/modules.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
from easybuild.tools.utilities import get_subclasses, nub
5858

5959

60+
MODULE_LOAD_ENV_HEADERS = 'HEADERS'
61+
6062
# software root/version environment variable name prefixes
6163
ROOT_ENV_VAR_NAME_PREFIX = "EBROOT"
6264
VERSION_ENV_VAR_NAME_PREFIX = "EBVERSION"
@@ -283,9 +285,8 @@ def __init__(self, aliases=None):
283285

284286
# environment variables with known aliases
285287
# e.g. search paths to C/C++ headers
286-
if 'HEADERS' in self._aliases:
287-
for envar_name in self._aliases['HEADERS']:
288-
setattr(self, envar_name, SEARCH_PATH_HEADER_DIRS)
288+
for envar_name in self._aliases.get(MODULE_LOAD_ENV_HEADERS, []):
289+
setattr(self, envar_name, SEARCH_PATH_HEADER_DIRS)
289290

290291
def __setattr__(self, name, value):
291292
"""

easybuild/tools/options.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,7 @@ def config_options(self):
618618
'module-naming-scheme': ("Module naming scheme to use", None, 'store', DEFAULT_MNS),
619619
'module-search-path-headers': ("Environment variable set by modules on load with search paths "
620620
"to header files", 'choice', 'store', DEFAULT_MOD_SEARCH_PATH_HEADERS,
621-
[*MOD_SEARCH_PATH_HEADERS]),
621+
sorted(MOD_SEARCH_PATH_HEADERS.keys())),
622622
'module-syntax': ("Syntax to be used for module files", 'choice', 'store', DEFAULT_MODULE_SYNTAX,
623623
sorted(avail_module_generators().keys())),
624624
'moduleclasses': (("Extend supported module classes "

test/framework/easyblock.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,6 @@ def test_make_module_req(self):
671671
def test_module_search_path_headers(self):
672672
"""Test functionality of module-search-path-headers option"""
673673
sp_headers_mode = {
674-
"none": [],
675674
"cpath": ["CPATH"],
676675
"include_paths": ["C_INCLUDE_PATH", "CPLUS_INCLUDE_PATH", "OBJC_INCLUDE_PATH"],
677676
}
@@ -687,7 +686,7 @@ def test_module_search_path_headers(self):
687686
self.writeEC()
688687

689688
for build_opt, sp_headers in sp_headers_mode.items():
690-
init_config(build_options={"module_search_path_headers": build_opt, "silent": True})
689+
update_build_option('module_search_path_headers', build_opt)
691690
eb = EasyBlock(EasyConfig(self.eb_file))
692691
eb.installdir = config.install_path()
693692
try:
@@ -729,7 +728,7 @@ def test_module_search_path_headers(self):
729728
pass
730729

731730
for build_opt in sp_headers_mode:
732-
init_config(build_options={"module_search_path_headers": build_opt, "silent": True})
731+
update_build_option('module_search_path_headers', build_opt)
733732
with eb.module_generator.start_module_creation():
734733
guess = eb.make_module_req()
735734
if not sp_headers:

0 commit comments

Comments
 (0)