summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Kosukhin <sergey.kosukhin@mpimet.mpg.de>2020-06-16 08:05:46 +0200
committerGitHub <noreply@github.com>2020-06-15 23:05:46 -0700
commita492187973fe55600d0c18159b3f374a079a23db (patch)
tree76b37c37af820f3edb7d34138f62a2814bb09d4f
parent7e322b31845b2e56358abe5fd241526b20ae534c (diff)
downloadspack-a492187973fe55600d0c18159b3f374a079a23db.tar.gz
spack-a492187973fe55600d0c18159b3f374a079a23db.tar.bz2
spack-a492187973fe55600d0c18159b3f374a079a23db.tar.xz
spack-a492187973fe55600d0c18159b3f374a079a23db.zip
hdf5: fix libtool files (#17009)
-rw-r--r--var/spack/repos/builtin/packages/hdf5/package.py14
-rw-r--r--var/spack/repos/builtin/packages/libaec/package.py23
-rw-r--r--var/spack/repos/builtin/packages/libszip/package.py16
3 files changed, 52 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py
index 5703214149..c81ffb74dc 100644
--- a/var/spack/repos/builtin/packages/hdf5/package.py
+++ b/var/spack/repos/builtin/packages/hdf5/package.py
@@ -243,7 +243,19 @@ class Hdf5(AutotoolsPackage):
extra_args.append('--with-default-api-version=' + api)
if '+szip' in self.spec:
- extra_args.append('--with-szlib=%s' % self.spec['szip'].prefix)
+ szip_spec = self.spec['szip']
+ # The configure script of HDF5 accepts a comma-separated tuple of
+ # two paths: the first one points to the directory with include
+ # files, the second one points to the directory with library files.
+ # If the second path is not specified, the configure script assumes
+ # that it equals to prefix/lib. However, the correct directory
+ # might be prefix/lib64. It is not a problem when the building is
+ # done with Spack's compiler wrapper but it makes the Libtool
+ # files (*.la) invalid, which makes it problematic to use the
+ # installed library outside of Spack environment.
+ extra_args.append('--with-szlib=%s,%s' %
+ (szip_spec.headers.directories[0],
+ szip_spec.libs.directories[0]))
else:
extra_args.append('--without-szlib')
diff --git a/var/spack/repos/builtin/packages/libaec/package.py b/var/spack/repos/builtin/packages/libaec/package.py
index 5f12c653f1..3ea9833b62 100644
--- a/var/spack/repos/builtin/packages/libaec/package.py
+++ b/var/spack/repos/builtin/packages/libaec/package.py
@@ -22,3 +22,26 @@ class Libaec(CMakePackage):
version('1.0.2', sha256='b9e5bbbc8bf9cbfd3b9b4ce38b3311f2c88d3d99f476edb35590eb0006aa1fc5')
version('1.0.1', sha256='3668eb4ed36724441e488a7aadc197426afef4b1e8bd139af6d3e36023906459')
version('1.0.0', sha256='849f08b08ddaaffe543d06d0ced5e4ee3e526b13a67c5f422d126b1c9cf1b546')
+
+ @property
+ def libs(self):
+ query = self.spec.last_query
+
+ libraries = ['libaec']
+
+ if 'szip' == query.name or 'szip' in query.extra_parameters:
+ libraries.insert(0, 'libsz')
+
+ shared = 'static' not in query.extra_parameters
+
+ libs = find_libraries(
+ libraries, root=self.prefix, shared=shared, recursive=True
+ )
+
+ if not libs:
+ msg = 'Unable to recursively locate {0} {1} libraries in {2}'
+ raise spack.error.NoLibrariesError(
+ msg.format('shared' if shared else 'static',
+ self.spec.name,
+ self.spec.prefix))
+ return libs
diff --git a/var/spack/repos/builtin/packages/libszip/package.py b/var/spack/repos/builtin/packages/libszip/package.py
index 00a2b9b5bc..b72e2ba276 100644
--- a/var/spack/repos/builtin/packages/libszip/package.py
+++ b/var/spack/repos/builtin/packages/libszip/package.py
@@ -24,6 +24,22 @@ class Libszip(AutotoolsPackage):
version('2.1.1', sha256='21ee958b4f2d4be2c9cabfa5e1a94877043609ce86fde5f286f105f7ff84d412')
version('2.1', sha256='a816d95d5662e8279625abdbea7d0e62157d7d1f028020b1075500bf483ed5ef')
+ @property
+ def libs(self):
+ shared = 'static' not in self.spec.last_query.extra_parameters
+
+ libs = find_libraries(
+ 'libsz', root=self.prefix, shared=shared, recursive=True
+ )
+
+ if not libs:
+ msg = 'Unable to recursively locate {0} {1} libraries in {2}'
+ raise spack.error.NoLibrariesError(
+ msg.format('shared' if shared else 'static',
+ self.spec.name,
+ self.spec.prefix))
+ return libs
+
def configure_args(self):
return [
'--enable-production',