summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/build_environment.py11
-rw-r--r--lib/spack/spack/util/executable.py7
-rw-r--r--var/spack/repos/builtin.mock/packages/cmake/package.py2
-rw-r--r--var/spack/repos/builtin.mock/packages/ninja/package.py3
-rw-r--r--var/spack/repos/builtin/packages/cmake/package.py6
-rw-r--r--var/spack/repos/builtin/packages/gmake/package.py5
-rw-r--r--var/spack/repos/builtin/packages/meson/package.py3
-rw-r--r--var/spack/repos/builtin/packages/ninja/package.py8
-rw-r--r--var/spack/repos/builtin/packages/scons/package.py3
-rw-r--r--var/spack/repos/builtin/packages/sqlite/package.py1
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")