From a492187973fe55600d0c18159b3f374a079a23db Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Tue, 16 Jun 2020 08:05:46 +0200 Subject: hdf5: fix libtool files (#17009) --- var/spack/repos/builtin/packages/hdf5/package.py | 14 ++++++++++++- var/spack/repos/builtin/packages/libaec/package.py | 23 ++++++++++++++++++++++ .../repos/builtin/packages/libszip/package.py | 16 +++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) (limited to 'var') 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', -- cgit v1.2.3-70-g09d2