compiler-wrapper: decouple the package from Spack configuration
This commit is contained in:
parent
11065ff318
commit
8ccf626306
@ -91,6 +91,7 @@
|
||||
from spack.util.environment import (
|
||||
SYSTEM_DIR_CASE_ENTRY,
|
||||
EnvironmentModifications,
|
||||
ModificationList,
|
||||
PrependPath,
|
||||
env_flag,
|
||||
filter_system_paths,
|
||||
@ -761,10 +762,23 @@ def setup_package(pkg, dirty, context: Context = Context.BUILD):
|
||||
tty.debug("setup_package: collected all modifications from dependencies")
|
||||
|
||||
tty.debug("setup_package: adding compiler wrappers paths")
|
||||
for x in env_mods.group_by_name()["SPACK_ENV_PATH"]:
|
||||
env_by_name = env_mods.group_by_name()
|
||||
for x in env_by_name["SPACK_ENV_PATH"]:
|
||||
assert isinstance(x, PrependPath), "unexpected setting used for SPACK_ENV_PATH"
|
||||
env_mods.prepend_path("PATH", x.value)
|
||||
|
||||
# Check whether we want to force RPATH or RUNPATH
|
||||
enable_var_name, disable_var_name = "SPACK_ENABLE_NEW_DTAGS", "SPACK_DISABLE_NEW_DTAGS"
|
||||
if enable_var_name in env_by_name and disable_var_name in env_by_name:
|
||||
enable_new_dtags = _extract_dtags_arg(env_by_name, var_name=enable_var_name)
|
||||
disable_new_dtags = _extract_dtags_arg(env_by_name, var_name=disable_var_name)
|
||||
if spack.config.CONFIG.get("config:shared_linking:type") == "rpath":
|
||||
env_mods.set("SPACK_DTAGS_TO_STRIP", enable_new_dtags)
|
||||
env_mods.set("SPACK_DTAGS_TO_ADD", disable_new_dtags)
|
||||
else:
|
||||
env_mods.set("SPACK_DTAGS_TO_STRIP", disable_new_dtags)
|
||||
env_mods.set("SPACK_DTAGS_TO_ADD", enable_new_dtags)
|
||||
|
||||
if context == Context.TEST:
|
||||
env_mods.prepend_path("PATH", ".")
|
||||
elif context == Context.BUILD and not dirty and not env_mods.is_unset("CPATH"):
|
||||
@ -789,6 +803,14 @@ def setup_package(pkg, dirty, context: Context = Context.BUILD):
|
||||
return env_base
|
||||
|
||||
|
||||
def _extract_dtags_arg(env_by_name: Dict[str, ModificationList], *, var_name: str) -> str:
|
||||
try:
|
||||
enable_new_dtags = env_by_name[var_name][0].value # type: ignore[union-attr]
|
||||
except (KeyError, IndexError, AttributeError):
|
||||
enable_new_dtags = ""
|
||||
return enable_new_dtags
|
||||
|
||||
|
||||
class EnvironmentVisitor:
|
||||
def __init__(self, *roots: spack.spec.Spec, context: Context):
|
||||
# For the roots (well, marked specs) we follow different edges
|
||||
|
@ -11,7 +11,6 @@
|
||||
from llnl.util import lang
|
||||
|
||||
import spack.compilers.libraries
|
||||
import spack.config
|
||||
import spack.package_base
|
||||
from spack.package import *
|
||||
|
||||
@ -213,13 +212,8 @@ def setup_dependent_build_environment(self, env, dependent_spec):
|
||||
implicit_rpaths = lang.dedupe(implicit_rpaths)
|
||||
env.set("SPACK_COMPILER_IMPLICIT_RPATHS", ":".join(implicit_rpaths))
|
||||
|
||||
# Check whether we want to force RPATH or RUNPATH
|
||||
if spack.config.CONFIG.get("config:shared_linking:type") == "rpath":
|
||||
env.set("SPACK_DTAGS_TO_STRIP", self.enable_new_dtags)
|
||||
env.set("SPACK_DTAGS_TO_ADD", self.disable_new_dtags)
|
||||
else:
|
||||
env.set("SPACK_DTAGS_TO_STRIP", self.disable_new_dtags)
|
||||
env.set("SPACK_DTAGS_TO_ADD", self.enable_new_dtags)
|
||||
env.set("SPACK_ENABLE_NEW_DTAGS", self.enable_new_dtags)
|
||||
env.set("SPACK_DISABLE_NEW_DTAGS", self.disable_new_dtags)
|
||||
|
||||
for item in env_paths:
|
||||
env.prepend_path("SPACK_ENV_PATH", item)
|
||||
|
Loading…
Reference in New Issue
Block a user