Salut Gilles,

Thanks for the bug report and for the patch.

Which build-dependencies do you use to build the xmds2 package, in order to 
reproduce the FTBFS issue?  The package builds fine against the libhdf5-dev and 
libhdf5-mpi-dev packages currently in experimental.

Best,

Rafael

* Gilles Filippini <[email protected]> [2026-06-22 16:58]:

> 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.

> 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 <[email protected]>  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

Reply via email to