Bug#1139554: xmds2: FTBFS against HDF5 2.1.0 - The waf toolchain has to be adapted

Gilles Filippini pini at debian.org
Mon Jun 22 15:58:53 BST 2026


Control: tags -1 + patch

Hi,

Gilles Filippini a écrit le 09/06/2026 à 14:57 :
> Source: xmds2
> Version: 3.1.0+dfsg2-13
> Severity: important
> Tags: ftbfs
> 
> Hi,
> 
> During a test rebuild of HDF5's reverse dependcies against HDF5 2.1.0
> currently in experimental, xmds2 FTBFS with:
> 
> Checking for program 'h5cc'                           : /usr/bin/h5cc
> Traceback (most recent call last):
>    File "/<<PKGBUILDDIR>>/bin-test/xmds2", line 4, in <module>
>      sys.exit(parser2.main())
>               ~~~~~~~~~~~~^^
>    File "/<<PKGBUILDDIR>>/xpdeint/parser2.py", line 219, in main
>      return Configuration.run_reconfig(includePaths, libPaths)
>             ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/<<PKGBUILDDIR>>/xpdeint/Configuration.py", line 145, in run_reconfig
>      return run_config(includePaths = includePaths, libPaths = libPaths)
>    File "/<<PKGBUILDDIR>>/xpdeint/Configuration.py", line 119, in run_config
>      ret = ctx.execute()
>    File "/<<PKGBUILDDIR>>/xpdeint/waf/waflib/Configure.py", line 159, in execute
>      super(ConfigurationContext, self).execute()
>      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
>    File "/<<PKGBUILDDIR>>/xpdeint/waf/waflib/Context.py", line 204, in execute
>      self.recurse([os.path.dirname(g_module.root_path)])
>      ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/<<PKGBUILDDIR>>/xpdeint/Configuration.py", line 56, in <lambda>
>      lambda x, y: getattr(Context.g_module, x.cmd or x.fun, Utils.nada)(x)
>                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
>    File "/<<PKGBUILDDIR>>/xpdeint/Configuration.py", line 85, in _
>      return f(ctx, *args, **kw)
>    File "/<<PKGBUILDDIR>>/xpdeint/support/wscript", line 754, in configure
>      configure_compiler()
>      ~~~~~~~~~~~~~~~~~~^^
>    File "/<<PKGBUILDDIR>>/xpdeint/support/wscript", line 411, in configure_compiler
>      hdf5_libpath = re.search(r'\s-L(\S+)', h5cc_shared_flags).group(1)
>                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> AttributeError: 'NoneType' object has no attribute 'group'
> 
> I tried to poke into the xpdeint/support/wscript file; but while xmds2 seems
> to build successfully many tests fail then. So I let it to the maintainer of
> the package :)
> 
> Don't hesitate to reach if needed, as I am in touch with HDF5 devs and
> they are willing to help.
Please review the attached patch. I've tested it with both HDF5 1.14.6 
in unstable and HDF5 2.1.0 in experimental.

