#1096864 isc-dhcp: ftbfs with GCC-15

Package:
src:isc-dhcp
Source:
src:isc-dhcp
Submitter:
Matthias Klose
Date:
2026-01-11 09:57:02 UTC
Severity:
normal
Tags:
#1096864#5
Date:
2025-02-17 17:20:51 UTC
From:
To:
[This bug is NOT targeted to the upcoming trixie release]

Please keep this issue open in the bug tracker for the package it
was filed for.  If a fix in another package is required, please
file a bug for the other package (or clone), and add a block in this
package. Please keep the issue open until the package can be built in
a follow-up test rebuild.

The package fails to build in a test rebuild on at least amd64 with
gcc-15/g++-15, but succeeds to build with gcc-14/g++-14. The
severity of this report will be raised before the forky release.

The full build log can be found at:
http://qa-logs.debian.net/2025/02/16/amd64exp/isc-dhcp_4.4.3-P1-5_unstable_gccexp.log.gz
The last lines of the build log are at the end of this report.

To build with GCC 15, either set CC=gcc-15 CXX=g++-15 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++

GCC 15 now defaults to the C23/C++23 standards, exposing many FTBFS.
Other Common build failures are new warnings resulting in build failures
with -Werror turned on, or new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-15/porting_to.html

[...]
      |                                    |
      |                                    void (*)(const struct data_string *, const struct data_string *, u_int32_t *, struct packet *, char *, int *, int) {aka void (*)(const struct data_string *, const struct data_string *, unsigned int *, struct packet *, char *, int *, int)}
dhcpv6.c:5856:27: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(const struct data_string *, const struct data_string *, u_int32_t *, struct packet *, char *, int *, int)’ {aka ‘void (*)(const struct data_string *, const struct data_string *, unsigned int *, struct packet *, char *, int *, int)’}
 5856 |                    void (*ia_na_nomatch)())
      |                    ~~~~~~~^~~~~~~~~~~~~~~~
