diff options
-rw-r--r-- | lib/spack/spack/build_environment.py | 11 | ||||
-rw-r--r-- | lib/spack/spack/util/executable.py | 7 | ||||
-rw-r--r-- | var/spack/repos/builtin.mock/packages/cmake/package.py | 2 | ||||
-rw-r--r-- | var/spack/repos/builtin.mock/packages/ninja/package.py | 3 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/cmake/package.py | 6 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/gmake/package.py | 5 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/meson/package.py | 3 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/ninja/package.py | 8 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/scons/package.py | 3 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/sqlite/package.py | 1 |
10 files changed, 42 insertions, 7 deletions
diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 2d0fd2b5e6..5a780e4bd5 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -136,14 +136,16 @@ class MakeExecutable(Executable): -j). """ - def __init__(self, name, jobs): - super(MakeExecutable, self).__init__(name) + def __init__(self, name, jobs, **kwargs): + super(MakeExecutable, self).__init__(name, **kwargs) self.jobs = jobs def __call__(self, *args, **kwargs): """parallel, and jobs_env from kwargs are swallowed and used here; remaining arguments are passed through to the superclass. """ + # TODO: figure out how to check if we are using a jobserver-supporting ninja, + # the two split ninja packages make this very difficult right now parallel = should_set_parallel_jobs(jobserver_support=True) and kwargs.pop( "parallel", self.jobs > 1 ) @@ -533,7 +535,6 @@ def _set_variables_for_single_module(pkg, module): # TODO: make these build deps that can be installed if not found. m.make = MakeExecutable("make", jobs) m.gmake = MakeExecutable("gmake", jobs) - m.scons = MakeExecutable("scons", jobs) m.ninja = MakeExecutable("ninja", jobs) # easy shortcut to os.environ @@ -543,10 +544,6 @@ def _set_variables_for_single_module(pkg, module): # Don't use which for this; we want to find it in the current dir. m.configure = Executable("./configure") - m.meson = Executable("meson") - m.cmake = Executable("cmake") - m.ctest = MakeExecutable("ctest", jobs) - if sys.platform == "win32": m.nmake = Executable("nmake") # Standard CMake arguments diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index a046e26eaa..cd8ddef6de 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -291,6 +291,13 @@ def which_string(*args, **kwargs): win_candidates = [name + ext for ext in [".exe", ".bat"]] candidate_names = [name] if not win_candidates else win_candidates + if sys.platform == "win32": + new_path = path[:] + for p in path: + if os.path.basename(p) == "bin": + new_path.append(os.path.dirname(p)) + path = new_path + for candidate_name in candidate_names: if os.path.sep in candidate_name: exe = os.path.abspath(candidate_name) diff --git a/var/spack/repos/builtin.mock/packages/cmake/package.py b/var/spack/repos/builtin.mock/packages/cmake/package.py index 4fe890df1a..30c3647df2 100644 --- a/var/spack/repos/builtin.mock/packages/cmake/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake/package.py @@ -40,6 +40,8 @@ class Cmake(Package): def setup_dependent_package(self, module, dspec): spack_cc # Ensure spack module-scope variable is avaiable + module.cmake = Executable(self.spec.prefix.bin.cmake) + module.ctest = Executable(self.spec.prefix.bin.ctest) self.spec.from_cmake = "from_cmake" module.from_cmake = "from_cmake" diff --git a/var/spack/repos/builtin.mock/packages/ninja/package.py b/var/spack/repos/builtin.mock/packages/ninja/package.py index 864c58ea10..040e977c2e 100644 --- a/var/spack/repos/builtin.mock/packages/ninja/package.py +++ b/var/spack/repos/builtin.mock/packages/ninja/package.py @@ -13,3 +13,6 @@ class Ninja(Package): url = "https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz" version("1.10.2", sha256="ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed") + + def setup_dependent_package(self, module, dspec): + module.ninja = Executable(self.spec.prefix.bin.ninja) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index f6705a6376..9af718f121 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -399,6 +399,12 @@ class Cmake(Package): filter_file("mpc++_r)", "mpc++_r mpiFCC)", f, string=True) filter_file("mpifc)", "mpifc mpifrt)", f, string=True) + def setup_dependent_package(self, module, dependent_spec): + """Called before cmake packages's install() methods.""" + + module.cmake = Executable(self.spec.prefix.bin.cmake) + module.ctest = Executable(self.spec.prefix.bin.ctest) + def test(self): """Perform smoke tests on the installed package.""" spec_vers_str = "version {0}".format(self.spec.version) diff --git a/var/spack/repos/builtin/packages/gmake/package.py b/var/spack/repos/builtin/packages/gmake/package.py index fe408e9e4e..81a9ac0abe 100644 --- a/var/spack/repos/builtin/packages/gmake/package.py +++ b/var/spack/repos/builtin/packages/gmake/package.py @@ -5,6 +5,7 @@ import re +from spack.build_environment import MakeExecutable from spack.package import * @@ -71,3 +72,7 @@ class Gmake(AutotoolsPackage, GNUMirrorPackage): def symlink_gmake(self): with working_dir(self.prefix.bin): symlink("make", "gmake") + + def setup_dependent_package(self, module, dspec): + module.make = MakeExecutable(self.spec.prefix.bin.make, make_jobs) + module.gmake = MakeExecutable(self.spec.prefix.bin.gmake, make_jobs) diff --git a/var/spack/repos/builtin/packages/meson/package.py b/var/spack/repos/builtin/packages/meson/package.py index ee846ee013..cdd653c90e 100644 --- a/var/spack/repos/builtin/packages/meson/package.py +++ b/var/spack/repos/builtin/packages/meson/package.py @@ -81,3 +81,6 @@ class Meson(PythonPackage): # https://github.com/pybind/pybind11/issues/595 if self.spec.satisfies("platform=darwin"): env.set("STRIP", "strip -x") + + def setup_dependent_package(self, module, dspec): + module.meson = Executable(self.spec.prefix.bin.meson) diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index d68dd926ed..9ae951f0b3 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/package.py @@ -4,7 +4,9 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import sys +from spack.build_environment import MakeExecutable from spack.package import * +from spack.util.executable import which_string class Ninja(Package): @@ -69,3 +71,9 @@ class Ninja(Package): # instead of 'ninja'. Install both for uniformity. with working_dir(prefix.bin): symlink("ninja", "ninja-build") + + def setup_dependent_package(self, module, dspec): + name = "ninja" + module.ninja = MakeExecutable( + which_string(name, path=[self.spec.prefix.bin], required=True), module.make_jobs + ) diff --git a/var/spack/repos/builtin/packages/scons/package.py b/var/spack/repos/builtin/packages/scons/package.py index e0c9bee586..4e662275a2 100644 --- a/var/spack/repos/builtin/packages/scons/package.py +++ b/var/spack/repos/builtin/packages/scons/package.py @@ -57,3 +57,6 @@ class Scons(PythonPackage): def setup_dependent_run_environment(self, env, dependent_spec): env.prepend_path("PYTHONPATH", self.prefix.lib.scons) + + def setup_dependent_package(self, module, dspec): + module.scons = Executable(self.spec.prefix.bin.scons) diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index 2c58c5cfb1..5b56295582 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -17,6 +17,7 @@ class Sqlite(AutotoolsPackage): homepage = "https://www.sqlite.org" + version("3.39.2", sha256="852be8a6183a17ba47cee0bbff7400b7aa5affd283bf3beefc34fcd088a239de") version("3.38.5", sha256="5af07de982ba658fd91a03170c945f99c971f6955bc79df3266544373e39869c") version("3.38.3", sha256="61f2dd93a2e38c33468b7125967c3218bf9f4dd8365def6025e314f905dc942e") version("3.37.2", sha256="4089a8d9b467537b3f246f217b84cd76e00b1d1a971fe5aca1e30e230e46b2d8") |