From f5da446bb91f33cb0a67f95d08da70ce12fa042f Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Wed, 17 Jan 2024 13:23:56 -0500 Subject: [PATCH] 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 --- mesonbuild/dependencies/hdf5.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mesonbuild/dependencies/hdf5.py b/mesonbuild/dependencies/hdf5.py index a00b5988b..622653025 100644 --- a/mesonbuild/dependencies/hdf5.py +++ b/mesonbuild/dependencies/hdf5.py @@ -122,13 +122,20 @@ class HDF5ConfigToolDependency(ConfigToolDependency): # and then without -c to get the link arguments. args = self.get_config_value(['-show', '-c'], 'args')[1:] args += self.get_config_value(['-show', '-noshlib' if self.static else '-shlib'], 'args')[1:] + found = False for arg in args: if arg.startswith(('-I', '-f', '-D')) or arg == '-pthread': self.compile_args.append(arg) elif arg.startswith(('-L', '-l', '-Wl')): self.link_args.append(arg) + found = True elif Path(arg).is_file(): 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: v = re.search(r'\s*HDF5 Version: (\d+\.\d+\.\d+)', ver)