Hi Emanuelle,

Thanks for helping fix this FTBFS on armhf.

On 3/4/26 9:49 AM, Emanuele Rocca wrote:
On 2025-11-23 04:33, Sebastiaan Couwenberg wrote:
Making this a warning with following does not resolve the FTBFS:

  ifneq (,$(filter $(DEB_BUILD_ARCH),armhf))
  export DEB_CFLAGS_MAINT_APPEND = -Wno-error=incompatible-pointer-types
  endif

It then fails due to:

  array.c:399:21: error: too many arguments to function 'xlen_funct'; expected 
0, have 1
    399 |             len += (*xlen_funct)(vp);
        |                    ~^~~~~~~~~~~~ ~~


The prototype of xlen_funct has no arguments defined. In C23 declaring a
function as int foo() is equivalent as declaring that it takes no
argument, hence calling it with arguments becomes an error. See:
https://en.wikipedia.org/wiki/C23_(C_standard_revision)#Syntax

Upstream likely does that because the functions xlen_funct can be set to have 
different arguments:

 mfhdf/libsrc/nc_priv.h:HDFLIBAPI int NC_xlen_attr(NC_attr **app);
 mfhdf/libsrc/nc_priv.h:HDFLIBAPI int NC_xlen_dim(NC_dim **dpp);
 mfhdf/libsrc/nc_priv.h:HDFLIBAPI int NC_xlen_string(NC_string *cdfstr);
 mfhdf/libsrc/nc_priv.h:HDFLIBAPI int NC_xlen_var(NC_var **vpp);
 mfhdf/libsrc/array.c:                xlen_funct = NC_xlen_string;
 mfhdf/libsrc/array.c:                xlen_funct = NC_xlen_dim;
 mfhdf/libsrc/array.c:                xlen_funct = NC_xlen_var;
 mfhdf/libsrc/array.c:                xlen_funct = NC_xlen_attr;

You can either fix the code or tell the compiler to stick to older
versions of the standard, something like:

   export DEB_CFLAGS_MAINT_APPEND += -std=c17

This is confirmed to fix the FTBFS with GCC 15 on the armhf porterbox.

Kind Regards,

Bas

--
 PGP Key ID: 4096R/6750F10AE88D4AF1
Fingerprint: 8182 DE41 7056 408D 6146  50D1 6750 F10A E88D 4AF1

Reply via email to