Update make/nmake invocations (mostly Windows) (#49022)
The second change technically affects non-Windows, but the behavior should be exactly the same: * Packages no longer have access to `.msbuild` and `.nmake` automatically; they now get them via a dependency on `msvc`. * Update two CMake-based packages that call `make test` to instead call `ctest` (`netcdf-cxx4` and `pegtl`). CMake-based packages should do this because on Windows `make test` will not generally work, but `ctest` does. * Fix `openssl` "make test" on Windows (WRT prior point: not a CMake-based package).
This commit is contained in:
parent
4f27ef8157
commit
4a7508c9df
@ -574,12 +574,10 @@ def set_package_py_globals(pkg, context: Context = Context.BUILD):
|
|||||||
module.make = DeprecatedExecutable(pkg.name, "make", "gmake")
|
module.make = DeprecatedExecutable(pkg.name, "make", "gmake")
|
||||||
module.gmake = DeprecatedExecutable(pkg.name, "gmake", "gmake")
|
module.gmake = DeprecatedExecutable(pkg.name, "gmake", "gmake")
|
||||||
module.ninja = DeprecatedExecutable(pkg.name, "ninja", "ninja")
|
module.ninja = DeprecatedExecutable(pkg.name, "ninja", "ninja")
|
||||||
# TODO: johnwparent: add package or builder support to define these build tools
|
|
||||||
# for now there is no entrypoint for builders to define these on their
|
|
||||||
# own
|
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
module.nmake = Executable("nmake")
|
module.nmake = DeprecatedExecutable(pkg.name, "nmake", "msvc")
|
||||||
module.msbuild = Executable("msbuild")
|
module.msbuild = DeprecatedExecutable(pkg.name, "msbuild", "msvc")
|
||||||
# analog to configure for win32
|
# analog to configure for win32
|
||||||
module.cscript = Executable("cscript")
|
module.cscript = Executable("cscript")
|
||||||
|
|
||||||
|
@ -162,6 +162,7 @@ class tty:
|
|||||||
configure: Executable
|
configure: Executable
|
||||||
make_jobs: int
|
make_jobs: int
|
||||||
make: MakeExecutable
|
make: MakeExecutable
|
||||||
|
nmake: Executable
|
||||||
ninja: MakeExecutable
|
ninja: MakeExecutable
|
||||||
python_include: str
|
python_include: str
|
||||||
python_platlib: str
|
python_platlib: str
|
||||||
|
@ -131,7 +131,6 @@ def install(self, spec, prefix):
|
|||||||
# Build the static library and everything else
|
# Build the static library and everything else
|
||||||
if self.spec.satisfies("platform=windows"):
|
if self.spec.satisfies("platform=windows"):
|
||||||
# Build step
|
# Build step
|
||||||
nmake = Executable("nmake.exe")
|
|
||||||
nmake("-f", "makefile.msc")
|
nmake("-f", "makefile.msc")
|
||||||
# Install step
|
# Install step
|
||||||
mkdirp(self.prefix.include)
|
mkdirp(self.prefix.include)
|
||||||
|
@ -90,6 +90,13 @@ def determine_variants(cls, exes, version_str):
|
|||||||
extras["compilers"]["fortran"] = fortran_compiler
|
extras["compilers"]["fortran"] = fortran_compiler
|
||||||
return spec, extras
|
return spec, extras
|
||||||
|
|
||||||
|
def setup_dependent_package(self, module, dependent_spec):
|
||||||
|
"""Populates dependent module with tooling available from VS"""
|
||||||
|
# We want these to resolve to the paths set by MSVC's VCVARs
|
||||||
|
# so no paths
|
||||||
|
module.nmake = Executable("nmake")
|
||||||
|
module.msbuild = Executable("msbuild")
|
||||||
|
|
||||||
def setup_dependent_build_environment(self, env, dependent_spec):
|
def setup_dependent_build_environment(self, env, dependent_spec):
|
||||||
self.init_msvc()
|
self.init_msvc()
|
||||||
# Set the build environment variables for spack. Just using
|
# Set the build environment variables for spack. Just using
|
||||||
|
@ -95,4 +95,4 @@ def cmake_args(self):
|
|||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
with working_dir(self.build_directory):
|
with working_dir(self.build_directory):
|
||||||
make("test", parallel=False)
|
ctest()
|
||||||
|
@ -189,18 +189,20 @@ def install(self, spec, prefix):
|
|||||||
|
|
||||||
if spec.satisfies("platform=windows"):
|
if spec.satisfies("platform=windows"):
|
||||||
host_make = nmake
|
host_make = nmake
|
||||||
|
make_args = {}
|
||||||
else:
|
else:
|
||||||
host_make = make
|
host_make = make
|
||||||
|
make_args = {"parallel": False}
|
||||||
|
|
||||||
host_make()
|
host_make()
|
||||||
|
|
||||||
if self.run_tests:
|
if self.run_tests:
|
||||||
host_make("test", parallel=False) # 'VERBOSE=1'
|
host_make("test", **make_args) # 'VERBOSE=1'
|
||||||
|
|
||||||
install_tgt = "install" if self.spec.satisfies("+docs") else "install_sw"
|
install_tgt = "install" if self.spec.satisfies("+docs") else "install_sw"
|
||||||
|
|
||||||
# See https://github.com/openssl/openssl/issues/7466#issuecomment-432148137
|
# See https://github.com/openssl/openssl/issues/7466#issuecomment-432148137
|
||||||
host_make(install_tgt, parallel=False)
|
host_make(install_tgt, **make_args)
|
||||||
|
|
||||||
@run_after("install")
|
@run_after("install")
|
||||||
def link_system_certs(self):
|
def link_system_certs(self):
|
||||||
|
@ -49,4 +49,4 @@ def cmake_args(self):
|
|||||||
@on_package_attributes(run_tests=True)
|
@on_package_attributes(run_tests=True)
|
||||||
def check(self):
|
def check(self):
|
||||||
with working_dir(self.build_directory):
|
with working_dir(self.build_directory):
|
||||||
make("test", parallel=False)
|
ctest()
|
||||||
|
Loading…
Reference in New Issue
Block a user