From e5364ea832abb7ed79f4cbdc7addf8afe6bb353f Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Wed, 24 Jul 2024 16:28:30 -0400 Subject: [PATCH] Netlib-lapack package: search for correct library names on Windows (#45417) Library names on Windows are not typically prefixed with lib; the default `.libs` implementation accounts for this, but `netlib-lapack` has a custom implementation of `.libs` that did not account for this. --- .../builtin/packages/netlib-lapack/package.py | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py index 1686a0a76a4..20d9a0664f5 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py @@ -148,15 +148,22 @@ def patch(self): if self.spec.satisfies("platform=windows @0:3.9.1"): force_remove("LAPACKE/include/lapacke_mangling.h") + def xplatform_lib_name(self, lib): + return ( + "lib" + lib + if not lib.startswith("lib") and not self.spec.satisfies("platform=windows") + else lib + ) + @property def blas_libs(self): - shared = True if "+shared" in self.spec else False + shared = "+shared" in self.spec query_parameters = self.spec.last_query.extra_parameters query2libraries = { - tuple(): ["libblas"], - ("c", "fortran"): ["libcblas", "libblas"], - ("c",): ["libcblas"], - ("fortran",): ["libblas"], + tuple(): [self.xplatform_lib_name("blas")], + ("c", "fortran"): [self.xplatform_lib_name("cblas"), self.xplatform_lib_name("blas")], + ("c",): [self.xplatform_lib_name("cblas")], + ("fortran",): [self.xplatform_lib_name("blas")], } key = tuple(sorted(query_parameters)) libraries = query2libraries[key] @@ -167,10 +174,13 @@ def lapack_libs(self): shared = True if "+shared" in self.spec else False query_parameters = self.spec.last_query.extra_parameters query2libraries = { - tuple(): ["liblapack"], - ("c", "fortran"): ["liblapacke", "liblapack"], - ("c",): ["liblapacke"], - ("fortran",): ["liblapack"], + tuple(): [self.xplatform_lib_name("lapack")], + ("c", "fortran"): [ + self.xplatform_lib_name("lapacke"), + self.xplatform_lib_name("lapack"), + ], + ("c",): [self.xplatform_lib_name("lapacke")], + ("fortran",): [self.xplatform_lib_name("lapack")], } key = tuple(sorted(query_parameters)) libraries = query2libraries[key]