dependencies: hdf5: mark configtool dependency not-found for cmake build

When hdf5 is built with cmake instead of autotools, it makes a number of
weird changes. What we care about in particular is that h5cc exists but
doesn't work -- it happily ignores -show and tries to compile stuff,
then leaves us with a dependency that has no libraries, and fails when
running `ninja`.

See: #12748
pull/12802/head
Eli Schwartz 10 months ago
parent 55d30b61ff
commit f5da446bb9
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 7
      mesonbuild/dependencies/hdf5.py

@ -122,13 +122,20 @@ class HDF5ConfigToolDependency(ConfigToolDependency):
# and then without -c to get the link arguments. # and then without -c to get the link arguments.
args = self.get_config_value(['-show', '-c'], 'args')[1:] args = self.get_config_value(['-show', '-c'], 'args')[1:]
args += self.get_config_value(['-show', '-noshlib' if self.static else '-shlib'], 'args')[1:] args += self.get_config_value(['-show', '-noshlib' if self.static else '-shlib'], 'args')[1:]
found = False
for arg in args: for arg in args:
if arg.startswith(('-I', '-f', '-D')) or arg == '-pthread': if arg.startswith(('-I', '-f', '-D')) or arg == '-pthread':
self.compile_args.append(arg) self.compile_args.append(arg)
elif arg.startswith(('-L', '-l', '-Wl')): elif arg.startswith(('-L', '-l', '-Wl')):
self.link_args.append(arg) self.link_args.append(arg)
found = True
elif Path(arg).is_file(): elif Path(arg).is_file():
self.link_args.append(arg) self.link_args.append(arg)
found = True
# cmake h5cc is broken
if not found:
raise DependencyException('HDF5 was built with cmake instead of autotools, and h5cc is broken.')
def _sanitize_version(self, ver: str) -> str: def _sanitize_version(self, ver: str) -> str:
v = re.search(r'\s*HDF5 Version: (\d+\.\d+\.\d+)', ver) v = re.search(r'\s*HDF5 Version: (\d+\.\d+\.\d+)', ver)

Loading…
Cancel
Save