Best,
_g.
-------------- next part --------------
diff -Nru xmds2-3.1.0+dfsg2/debian/changelog xmds2-3.1.0+dfsg2/debian/changelog
--- xmds2-3.1.0+dfsg2/debian/changelog	2026-03-26 13:48:46.000000000 +0100
+++ xmds2-3.1.0+dfsg2/debian/changelog	2026-06-22 16:17:06.000000000 +0200
@@ -1,3 +1,10 @@
+xmds2 (3.1.0+dfsg2-13.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * New patch to add support for HDF5 2.1.0 (closes: #1139554)
+
+ -- Gilles Filippini <pini at debian.org>  Mon, 22 Jun 2026 16:17:06 +0200
+
 xmds2 (3.1.0+dfsg2-13) unstable; urgency=medium
 
   * Upload to unstable
diff -Nru xmds2-3.1.0+dfsg2/debian/patches/hdf5-2.1.0.patch xmds2-3.1.0+dfsg2/debian/patches/hdf5-2.1.0.patch
--- xmds2-3.1.0+dfsg2/debian/patches/hdf5-2.1.0.patch	1970-01-01 01:00:00.000000000 +0100
+++ xmds2-3.1.0+dfsg2/debian/patches/hdf5-2.1.0.patch	2026-06-22 16:17:06.000000000 +0200
@@ -0,0 +1,58 @@
+Index: xmds2-3.1.0+dfsg2/xpdeint/support/wscript
+===================================================================
+--- xmds2-3.1.0+dfsg2.orig/xpdeint/support/wscript
++++ xmds2-3.1.0+dfsg2/xpdeint/support/wscript
+@@ -400,22 +400,31 @@ def configure(conf):
+         if conf.env['ENVIRONMENT_NAME'] == 'default':
+             hdf5_helper = 'h5cc'
+             hdf5_helper_var = 'H5CC'
++            hdf5_lib = 'hdf5_serial'
++            hdf5_hl_lib = 'hdf5_serial_hl'
+         else:
+             hdf5_helper = 'h5pcc'
+             hdf5_helper_var = 'H5PCC'
++            helper_implementation = "/usr/bin/h5pcc"
++            while os.path.islink(helper_implementation):
++                helper_implementation = os.readlink(helper_implementation)
++            hdf5_mpi_flavor = os.path.splitext(helper_implementation)[1][1:]
++            hdf5_lib = f'hdf5_{hdf5_mpi_flavor}'
++            hdf5_hl_lib = f'hdf5_{hdf5_mpi_flavor}_hl'
+ 
+         if conf.find_program(f'{hdf5_helper}', var=hdf5_helper_var, mandatory = False):
+             h5cc_shared_flags = conf.cmd_and_log([conf.env[hdf5_helper_var][0], '-show', '-shlib'])
+             h5cc_static_flags = conf.cmd_and_log([conf.env[hdf5_helper_var][0], '-show', '-noshlib'])
+             
+-            hdf5_libpath = re.search(r'\s-L(\S+)', h5cc_shared_flags).group(1)
+-            
+-            conf.env.append_unique("LIBPATH_hdf5", hdf5_libpath)
++            re_res = re.search(r'\s-L(\S+)', h5cc_shared_flags)
++            if re_res:
++                hdf5_libpath = re_res.group(1)
++                conf.env.append_unique("LIBPATH_hdf5", hdf5_libpath)
+             
+             # h5cc uses absolute paths to the static libraries.  This interferes with how waf likes to link
+             # against static libraries.  Let's remove the absolute paths to the libraries, and add the static libraries
+             # again later.
+-            h5cc_static_flags = re.sub(re.escape(hdf5_libpath) + r"/libhdf5\S*\.a", "", h5cc_static_flags)
++            h5cc_static_flags = re.sub(r" /[^ ]*/lib(hdf5\S*)\.a", r" -l\1", h5cc_static_flags)
+             
+             conf.parse_flags(h5cc_shared_flags, 'hdf5_shared')
+             conf.parse_flags(h5cc_static_flags, 'hdf5_static')
+@@ -423,7 +432,7 @@ def configure(conf):
+             conf.env['uselib'].extend(['hdf5_shared', 'hdf5_static'])
+             
+             check_cxx(
+-                lib='hdf5',
++                lib=hdf5_lib,
+                 header_name='hdf5.h',
+                 #function_name='H5check_version',
+                 fragment='''
+@@ -444,7 +453,7 @@ def configure(conf):
+             if 'hdf5' in conf.env['uselib']:
+ 
+                 check_cxx(
+-                    lib='hdf5_hl',
++                    lib=hdf5_hl_lib,
+                     defines='HAVE_HDF5_HL',
+                     header_name=['hdf5.h', 'hdf5_hl.h'],
+                     fragment='''
diff -Nru xmds2-3.1.0+dfsg2/debian/patches/series xmds2-3.1.0+dfsg2/debian/patches/series
--- xmds2-3.1.0+dfsg2/debian/patches/series	2026-03-26 13:48:46.000000000 +0100
+++ xmds2-3.1.0+dfsg2/debian/patches/series	2026-06-22 16:17:06.000000000 +0200
@@ -16,3 +16,4 @@
 wscript-hdf5-cmake-support.patch
 wscript-hdf5-mpi-support.patch
 auto-gitignore
+hdf5-2.1.0.patch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/debian-science-maintainers/attachments/20260622/de5efda0/attachment.sig>


More information about the debian-science-maintainers mailing list