Subject: guix-daemon fails to build with gcc-15 in Debian

From: Vagrant Cascadian <[email-masked]>
Date: Wed, 16 Apr 2025 11:30:27 -0700

As reported in Debian:

  https://bugs.debian.org/1096790

> The full build log can be found at:
> http://qa-logs.debian.net/2025/02/16/amd64exp/guix_1.4.0-8_unstable_gccexp.log.gz
> The last lines of the build log are at the end of this report.
...
> 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
...
> g++ -DHAVE_CONFIG_H -I. -I./nix  -DLOCALEDIR=\"/usr/share/locale\" -I./nix -I./nix/libutil -I./nix -I./nix/libstore
> -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -std=c++11 -g -O2 -ffile-prefix-map=/build/reproducible-path/guix-1.4.0=.
> -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o
> nix/nix-daemon/guix_daemon-nix-daemon.o `test -f 'nix/nix-daemon/nix-daemon.cc' || echo
> './'`nix/nix-daemon/nix-daemon.cc
> In file included from ./nix/libstore/local-store.hh:8,
> 				 from nix/nix-daemon/nix-daemon.cc:3:
> ./nix/libstore/store-api.hh:92:5: error: ‘uint64_t’ does not name a type
>    92 |     uint64_t narSize = 0; // 0 = unknown
> 	  |     ^~~~~~~~
> ./nix/libstore/store-api.hh:9:1: note: ‘uint64_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding
> ‘#include <cstdint>’
> 	8 | #include <memory>
>   +++ |+#include <cstdint>
> 	9 | 

I have been able to reproduce the issue locally on Debian building guix
1.4.0 with some patches, mostly to disable various test suites and a few
guix-daemon security fixes).

I suspect this is not specific to how guix or gcc is packaged in Debian,
but it is possible!

I have not *yet* tested on a more recent guix based on a git snapshot.

live well,
  vagrant