diff options
author | Harmen Stoppels <me@harmenstoppels.nl> | 2024-11-15 09:13:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-15 09:13:10 +0100 |
commit | b7993317ea8e9319d1b02a901fbfe58447faf910 (patch) | |
tree | ac4e1d68f0746d0f559b4c87e299f72ce45f8a3b /var | |
parent | 66622ec4d0903123de65974516ba7e5480206be1 (diff) | |
download | spack-b7993317ea8e9319d1b02a901fbfe58447faf910.tar.gz spack-b7993317ea8e9319d1b02a901fbfe58447faf910.tar.bz2 spack-b7993317ea8e9319d1b02a901fbfe58447faf910.tar.xz spack-b7993317ea8e9319d1b02a901fbfe58447faf910.zip |
Improve type hints for package API (#47576)
by disentangling `package_base`, `builder` and `directives`.
Diffstat (limited to 'var')
42 files changed, 80 insertions, 96 deletions
diff --git a/var/spack/repos/builder.test/packages/builder-and-mixins/package.py b/var/spack/repos/builder.test/packages/builder-and-mixins/package.py index 2e12b0e806..354f1bcd1a 100644 --- a/var/spack/repos/builder.test/packages/builder-and-mixins/package.py +++ b/var/spack/repos/builder.test/packages/builder-and-mixins/package.py @@ -2,7 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import spack.builder +import spack.phase_callbacks from spack.build_systems import generic from spack.package import * @@ -17,7 +17,7 @@ class BuilderAndMixins(Package): version("1.0", md5="0123456789abcdef0123456789abcdef") -class BuilderMixin(metaclass=spack.builder.PhaseCallbacksMeta): +class BuilderMixin(metaclass=spack.phase_callbacks.PhaseCallbacksMeta): @run_before("install") def before_install(self): pass diff --git a/var/spack/repos/builtin.mock/packages/py-test-callback/package.py b/var/spack/repos/builtin.mock/packages/py-test-callback/package.py index b152490895..4abad2f679 100644 --- a/var/spack/repos/builtin.mock/packages/py-test-callback/package.py +++ b/var/spack/repos/builtin.mock/packages/py-test-callback/package.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import spack.pkg.builtin.mock.python as mp -from spack.build_systems._checks import BaseBuilder, execute_install_time_tests +from spack.build_systems._checks import BuilderWithDefaults, execute_install_time_tests from spack.package import * @@ -31,7 +31,7 @@ class PyTestCallback(mp.Python): @spack.builder.builder("testcallback") -class MyBuilder(BaseBuilder): +class MyBuilder(BuilderWithDefaults): phases = ("install",) #: Callback names for install-time test @@ -40,7 +40,7 @@ class MyBuilder(BaseBuilder): def install(self, pkg, spec, prefix): pkg.install(spec, prefix) - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) def test_callback(self): self.pkg.test_callback() diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index dabe5554a3..b3a966110c 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -6,6 +6,7 @@ import os import tempfile +from spack.build_systems.cmake import CMakeBuilder from spack.package import * @@ -313,11 +314,11 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): # hip support if spec.satisfies("+cuda"): - args.append(self.builder.define_cuda_architectures(self)) + args.append(CMakeBuilder.define_cuda_architectures(self)) # hip support if spec.satisfies("+rocm"): - args.append(self.builder.define_hip_architectures(self)) + args.append(CMakeBuilder.define_hip_architectures(self)) return args diff --git a/var/spack/repos/builtin/packages/assimp/package.py b/var/spack/repos/builtin/packages/assimp/package.py index 2e51f75e53..ec8f239e4c 100644 --- a/var/spack/repos/builtin/packages/assimp/package.py +++ b/var/spack/repos/builtin/packages/assimp/package.py @@ -70,7 +70,7 @@ class Assimp(CMakePackage): return (None, None, flags) def check(self): - unit = Executable(join_path(self.builder.build_directory, "bin", "unit")) + unit = Executable(join_path(self.build_directory, "bin", "unit")) skipped_tests = [ "AssimpAPITest_aiMatrix3x3.aiMatrix3FromToTest", "AssimpAPITest_aiMatrix4x4.aiMatrix4FromToTest", diff --git a/var/spack/repos/builtin/packages/bacio/package.py b/var/spack/repos/builtin/packages/bacio/package.py index 676dab9849..18a80fdcd3 100644 --- a/var/spack/repos/builtin/packages/bacio/package.py +++ b/var/spack/repos/builtin/packages/bacio/package.py @@ -39,5 +39,5 @@ class Bacio(CMakePackage): filter_file(".+", "2.4.1", "VERSION") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/blaspp/package.py b/var/spack/repos/builtin/packages/blaspp/package.py index 2bdaf62c74..9974e1d397 100644 --- a/var/spack/repos/builtin/packages/blaspp/package.py +++ b/var/spack/repos/builtin/packages/blaspp/package.py @@ -117,8 +117,8 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage): def check(self): # If the tester fails to build, ensure that the check() fails. - if os.path.isfile(join_path(self.builder.build_directory, "test", "tester")): - with working_dir(self.builder.build_directory): + if os.path.isfile(join_path(self.build_directory, "test", "tester")): + with working_dir(self.build_directory): make("check") else: raise Exception("The tester was not built!") diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index dc7317c6bc..ecc493a3b0 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -823,18 +823,6 @@ class Boost(Package): def setup_run_environment(self, env): env.set("BOOST_ROOT", self.prefix) - def setup_dependent_package(self, module, dependent_spec): - # Disable find package's config mode for versions of Boost that - # didn't provide it. See https://github.com/spack/spack/issues/20169 - # and https://cmake.org/cmake/help/latest/module/FindBoost.html - if self.spec.satisfies("boost@:1.69.0") and dependent_spec.satisfies("build_system=cmake"): - args_fn = type(dependent_spec.package.builder).cmake_args - - def _cmake_args(self): - return ["-DBoost_NO_BOOST_CMAKE=ON"] + args_fn(self) - - type(dependent_spec.package.builder).cmake_args = _cmake_args - def setup_dependent_build_environment(self, env, dependent_spec): if "+context" in self.spec and "context-impl" in self.spec.variants: context_impl = self.spec.variants["context-impl"].value diff --git a/var/spack/repos/builtin/packages/bufr/package.py b/var/spack/repos/builtin/packages/bufr/package.py index be3431fe6a..1d74b9aaf6 100644 --- a/var/spack/repos/builtin/packages/bufr/package.py +++ b/var/spack/repos/builtin/packages/bufr/package.py @@ -129,5 +129,5 @@ class Bufr(CMakePackage): self._setup_bufr_environment(env, suffix) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/g2/package.py b/var/spack/repos/builtin/packages/g2/package.py index 3f64de93c2..b8d4a9be51 100644 --- a/var/spack/repos/builtin/packages/g2/package.py +++ b/var/spack/repos/builtin/packages/g2/package.py @@ -98,5 +98,5 @@ class G2(CMakePackage): env.set("G2_INC" + suffix, join_path(self.prefix, "include_" + suffix)) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/g2c/package.py b/var/spack/repos/builtin/packages/g2c/package.py index d4cb7c74a2..0554ccf7b8 100644 --- a/var/spack/repos/builtin/packages/g2c/package.py +++ b/var/spack/repos/builtin/packages/g2c/package.py @@ -94,5 +94,5 @@ class G2c(CMakePackage): env.set("G2C_INC", join_path(self.prefix, "include")) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/g2tmpl/package.py b/var/spack/repos/builtin/packages/g2tmpl/package.py index b5ad734b01..b76804e873 100644 --- a/var/spack/repos/builtin/packages/g2tmpl/package.py +++ b/var/spack/repos/builtin/packages/g2tmpl/package.py @@ -38,5 +38,5 @@ class G2tmpl(CMakePackage): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/gfsio/package.py b/var/spack/repos/builtin/packages/gfsio/package.py index e478a8b8ed..590f70dac5 100644 --- a/var/spack/repos/builtin/packages/gfsio/package.py +++ b/var/spack/repos/builtin/packages/gfsio/package.py @@ -46,5 +46,5 @@ class Gfsio(CMakePackage): return (None, None, flags) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index efdcfa90c1..057d180dd6 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -208,7 +208,7 @@ class Glib(MesonPackage, AutotoolsPackage): return find_libraries(["libglib*"], root=self.prefix, recursive=True) -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): @property def dtrace_copy_path(self): return join_path(self.stage.source_path, "dtrace-copy") @@ -288,7 +288,7 @@ class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): filter_file(pattern, repl, myfile, backup=False) -class MesonBuilder(BaseBuilder, spack.build_systems.meson.MesonBuilder): +class MesonBuilder(AnyBuilder, spack.build_systems.meson.MesonBuilder): def meson_args(self): args = [] if self.spec.satisfies("@2.63.5:"): @@ -330,7 +330,7 @@ class MesonBuilder(BaseBuilder, spack.build_systems.meson.MesonBuilder): return args -class AutotoolsBuilder(BaseBuilder, spack.build_systems.autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, spack.build_systems.autotools.AutotoolsBuilder): def configure_args(self): args = [] if self.spec.satisfies("+libmount"): diff --git a/var/spack/repos/builtin/packages/grib-util/package.py b/var/spack/repos/builtin/packages/grib-util/package.py index b8e2aaee37..b44e86134e 100644 --- a/var/spack/repos/builtin/packages/grib-util/package.py +++ b/var/spack/repos/builtin/packages/grib-util/package.py @@ -56,5 +56,5 @@ class GribUtil(CMakePackage): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/hipblas/package.py b/var/spack/repos/builtin/packages/hipblas/package.py index 1e928b27d5..e4b0ccc8d5 100644 --- a/var/spack/repos/builtin/packages/hipblas/package.py +++ b/var/spack/repos/builtin/packages/hipblas/package.py @@ -145,7 +145,5 @@ class Hipblas(CMakePackage, CudaPackage, ROCmPackage): return args def check(self): - exe = Executable( - join_path(self.builder.build_directory, "clients", "staging", "hipblas-test") - ) + exe = Executable(join_path(self.build_directory, "clients", "staging", "hipblas-test")) exe("--gtest_filter=-*known_bug*") diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 9769f44ebb..5df642cd90 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -119,7 +119,7 @@ class Hipsolver(CMakePackage, CudaPackage, ROCmPackage): patch("0001-suite-sparse-include-path-6.1.1.patch", when="@6.1.1:") def check(self): - exe = join_path(self.builder.build_directory, "clients", "staging", "hipsolver-test") + exe = join_path(self.build_directory, "clients", "staging", "hipsolver-test") exe = which(exe) exe(["--gtest_filter=-*known_bug*"]) diff --git a/var/spack/repos/builtin/packages/ip/package.py b/var/spack/repos/builtin/packages/ip/package.py index 5a55f37b81..e87a5fb6f7 100644 --- a/var/spack/repos/builtin/packages/ip/package.py +++ b/var/spack/repos/builtin/packages/ip/package.py @@ -121,5 +121,5 @@ class Ip(CMakePackage): @when("@4:") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/landsfcutil/package.py b/var/spack/repos/builtin/packages/landsfcutil/package.py index 9027d4eeda..c137cb2e90 100644 --- a/var/spack/repos/builtin/packages/landsfcutil/package.py +++ b/var/spack/repos/builtin/packages/landsfcutil/package.py @@ -48,5 +48,5 @@ class Landsfcutil(CMakePackage): return (None, None, flags) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/lapackpp/package.py b/var/spack/repos/builtin/packages/lapackpp/package.py index a975792555..7e3577aa28 100644 --- a/var/spack/repos/builtin/packages/lapackpp/package.py +++ b/var/spack/repos/builtin/packages/lapackpp/package.py @@ -129,8 +129,8 @@ class Lapackpp(CMakePackage, CudaPackage, ROCmPackage): def check(self): # If the tester fails to build, ensure that the check() fails. - if os.path.isfile(join_path(self.builder.build_directory, "test", "tester")): - with working_dir(self.builder.build_directory): + if os.path.isfile(join_path(self.build_directory, "test", "tester")): + with working_dir(self.build_directory): make("check") else: raise Exception("The tester was not built!") diff --git a/var/spack/repos/builtin/packages/lc-framework/package.py b/var/spack/repos/builtin/packages/lc-framework/package.py index 60ff03576b..0f9f1b1be2 100644 --- a/var/spack/repos/builtin/packages/lc-framework/package.py +++ b/var/spack/repos/builtin/packages/lc-framework/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.cmake import CMakeBuilder from spack.package import * @@ -45,6 +46,6 @@ class LcFramework(CMakePackage, CudaPackage): args = [self.define_from_variant("LC_BUILD_LIBPRESSIO_PLUGIN", "libpressio")] if self.spec.satisfies("+cuda"): args.append(self.define_from_variant("LC_BUILD_CUDA", "cuda")) - args.append(self.builder.define_cuda_architectures(self)) + args.append(CMakeBuilder.define_cuda_architectures(self)) return args diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 048debd658..8bd6a23b31 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -6,7 +6,6 @@ import os import llnl.util.filesystem as fs -import spack.builder from spack.build_systems import autotools, nmake from spack.package import * @@ -225,7 +224,7 @@ class Libxml2(AutotoolsPackage, NMakePackage): xmllint("--dtdvalid", dtd_path, data_dir.join("info.xml")) -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): @run_after("install") @on_package_attributes(run_tests=True) def import_module_test(self): @@ -234,7 +233,7 @@ class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): python("-c", "import libxml2") -class AutotoolsBuilder(BaseBuilder, autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, autotools.AutotoolsBuilder): def configure_args(self): spec = self.spec @@ -260,7 +259,7 @@ class AutotoolsBuilder(BaseBuilder, autotools.AutotoolsBuilder): return args -class NMakeBuilder(BaseBuilder, nmake.NMakeBuilder): +class NMakeBuilder(AnyBuilder, nmake.NMakeBuilder): phases = ("configure", "build", "install") @property diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index 9f31c3be66..4fa64a712e 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -423,7 +423,7 @@ class Mapl(CMakePackage): @run_after("build") @on_package_attributes(run_tests=True) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): # The test suite contains a lot of tests. We select only those # that are cheap. Note this requires MPI and 6 processes ctest("--output-on-failure", "-L", "ESSENTIAL") diff --git a/var/spack/repos/builtin/packages/mercury/package.py b/var/spack/repos/builtin/packages/mercury/package.py index 9a533cde8c..bf4de22b88 100644 --- a/var/spack/repos/builtin/packages/mercury/package.py +++ b/var/spack/repos/builtin/packages/mercury/package.py @@ -160,5 +160,5 @@ class Mercury(CMakePackage): def check(self): """Unit tests fail when run in parallel.""" - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test", parallel=False) diff --git a/var/spack/repos/builtin/packages/ncio/package.py b/var/spack/repos/builtin/packages/ncio/package.py index d710a81923..665742c633 100644 --- a/var/spack/repos/builtin/packages/ncio/package.py +++ b/var/spack/repos/builtin/packages/ncio/package.py @@ -36,5 +36,5 @@ class Ncio(CMakePackage): env.set("NCIO_LIBDIR", lib[0]) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/nemsio/package.py b/var/spack/repos/builtin/packages/nemsio/package.py index 0677376d15..20696a70f6 100644 --- a/var/spack/repos/builtin/packages/nemsio/package.py +++ b/var/spack/repos/builtin/packages/nemsio/package.py @@ -48,5 +48,5 @@ class Nemsio(CMakePackage): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/nemsiogfs/package.py b/var/spack/repos/builtin/packages/nemsiogfs/package.py index e38f5a0adf..21bb43c2ba 100644 --- a/var/spack/repos/builtin/packages/nemsiogfs/package.py +++ b/var/spack/repos/builtin/packages/nemsiogfs/package.py @@ -26,5 +26,5 @@ class Nemsiogfs(CMakePackage): depends_on("nemsio") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index 986fbfe749..d2d05a29d6 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -9,7 +9,6 @@ import sys from llnl.util.lang import dedupe -import spack.builder from spack.build_systems import autotools, cmake from spack.package import * from spack.util.environment import filter_system_paths @@ -291,7 +290,7 @@ class NetcdfC(CMakePackage, AutotoolsPackage): env.append_path("HDF5_PLUGIN_PATH", self.prefix.plugins) def flag_handler(self, name, flags): - if self.builder.build_system == "autotools": + if self.spec.satisfies("build_system=autotools"): if name == "cflags": if "+pic" in self.spec: flags.append(self.compiler.cc_pic_flag) @@ -305,7 +304,7 @@ class NetcdfC(CMakePackage, AutotoolsPackage): return find_libraries("libnetcdf", root=self.prefix, shared=shared, recursive=True) -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): def setup_dependent_build_environment(self, env, dependent_spec): # Some packages, e.g. ncview, refuse to build if the compiler path returned by nc-config # differs from the path to the compiler that the package should be built with. Therefore, @@ -329,7 +328,7 @@ class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): filter_compiler_wrappers("nc-config", relative_root="bin") -class CMakeBuilder(BaseBuilder, cmake.CMakeBuilder): +class CMakeBuilder(AnyBuilder, cmake.CMakeBuilder): def cmake_args(self): base_cmake_args = [ self.define_from_variant("BUILD_SHARED_LIBS", "shared"), @@ -376,7 +375,7 @@ class CMakeBuilder(BaseBuilder, cmake.CMakeBuilder): filter_file(f"hdf5_hl-{config}", "hdf5_hl", *files, ignore_absent=True) -class AutotoolsBuilder(BaseBuilder, autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, autotools.AutotoolsBuilder): @property def force_autoreconf(self): return any(self.spec.satisfies(s) for s in self.pkg._force_autoreconf_when) diff --git a/var/spack/repos/builtin/packages/nimrod-aai/package.py b/var/spack/repos/builtin/packages/nimrod-aai/package.py index 0b24858ef8..2bfc608861 100644 --- a/var/spack/repos/builtin/packages/nimrod-aai/package.py +++ b/var/spack/repos/builtin/packages/nimrod-aai/package.py @@ -69,5 +69,5 @@ class NimrodAai(CMakePackage): @run_after("build") @on_package_attributes(run_tests=True) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): ctest("--output-on-failure") diff --git a/var/spack/repos/builtin/packages/prod-util/package.py b/var/spack/repos/builtin/packages/prod-util/package.py index e7c5b37485..0fe46740f1 100644 --- a/var/spack/repos/builtin/packages/prod-util/package.py +++ b/var/spack/repos/builtin/packages/prod-util/package.py @@ -34,5 +34,5 @@ class ProdUtil(CMakePackage): depends_on("w3emc", when="@2:") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py index d9ed3ef11d..17d7da99ec 100644 --- a/var/spack/repos/builtin/packages/proj/package.py +++ b/var/spack/repos/builtin/packages/proj/package.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import spack.builder from spack.build_systems import autotools, cmake from spack.package import * @@ -145,7 +144,7 @@ class Proj(CMakePackage, AutotoolsPackage): env.set("PROJ_LIB", self.prefix.share.proj) -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): def setup_build_environment(self, env): env.set("PROJ_LIB", join_path(self.pkg.stage.source_path, "nad")) @@ -154,7 +153,7 @@ class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): install_tree(join_path("share", "proj"), self.prefix.share.proj) -class CMakeBuilder(BaseBuilder, cmake.CMakeBuilder): +class CMakeBuilder(AnyBuilder, cmake.CMakeBuilder): def cmake_args(self): shared_arg = "BUILD_SHARED_LIBS" if self.spec.satisfies("@7:") else "BUILD_LIBPROJ_SHARED" args = [ @@ -177,7 +176,7 @@ class CMakeBuilder(BaseBuilder, cmake.CMakeBuilder): return args -class AutotoolsBuilder(BaseBuilder, autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, autotools.AutotoolsBuilder): def configure_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index 39f1d10862..1894598f76 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -448,7 +448,7 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): @property def build_relpath(self): """Relative path to the cmake build subdirectory.""" - return join_path("..", self.builder.build_dirname) + return join_path("..", self.build_dirname) @run_after("install") def setup_build_tests(self): diff --git a/var/spack/repos/builtin/packages/rocthrust/package.py b/var/spack/repos/builtin/packages/rocthrust/package.py index 93b017243f..29029e992a 100644 --- a/var/spack/repos/builtin/packages/rocthrust/package.py +++ b/var/spack/repos/builtin/packages/rocthrust/package.py @@ -77,7 +77,7 @@ class Rocthrust(CMakePackage): depends_on(f"rocm-cmake@{ver}:", type="build", when=f"@{ver}") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") def setup_build_environment(self, env): diff --git a/var/spack/repos/builtin/packages/sfcio/package.py b/var/spack/repos/builtin/packages/sfcio/package.py index afe4ed84c7..5ee64f7092 100644 --- a/var/spack/repos/builtin/packages/sfcio/package.py +++ b/var/spack/repos/builtin/packages/sfcio/package.py @@ -46,5 +46,5 @@ class Sfcio(CMakePackage): return (None, None, flags) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/sigio/package.py b/var/spack/repos/builtin/packages/sigio/package.py index 305f0e9958..b6d3020211 100644 --- a/var/spack/repos/builtin/packages/sigio/package.py +++ b/var/spack/repos/builtin/packages/sigio/package.py @@ -44,5 +44,5 @@ class Sigio(CMakePackage): return (None, None, flags) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/sp/package.py b/var/spack/repos/builtin/packages/sp/package.py index 5b3b7b4840..7b22e688b8 100644 --- a/var/spack/repos/builtin/packages/sp/package.py +++ b/var/spack/repos/builtin/packages/sp/package.py @@ -66,5 +66,5 @@ class Sp(CMakePackage): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/strumpack/package.py b/var/spack/repos/builtin/packages/strumpack/package.py index fc600ac42e..28cc57f26d 100644 --- a/var/spack/repos/builtin/packages/strumpack/package.py +++ b/var/spack/repos/builtin/packages/strumpack/package.py @@ -226,7 +226,7 @@ class Strumpack(CMakePackage, CudaPackage, ROCmPackage): ) with working_dir(test_dir): - opts = self.builder.std_cmake_args + self.cmake_args() + ["."] + opts = self.std_cmake_args + self.cmake_args() + ["."] cmake = self.spec["cmake"].command cmake(*opts) diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index 5be35b6bb0..41f939df5b 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -743,7 +743,7 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): @on_package_attributes(run_tests=True) def check_test_install(self): """Perform test_install on the build.""" - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test_install") @property diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py index 6a62ae9e17..92f7481bef 100644 --- a/var/spack/repos/builtin/packages/superlu/package.py +++ b/var/spack/repos/builtin/packages/superlu/package.py @@ -84,7 +84,7 @@ class Superlu(CMakePackage, Package): superlu() -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): @run_after("install") def setup_standalone_tests(self): """Set up and copy example source files after the package is installed @@ -138,7 +138,7 @@ class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): ] -class CMakeBuilder(BaseBuilder, spack.build_systems.cmake.CMakeBuilder): +class CMakeBuilder(AnyBuilder, spack.build_systems.cmake.CMakeBuilder): def cmake_args(self): if self.pkg.version > Version("5.2.1"): _blaslib_key = "enable_internal_blaslib" @@ -153,7 +153,7 @@ class CMakeBuilder(BaseBuilder, spack.build_systems.cmake.CMakeBuilder): return args -class GenericBuilder(BaseBuilder, spack.build_systems.generic.GenericBuilder): +class GenericBuilder(AnyBuilder, spack.build_systems.generic.GenericBuilder): def install(self, pkg, spec, prefix): """Use autotools before version 5""" # Define make.inc file diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index d95d80331e..a6b243d4bf 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -14,22 +14,20 @@ from spack.util.environment import is_system_path is_windows = sys.platform == "win32" -class TclHelper: - @staticmethod - def find_script_dir(spec): - # Put more-specific prefixes first - check_prefixes = [ - join_path(spec.prefix, "share", "tcl{0}".format(spec.package.version.up_to(2))), - spec.prefix, - ] - for prefix in check_prefixes: - result = find_first(prefix, "init.tcl") - if result: - return os.path.dirname(result) - raise RuntimeError("Cannot locate init.tcl") - - -class Tcl(AutotoolsPackage, NMakePackage, SourceforgePackage, TclHelper): +def find_script_dir(spec: Spec) -> str: + # Put more-specific prefixes first + check_prefixes = [ + join_path(spec.prefix, "share", "tcl{0}".format(spec.package.version.up_to(2))), + spec.prefix, + ] + for prefix in check_prefixes: + result = find_first(prefix, "init.tcl") + if result: + return os.path.dirname(result) + raise RuntimeError("Cannot locate init.tcl") + + +class Tcl(AutotoolsPackage, NMakePackage, SourceforgePackage): """Tcl (Tool Command Language) is a very powerful but easy to learn dynamic programming language, suitable for a very wide range of uses, including web and desktop applications, networking, administration, testing and many more. Open source @@ -105,7 +103,7 @@ class Tcl(AutotoolsPackage, NMakePackage, SourceforgePackage, TclHelper): """ # When using tkinter from within spack provided python+tkinter, # python will not be able to find Tcl unless TCL_LIBRARY is set. - env.set("TCL_LIBRARY", TclHelper.find_script_dir(self.spec)) + env.set("TCL_LIBRARY", find_script_dir(self.spec)) def setup_dependent_run_environment(self, env, dependent_spec): """Set TCLLIBPATH to include the tcl-shipped directory for @@ -123,7 +121,7 @@ class Tcl(AutotoolsPackage, NMakePackage, SourceforgePackage, TclHelper): env.prepend_path("TCLLIBPATH", tcllibpath, separator=" ") -class BaseBuilder(TclHelper, metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): @run_after("install") def symlink_tclsh(self): # There's some logic regarding this suffix in the build system @@ -151,7 +149,7 @@ class BaseBuilder(TclHelper, metaclass=spack.builder.PhaseCallbacksMeta): * https://wiki.tcl-lang.org/page/TCL_LIBRARY * https://wiki.tcl-lang.org/page/TCLLIBPATH """ - env.set("TCL_LIBRARY", TclHelper.find_script_dir(self.spec)) + env.set("TCL_LIBRARY", find_script_dir(self.spec)) # If we set TCLLIBPATH, we must also ensure that the corresponding # tcl is found in the build environment. This to prevent cases @@ -182,7 +180,7 @@ class BaseBuilder(TclHelper, metaclass=spack.builder.PhaseCallbacksMeta): env.prepend_path("TCLLIBPATH", tcllibpath, separator=" ") -class AutotoolsBuilder(BaseBuilder, spack.build_systems.autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, spack.build_systems.autotools.AutotoolsBuilder): configure_directory = "unix" def install(self, pkg, spec, prefix): @@ -215,7 +213,7 @@ class AutotoolsBuilder(BaseBuilder, spack.build_systems.autotools.AutotoolsBuild make("clean") -class NMakeBuilder(BaseBuilder, spack.build_systems.nmake.NMakeBuilder): +class NMakeBuilder(AnyBuilder, spack.build_systems.nmake.NMakeBuilder): build_targets = ["all"] install_targets = ["install"] diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index c5cef49c58..f896e2160e 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -7,6 +7,7 @@ import os import sys +from spack.build_systems.cmake import CMakeBuilder from spack.package import * @@ -249,7 +250,7 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): options.append("-DCMAKE_CUDA_HOST_COMPILER={0}".format(env["SPACK_CXX"])) if spec.satisfies("@1.9.0:") and spec.satisfies("^cmake@3.18:"): - options.append(self.builder.define_cuda_architectures(self)) + options.append(CMakeBuilder.define_cuda_architectures(self)) else: # VTKm_CUDA_Architecture only accepts a single CUDA arch @@ -269,7 +270,7 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): # hip support if "+rocm" in spec: - options.append(self.builder.define_hip_architectures(self)) + options.append(CMakeBuilder.define_hip_architectures(self)) return options diff --git a/var/spack/repos/builtin/packages/w3emc/package.py b/var/spack/repos/builtin/packages/w3emc/package.py index 82dbf7bf8c..7e0967bcde 100644 --- a/var/spack/repos/builtin/packages/w3emc/package.py +++ b/var/spack/repos/builtin/packages/w3emc/package.py @@ -95,5 +95,5 @@ class W3emc(CMakePackage): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/xsdk-examples/package.py b/var/spack/repos/builtin/packages/xsdk-examples/package.py index 66f1ee05a7..4cdb496b97 100644 --- a/var/spack/repos/builtin/packages/xsdk-examples/package.py +++ b/var/spack/repos/builtin/packages/xsdk-examples/package.py @@ -101,5 +101,5 @@ class XsdkExamples(CMakePackage, CudaPackage, ROCmPackage): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): ctest("--output-on-failure") |