builtin: reduce boilerplate when accessing package attributes
This commit is contained in:
parent
4bd9ff2ef0
commit
324d427292
@ -100,7 +100,7 @@ def cmake_py_shared(self):
|
|||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
try:
|
try:
|
||||||
self.spec["cxx"].package.standard_flag(language="cxx", standard="14")
|
self["cxx"].standard_flag(language="cxx", standard="14")
|
||||||
except UnsupportedCompilerFlag:
|
except UnsupportedCompilerFlag:
|
||||||
InstallError("clingo requires a C++14-compliant C++ compiler")
|
InstallError("clingo requires a C++14-compliant C++ compiler")
|
||||||
|
|
||||||
|
@ -80,14 +80,14 @@ def setup_run_environment(self, env):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if self.spec.dependencies(virtuals=("c",)):
|
if self.spec.dependencies(virtuals=("c",)):
|
||||||
env.set("MPICC", self.spec["c"].package.cc)
|
env.set("MPICC", self["c"].cc)
|
||||||
|
|
||||||
if self.spec.dependencies(virtuals=("cxx",)):
|
if self.spec.dependencies(virtuals=("cxx",)):
|
||||||
env.set("MPICXX", self.spec["cxx"].package.cxx)
|
env.set("MPICXX", self["cxx"].cxx)
|
||||||
|
|
||||||
if self.spec.dependencies(virtuals=("fortran",)):
|
if self.spec.dependencies(virtuals=("fortran",)):
|
||||||
env.set("MPIFC", self.spec["fortran"].package.fc)
|
env.set("MPIFC", self["fortran"].fc)
|
||||||
env.set("MPIF77", self.spec["fortran"].package.fc)
|
env.set("MPIF77", self["fortran"].fc)
|
||||||
|
|
||||||
def setup_dependent_package(self, module, dependent_spec):
|
def setup_dependent_package(self, module, dependent_spec):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
|
@ -30,14 +30,14 @@ class CrayMvapich2(MpichEnvironmentModifications, Package):
|
|||||||
|
|
||||||
def setup_run_environment(self, env):
|
def setup_run_environment(self, env):
|
||||||
if self.spec.dependencies(virtuals=("c",)):
|
if self.spec.dependencies(virtuals=("c",)):
|
||||||
env.set("MPICC", self.spec["c"].package.cc)
|
env.set("MPICC", self["c"].cc)
|
||||||
|
|
||||||
if self.spec.dependencies(virtuals=("cxx",)):
|
if self.spec.dependencies(virtuals=("cxx",)):
|
||||||
env.set("MPICXX", self.spec["cxx"].package.cxx)
|
env.set("MPICXX", self["cxx"].cxx)
|
||||||
|
|
||||||
if self.spec.dependencies(virtuals=("fortran",)):
|
if self.spec.dependencies(virtuals=("fortran",)):
|
||||||
env.set("MPIFC", self.spec["fortran"].package.fc)
|
env.set("MPIFC", self["fortran"].fc)
|
||||||
env.set("MPIF77", self.spec["fortran"].package.fc)
|
env.set("MPIF77", self["fortran"].fc)
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
raise InstallError(
|
raise InstallError(
|
||||||
|
@ -76,7 +76,7 @@ def install(self, spec, prefix):
|
|||||||
|
|
||||||
def _get_libraries_macho(self):
|
def _get_libraries_macho(self):
|
||||||
"""Same as _get_libraries_elf but for Mach-O binaries"""
|
"""Same as _get_libraries_elf but for Mach-O binaries"""
|
||||||
cc = Executable(self.spec["gcc"].package.cc)
|
cc = Executable(self["gcc"].cc)
|
||||||
path_and_install_name = []
|
path_and_install_name = []
|
||||||
|
|
||||||
for name in self.LIBRARIES:
|
for name in self.LIBRARIES:
|
||||||
|
@ -98,8 +98,8 @@ def determine_version(cls, exe):
|
|||||||
def setup_build_environment(self, env):
|
def setup_build_environment(self, env):
|
||||||
# We need to set CC/CXX_FOR_TARGET, otherwise cgo will use the
|
# We need to set CC/CXX_FOR_TARGET, otherwise cgo will use the
|
||||||
# internal Spack wrappers and fail.
|
# internal Spack wrappers and fail.
|
||||||
env.set("CC_FOR_TARGET", self.spec["c"].package.cc)
|
env.set("CC_FOR_TARGET", self["c"].cc)
|
||||||
env.set("CXX_FOR_TARGET", self.spec["cxx"].package.cxx)
|
env.set("CXX_FOR_TARGET", self["cxx"].cxx)
|
||||||
env.set("GOMAXPROCS", make_jobs)
|
env.set("GOMAXPROCS", make_jobs)
|
||||||
|
|
||||||
def build(self, spec, prefix):
|
def build(self, spec, prefix):
|
||||||
|
@ -88,7 +88,7 @@ def setup_build_environment(self, env):
|
|||||||
# devenv is needed to convert ancient MSbuild project to modern
|
# devenv is needed to convert ancient MSbuild project to modern
|
||||||
# msbuild project so MSBuild versions older than 2010 can build this
|
# msbuild project so MSBuild versions older than 2010 can build this
|
||||||
# project
|
# project
|
||||||
devenv_path = os.path.join(self.spec["msvc"].package.vs_root, "Common7", "IDE")
|
devenv_path = os.path.join(self.pkg["msvc"].vs_root, "Common7", "IDE")
|
||||||
env.prepend_path("PATH", devenv_path)
|
env.prepend_path("PATH", devenv_path)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -110,7 +110,7 @@ def url_for_version(self, version):
|
|||||||
|
|
||||||
def flag_handler(self, name, flags):
|
def flag_handler(self, name, flags):
|
||||||
if name == "cflags" and self.spec.satisfies("+pic"):
|
if name == "cflags" and self.spec.satisfies("+pic"):
|
||||||
flags.append(self.spec["c"].package.pic_flag)
|
flags.append(self["c"].pic_flag)
|
||||||
flags.append("-DPIC")
|
flags.append("-DPIC")
|
||||||
return (flags, None, None)
|
return (flags, None, None)
|
||||||
|
|
||||||
|
@ -106,9 +106,9 @@ def setup_build_environment(self, env):
|
|||||||
|
|
||||||
def flag_handler(self, name, flags):
|
def flag_handler(self, name, flags):
|
||||||
if name == "cflags":
|
if name == "cflags":
|
||||||
flags.append(self.spec["c"].package.pic_flag)
|
flags.append(self["c"].pic_flag)
|
||||||
elif name == "cxxflags":
|
elif name == "cxxflags":
|
||||||
flags.append(self.spec["cxx"].package.pic_flag)
|
flags.append(self["cxx"].pic_flag)
|
||||||
|
|
||||||
# ncurses@:6.0 fails in definition of macro 'mouse_trafo' without -P
|
# ncurses@:6.0 fails in definition of macro 'mouse_trafo' without -P
|
||||||
if self.spec.satisfies("@:6.0 %gcc@5.0:"):
|
if self.spec.satisfies("@:6.0 %gcc@5.0:"):
|
||||||
@ -118,7 +118,7 @@ def flag_handler(self, name, flags):
|
|||||||
# ncurses@:6.0 uses dynamic exception specifications not allowed in c++17
|
# ncurses@:6.0 uses dynamic exception specifications not allowed in c++17
|
||||||
if self.spec.satisfies("@:5"):
|
if self.spec.satisfies("@:5"):
|
||||||
if name == "cxxflags":
|
if name == "cxxflags":
|
||||||
flags.append(self.spec["cxx"].package.standard_flag(language="cxx", standard="14"))
|
flags.append(self["cxx"].standard_flag(language="cxx", standard="14"))
|
||||||
|
|
||||||
return (flags, None, None)
|
return (flags, None, None)
|
||||||
|
|
||||||
|
@ -530,11 +530,11 @@ def install(self, spec, prefix):
|
|||||||
|
|
||||||
makelocalrc_args = [
|
makelocalrc_args = [
|
||||||
"-gcc",
|
"-gcc",
|
||||||
spec["gcc"].package.cc,
|
self["gcc"].cc,
|
||||||
"-gpp",
|
"-gpp",
|
||||||
spec["gcc"].package.cxx,
|
self["gcc"].cxx,
|
||||||
"-g77",
|
"-g77",
|
||||||
spec["gcc"].package.fortran,
|
self["gcc"].fortran,
|
||||||
"-x",
|
"-x",
|
||||||
compilers_bin,
|
compilers_bin,
|
||||||
]
|
]
|
||||||
|
@ -154,7 +154,7 @@ def install(self, spec, prefix):
|
|||||||
if spec.satisfies("@1.0"):
|
if spec.satisfies("@1.0"):
|
||||||
options.append("no-krb5")
|
options.append("no-krb5")
|
||||||
# clang does not support the .arch directive in assembly files.
|
# clang does not support the .arch directive in assembly files.
|
||||||
if "clang" in self.spec["c"].package.cc and spec.target.family == "aarch64":
|
if "clang" in self["c"].cc and spec.target.family == "aarch64":
|
||||||
options.append("no-asm")
|
options.append("no-asm")
|
||||||
elif "%nvhpc" in spec:
|
elif "%nvhpc" in spec:
|
||||||
# Last tested on nvidia@22.3 for x86_64:
|
# Last tested on nvidia@22.3 for x86_64:
|
||||||
|
@ -337,7 +337,7 @@ def do_stage(self, mirror_only=False):
|
|||||||
def nmake_arguments(self):
|
def nmake_arguments(self):
|
||||||
args = []
|
args = []
|
||||||
if self.spec.satisfies("%msvc"):
|
if self.spec.satisfies("%msvc"):
|
||||||
args.append("CCTYPE=%s" % self.spec["msvc"].package.short_msvc_version)
|
args.append("CCTYPE=%s" % self["msvc"].short_msvc_version)
|
||||||
else:
|
else:
|
||||||
raise RuntimeError("Perl unsupported for non MSVC compilers on Windows")
|
raise RuntimeError("Perl unsupported for non MSVC compilers on Windows")
|
||||||
args.append("INST_TOP=%s" % windows_sfn(self.prefix.replace("/", "\\")))
|
args.append("INST_TOP=%s" % windows_sfn(self.prefix.replace("/", "\\")))
|
||||||
@ -384,7 +384,7 @@ def configure_args(self):
|
|||||||
# https://github.com/spack/spack/pull/3081 and
|
# https://github.com/spack/spack/pull/3081 and
|
||||||
# https://github.com/spack/spack/pull/4416
|
# https://github.com/spack/spack/pull/4416
|
||||||
if spec.satisfies("%intel"):
|
if spec.satisfies("%intel"):
|
||||||
config_args.append("-Accflags={0}".format(self.spec["cc"].package.pic_flag))
|
config_args.append("-Accflags={0}".format(self["c"].pic_flag))
|
||||||
|
|
||||||
if "+shared" in spec:
|
if "+shared" in spec:
|
||||||
config_args.append("-Duseshrplib")
|
config_args.append("-Duseshrplib")
|
||||||
@ -546,7 +546,7 @@ def filter_config_dot_pm(self):
|
|||||||
"-MModule::Loaded", "-MConfig", "-e", "print is_loaded(Config)", output=str
|
"-MModule::Loaded", "-MConfig", "-e", "print is_loaded(Config)", output=str
|
||||||
)
|
)
|
||||||
|
|
||||||
c_compiler = self.spec["c"].package.cc
|
c_compiler = self["c"].cc
|
||||||
with self.make_briefly_writable(config_dot_pm):
|
with self.make_briefly_writable(config_dot_pm):
|
||||||
match = "cc *=>.*"
|
match = "cc *=>.*"
|
||||||
substitute = "cc => '{cc}',".format(cc=c_compiler)
|
substitute = "cc => '{cc}',".format(cc=c_compiler)
|
||||||
|
@ -691,7 +691,7 @@ def configure_args(self):
|
|||||||
config_args.append("--without-ensurepip")
|
config_args.append("--without-ensurepip")
|
||||||
|
|
||||||
if "+pic" in spec:
|
if "+pic" in spec:
|
||||||
cflags.append(self.spec["c"].package.pic_flag)
|
cflags.append(self["c"].pic_flag)
|
||||||
|
|
||||||
if "+ssl" in spec:
|
if "+ssl" in spec:
|
||||||
config_args.append("--with-openssl={0}".format(spec["openssl"].prefix))
|
config_args.append("--with-openssl={0}".format(spec["openssl"].prefix))
|
||||||
@ -809,9 +809,9 @@ def filter_compilers(self):
|
|||||||
|
|
||||||
filenames = [self.get_sysconfigdata_name(), self.config_vars["makefile_filename"]]
|
filenames = [self.get_sysconfigdata_name(), self.config_vars["makefile_filename"]]
|
||||||
|
|
||||||
filter_file(spack_cc, self.spec["c"].package.cc, *filenames, **kwargs)
|
filter_file(spack_cc, self["c"].cc, *filenames, **kwargs)
|
||||||
if spack_cxx:
|
if spack_cxx:
|
||||||
filter_file(spack_cxx, self.spec["cxx"].package.cxx, *filenames, **kwargs)
|
filter_file(spack_cxx, self["cxx"].cxx, *filenames, **kwargs)
|
||||||
|
|
||||||
@run_after("install")
|
@run_after("install")
|
||||||
def symlink(self):
|
def symlink(self):
|
||||||
|
@ -71,7 +71,7 @@ def libs(self):
|
|||||||
|
|
||||||
def flag_handler(self, name, flags):
|
def flag_handler(self, name, flags):
|
||||||
if name == "cflags" and self.spec.satisfies("+pic build_system=autotools"):
|
if name == "cflags" and self.spec.satisfies("+pic build_system=autotools"):
|
||||||
flags.append(self.spec["c"].package.pic_flag)
|
flags.append(self["c"].pic_flag)
|
||||||
return (flags, None, None)
|
return (flags, None, None)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user