Skip to content

nds2-client 0.16.8 fails to build on Ubuntu 24.04 (gcc 13)

Attempting to build for Ubuntu 24.04 "Noble Numbat", I got this:

[ 19%] Building CXX object src/libndscxx/module/CMakeFiles/ndscxx.dir/nds_buffer.cc.o
cd /build/nds2-client-0.16.8/obj-x86_64-linux-gnu/src/libndscxx/module && /usr/bin/c++ -DHAVE_CONFIG_H=1 -DNDS_EXPORT=1 -Dndscxx_EXPORTS -I/build/nds2-client-0.16.8/obj-x86_64-linux-gnu/src/libndscxx/module -I/build/nds2-client-0.16.8/src/libndscxx/module -I/build/nds2-client-0.16.8/obj-x86_64-linux-gnu/src/client -I/build/nds2-client-0.16.8/src/client -I/build/nds2-client-0.16.8/src/common -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/build/nds2-client-0.16.8=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -fdebug-prefix-map=/build/nds2-client-0.16.8=/usr/src/nds2-client-0.16.8-1.2+ubuntu24.04.0 -Wdate-time -D_FORTIFY_SOURCE=3 -O2 -g -DNDEBUG -fPIC -MD -MT src/libndscxx/module/CMakeFiles/ndscxx.dir/nds_buffer.cc.o -MF CMakeFiles/ndscxx.dir/nds_buffer.cc.o.d -o CMakeFiles/ndscxx.dir/nds_buffer.cc.o -c /build/nds2-client-0.16.8/src/libndscxx/module/nds_buffer.cc
In file included from /build/nds2-client-0.16.8/src/libndscxx/module/nds_buffer.hh:12,
                 from /build/nds2-client-0.16.8/src/libndscxx/module/nds_buffer.cc:3:
/build/nds2-client-0.16.8/src/libndscxx/module/nds_channel.hh:432:51: error: 'int16_t' is not a member of 'std'; did you mean 'int16_t'?
  432 |         struct channel_data_type_conversion< std::int16_t >
      |                                                   ^~~~~~~
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:155,
                 from /usr/include/stdlib.h:514,
                 from /usr/include/c++/13/cstdlib:79,
                 from /usr/include/c++/13/ext/string_conversions.h:43,
                 from /usr/include/c++/13/bits/basic_string.h:4109,
                 from /usr/include/c++/13/string:54,
                 from /usr/include/c++/13/bits/locale_classes.h:40,
                 from /usr/include/c++/13/bits/ios_base.h:41,
                 from /usr/include/c++/13/ios:44,
                 from /usr/include/c++/13/ostream:40,
                 from /usr/include/c++/13/iostream:41,
                 from /build/nds2-client-0.16.8/src/libndscxx/module/nds_buffer.cc:1:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:25:19: note: 'int16_t' declared here
   25 | typedef __int16_t int16_t;

https://hypatia.aei.mpg.de/lsc-amd64-noble/nds2-client_0.16.8-1.2+ubuntu24.04.0_amd64.--pbuilderlog

I've counted two occurrences of std::int16_t and three times std::uint16_t.

While the suggestion looks reasonable, would it be safe for older gcc versions?

Edited by Steffen Grunewald