Bug#1124933: wscript: support cmake built HDF5 and fix HDF5+MPI detection
Rafael Laboissière
rafael at debian.org
Thu Jan 8 12:42:43 GMT 2026
Control: tags -1 patch upstream
Hi Gilles,
Thank you for the diagnosis and for the patch.
Your patch does not apply to the current version of the xmds2 package,
because there is an extraneous line containing "auto-gitignore" in the
hunk for the debian/patches/series file.
Could you please clarify this?
Best,
Rafael
* Gilles Filippini <pini at debian.org> [2026-01-07 13:47]:
> Source: xmds2
> Version: 3.1.0+dfsg2-11
> Severity: normal
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA512
>
> Hi,
>
> While testing the build of xmds2 against cmake built HDF5 (1.14.6
> currently in experimental) I noticed a couple if issues regarding HDF5
> detection by the wscript tool.
>
> Firstly, it extracts the HDF5 libpath from the full path of HDF5 static
> library returned by 'h5cc -show -noshlib'. While it works currently,
> it doesn't work with a cmake built HDF5 where the h5cc output comes
> from pkg-config.
>
> I propose to parse the -L link option from 'h5cc -show -shlib' instead
> which works in both cases.
>
> Secondly the HDF5 detection with MPI is not correct as is uses 'h5cc'
> instead of 'h5pcc'.
>
> Please see the attached patch proposal which should fix both issues. I've
> tested it against autotools built HDF5 1.14.5 in unstable and cmake built
> HDF5 1.14.6 in experimental.
>
> Best,
> _g.
>
> - -- System Information:
> Debian Release: 12.0
> Architecture: amd64 (x86_64)
>
> Kernel: Linux 6.1.0-34-amd64 (SMP w/12 CPU threads; PREEMPT)
> Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
> Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set
> Shell: /bin/sh linked to /usr/bin/dash
> Init: systemd (via /run/systemd/system)
> LSM: AppArmor: enabled
>
> -----BEGIN PGP SIGNATURE-----
>
> iQEzBAEBCgAdFiEEoJObzArDE05WtIyR7+hsbH/+z4MFAmleVeQACgkQ7+hsbH/+
> z4MYGQgAiyGpyeFO+VQ4IsMiHEuemFRu+morkQQf+zdGPUP2oVacWtAjeEfv3mlf
> TM/XPsZSwb+ilY9YHWP4f9V+FY++m1n6bQM+zwSKIaR7CTwKPPcy8Ie36iDhokIp
> 1nDe6VrR4Ih9pn3PleKZts6Dzp5TEZT6m2ReUSMdXkk1FCg3dNPlBb57EXkhS7PU
> /P2MwaSVmIR0/pplczcVBilJMZTWzbhkZjgzBrGRt0evYTntHQrGkbB1iz/4ikpZ
> vpdQmWkzbR2CTYwu8PYf8ap23Tg/zQfKrtq2opYWm7lpBAz25/SNR0gCKCrJuGiZ
> dsNIQdEJH4nlCE6z+GrdvutGbJF9HQ==
> =EQzW
> -----END PGP SIGNATURE-----
> diff -Nru xmds2-3.1.0+dfsg2/debian/changelog xmds2-3.1.0+dfsg2/debian/changelog
> --- xmds2-3.1.0+dfsg2/debian/changelog 2025-09-26 15:19:18.000000000 +0200
> +++ xmds2-3.1.0+dfsg2/debian/changelog 2026-01-07 10:38:44.000000000 +0100
> @@ -1,3 +1,13 @@
> +xmds2 (3.1.0+dfsg2-11.1) UNRELEASED; urgency=medium
> +
> + * Non-maintainer upload.
> + * New patches for wscript:
> + - support for cmake built HDF5
> + - use the correct MPI HDF5 variant when building with MPI
> + * The last item above requires libhdf5-mpi-dev as build dependency
> +
> + -- Gilles Filippini <pini at debian.org> Wed, 07 Jan 2026 10:38:44 +0100
> +
> xmds2 (3.1.0+dfsg2-11) unstable; urgency=medium
>
> * d/control:
> diff -Nru xmds2-3.1.0+dfsg2/debian/control xmds2-3.1.0+dfsg2/debian/control
> --- xmds2-3.1.0+dfsg2/debian/control 2025-09-26 15:19:18.000000000 +0200
> +++ xmds2-3.1.0+dfsg2/debian/control 2026-01-07 10:38:44.000000000 +0100
> @@ -12,6 +12,7 @@
> libfftw3-mpi-dev <!nocheck>,
> libgsl-dev <!nocheck>,
> libhdf5-dev <!nocheck>,
> + libhdf5-mpi-dev <!nocheck>,
> libopenblas-dev | libblis-dev <!nocheck>,
> mpi-default-bin <!nocheck>,
> mpi-default-dev <!nocheck>,
> 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 2025-09-26 15:19:18.000000000 +0200
> +++ xmds2-3.1.0+dfsg2/debian/patches/series 2026-01-07 10:38:44.000000000 +0100
> @@ -14,3 +14,5 @@
> invalid-escape-sequences.patch
> replace-deprecated-distutils.patch
> auto-gitignore
> +wscript-hdf5-cmake-support.patch
> +wscript-hdf5-mpi-support.patch
> diff -Nru xmds2-3.1.0+dfsg2/debian/patches/wscript-hdf5-cmake-support.patch xmds2-3.1.0+dfsg2/debian/patches/wscript-hdf5-cmake-support.patch
> --- xmds2-3.1.0+dfsg2/debian/patches/wscript-hdf5-cmake-support.patch 1970-01-01 01:00:00.000000000 +0100
> +++ xmds2-3.1.0+dfsg2/debian/patches/wscript-hdf5-cmake-support.patch 2026-01-07 10:38:44.000000000 +0100
> @@ -0,0 +1,19 @@
> +Description: fix the weird way wscript has to find out the HDF5 libpath
> + It should relies on the standard -L link flag instead of the broken
> + way the autotools generated h5cc tool handles static linking.
> + .
> + BTW this fix adds support for the cmake built HDF5 1.14.6 currently in
> + experimental.
> +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
> +@@ -401,7 +401,7 @@ def configure(conf):
> + h5cc_shared_flags = conf.cmd_and_log([conf.env['H5CC'][0], '-show', '-shlib'])
> + h5cc_static_flags = conf.cmd_and_log([conf.env['H5CC'][0], '-show', '-noshlib'])
> +
> +- hdf5_libpath = re.search(r'(\S*)/libhdf5\.a', h5cc_static_flags).group(1)
> ++ hdf5_libpath = re.search(r'\s-L(\S+)', h5cc_shared_flags).group(1)
> +
> + conf.env.append_unique("LIBPATH_hdf5", hdf5_libpath)
> +
> diff -Nru xmds2-3.1.0+dfsg2/debian/patches/wscript-hdf5-mpi-support.patch xmds2-3.1.0+dfsg2/debian/patches/wscript-hdf5-mpi-support.patch
> --- xmds2-3.1.0+dfsg2/debian/patches/wscript-hdf5-mpi-support.patch 1970-01-01 01:00:00.000000000 +0100
> +++ xmds2-3.1.0+dfsg2/debian/patches/wscript-hdf5-mpi-support.patch 2026-01-07 10:38:44.000000000 +0100
> @@ -0,0 +1,27 @@
> +Description: When building for the MPI variant of HDF5 the helper should
> + be 'h5pcc' ('p' for 'parallel') instead of 'h5cc' which relates to the
> + serial variant.
> +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
> +@@ -397,9 +397,16 @@ def configure(conf):
> + )
> +
> + # Check for hdf5
> +- if conf.find_program('h5cc', var='H5CC', mandatory = False):
> +- h5cc_shared_flags = conf.cmd_and_log([conf.env['H5CC'][0], '-show', '-shlib'])
> +- h5cc_static_flags = conf.cmd_and_log([conf.env['H5CC'][0], '-show', '-noshlib'])
> ++ if conf.env['ENVIRONMENT_NAME'] == 'default':
> ++ hdf5_helper = 'h5cc'
> ++ hdf5_helper_var = 'H5CC'
> ++ else:
> ++ hdf5_helper = 'h5pcc'
> ++ hdf5_helper_var = 'H5PCC'
> ++
> ++ 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)
> +
More information about the debian-science-maintainers
mailing list