dhcpv6.c:5777:1: note: ‘ia_na_nomatch_decline’ declared here
 5777 | ia_na_nomatch_decline(const struct data_string *client_id,
      | ^~~~~~~~~~~~~~~~~~~~~
dhcpv6.c: In function ‘iterate_over_ia_pd’:
dhcpv6.c:6526:25: error: too many arguments to function ‘ia_pd_match’; expected 0, have 3
 6526 |                         ia_pd_match(client_id, &iaprefix, prefix);
      |                         ^~~~~~~~~~~ ~~~~~~~~~
dhcpv6.c:6528:25: error: too many arguments to function ‘ia_pd_nomatch’; expected 0, have 7
 6528 |                         ia_pd_nomatch(client_id, &iaprefix,
      |                         ^~~~~~~~~~~~~ ~~~~~~~~~
dhcpv6.c: In function ‘dhcpv6_release’:
dhcpv6.c:6606:47: error: passing argument 6 of ‘iterate_over_ia_na’ from incompatible pointer type [-Wincompatible-pointer-types]
 6606 |                                    "Release", ia_na_match_release,
      |                                               ^~~~~~~~~~~~~~~~~~~
      |                                               |
      |                                               void (*)(const struct data_string *, const struct data_string *, struct iasubopt *)
dhcpv6.c:5855:27: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(const struct data_string *, const struct data_string *, struct iasubopt *)’
 5855 |                    void (*ia_na_match)(),
      |                    ~~~~~~~^~~~~~~~~~~~~~
dhcpv6.c:6166:1: note: ‘ia_na_match_release’ declared here
 6166 | ia_na_match_release(const struct data_string *client_id,
      | ^~~~~~~~~~~~~~~~~~~
dhcpv6.c:6607:36: error: passing argument 7 of ‘iterate_over_ia_na’ from incompatible pointer type [-Wincompatible-pointer-types]
 6607 |                                    ia_na_nomatch_release);
      |                                    ^~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void (*)(const struct data_string *, const struct data_string *, u_int32_t *, struct packet *, char *, int *, int) {aka void (*)(const struct data_string *, const struct data_string *, unsigned int *, struct packet *, char *, int *, int)}
dhcpv6.c:5856:27: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(const struct data_string *, const struct data_string *, u_int32_t *, struct packet *, char *, int *, int)’ {aka ‘void (*)(const struct data_string *, const struct data_string *, unsigned int *, struct packet *, char *, int *, int)’}
 5856 |                    void (*ia_na_nomatch)())
      |                    ~~~~~~~^~~~~~~~~~~~~~~~
dhcpv6.c:6183:1: note: ‘ia_na_nomatch_release’ declared here
 6183 | ia_na_nomatch_release(const struct data_string *client_id,
      | ^~~~~~~~~~~~~~~~~~~~~
dhcpv6.c:6613:47: error: passing argument 6 of ‘iterate_over_ia_pd’ from incompatible pointer type [-Wincompatible-pointer-types]
 6613 |                                    "Release", ia_pd_match_release,
      |                                               ^~~~~~~~~~~~~~~~~~~
      |                                               |
      |                                               void (*)(const struct data_string *, const struct data_string *, struct iasubopt *)
dhcpv6.c:6357:27: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(const struct data_string *, const struct data_string *, struct iasubopt *)’
 6357 |                    void (*ia_pd_match)(),
      |                    ~~~~~~~^~~~~~~~~~~~~~
dhcpv6.c:6257:1: note: ‘ia_pd_match_release’ declared here
 6257 | ia_pd_match_release(const struct data_string *client_id,
      | ^~~~~~~~~~~~~~~~~~~
dhcpv6.c:6614:36: error: passing argument 7 of ‘iterate_over_ia_pd’ from incompatible pointer type [-Wincompatible-pointer-types]
 6614 |                                    ia_pd_nomatch_release);
      |                                    ^~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void (*)(const struct data_string *, const struct data_string *, u_int32_t *, struct packet *, char *, int *, int) {aka void (*)(const struct data_string *, const struct data_string *, unsigned int *, struct packet *, char *, int *, int)}
dhcpv6.c:6358:27: note: expected ‘void (*)(void)’ but argument is of type ‘void (*)(const struct data_string *, const struct data_string *, u_int32_t *, struct packet *, char *, int *, int)’ {aka ‘void (*)(const struct data_string *, const struct data_string *, unsigned int *, struct packet *, char *, int *, int)’}
 6358 |                    void (*ia_pd_nomatch)())
      |                    ~~~~~~~^~~~~~~~~~~~~~~~
dhcpv6.c:6276:1: note: ‘ia_pd_nomatch_release’ declared here
 6276 | ia_pd_nomatch_release(const struct data_string *client_id,
      | ^~~~~~~~~~~~~~~~~~~~~
make[4]: *** [Makefile:726: dhcpd-dhcpv6.o] Error 1
make[4]: Leaving directory '/build/reproducible-path/isc-dhcp-4.4.3-P1/server'
make[3]: *** [Makefile:923: all-recursive] Error 1
make[3]: Leaving directory '/build/reproducible-path/isc-dhcp-4.4.3-P1/server'
make[2]: *** [Makefile:468: all-recursive] Error 1
make[2]: Leaving directory '/build/reproducible-path/isc-dhcp-4.4.3-P1'
make[1]: *** [debian/rules:65: override_dh_auto_build] Error 2
make[1]: Leaving directory '/build/reproducible-path/isc-dhcp-4.4.3-P1'
make: *** [debian/rules:42: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

#1096864#14
Date:
2025-10-05 13:39:43 UTC
From:
To:
#1096864#19
Date:
2025-10-05 20:10:10 UTC
From:
To:
user debian-release@lists.debian.org
usertags 1096864 + bsp-2025-10-brazil
thanks

I have opened a merge request to fix this bug.
You can find it here:
https://salsa.debian.org/debian/isc-dhcp/-/merge_requests/17

Thanks Fabio for reporting this fix

#1096864#26
Date:
2026-01-04 12:59:12 UTC
From:
To:
user debian-loongarch@lists.debian.org
usertag 1096864 loong64
thanks

Hi,


This issue is currently preventing the building of isc-dhcp on loong64
and hence the binaries are missing on loong64. As a result I can't build
lxc containers for loong64 from the official archive. Hence, I can't
migrate the ci.debian.net infrastructure for loong64.

There is a patch and MR. This bug is NMU material.

Paul

#1096864#31
Date:
2026-01-04 13:45:03 UTC
From:
To:
Hi,

If some part of lxc container building requires isc-dhcp binaries,
then that is IMO a serious bug in that stack. The isc-dhcp package
is supposed to go away.

Chris

#1096864#36
Date:
2026-01-04 14:15:05 UTC
From:
To:
Hi,


Sure, but as long as isc-dhcp is still in testing, it should receive
proper fixes for issues.

Paul

#1096864#41
Date:
2026-01-04 14:42:04 UTC
From:
To:
Hi,

Don't get me wrong, it should get fixes. But its probably only in
testing because it builds a udeb. We already know it doesn't get
fixes :-(

Chris

#1096864#46
Date:
2026-01-04 14:43:41 UTC
From:
To:
Hi,


That's why I added the loong64 porters. There seems to be a patch.

Paul

#1096864#51
Date:
2026-01-11 09:55:41 UTC
From:
To:
As much as I'd have entertained uploading the patch, given the other RC
bugs this package really should be removed from testing instead. And I
see it is now scheduled for autoremoval.

Kind regards
Philipp Kern