Open adrians opened 9 months ago
nixpkgs build of direwolf
ran into this as well and fixed it with a patch similar: https://github.com/NixOS/nixpkgs/pull/247401/commits/d00a220853e808e2fcc9b951628645e779d56db6
Adding it here so theres more visibility of this issue across the community
Excerpt from CMakeLists.txt:
Some platforms provide their own strlcpy & strlcat. (BSD, MacOSX) Others don't so we provide our own. (Windows, most, but not all Linux) Here we detect whether these are provided by the OS and set a symbol so that: (1) libgps does not supply its own version. (2) we know whether we need to supply our own copy.
This was all working fine until these were added to the gnu c library 2.38. References:
This test is not detecting them for glibc 2.38 resulting in a conflict. Why? Are they declared in a different file or in some strange way?
This is how they are declared in include/string.h:
extern typeof (strlcpy) strlcpy; libc_hidden_proto (strlcpy) extern typeof (strlcat) strlcat; libc_hidden_proto (strlcat)
Apparently cmake does not recognize this style. Keep this here for BSD type systems where it behaves as expected. We will need to add a hack in direwolf.h to define these if glibc version >= 2.38.
I have not been able to test this yet when starting with the most recent Ubuntu. I couldn't find a package to install glibc 2.38 and when I tried to install from source, the system got trashed and became unusable.
NixOS makes no sense to me. I figured out how to effectively install applications (e.g. gcc) with "nix-shell -p ..." but could not figure how to get the required libraries.
Does anyone have some suggestions on how to set up a test OS with this new library version?
Does anyone have some suggestions on how to set up a test OS with this new library version?
@wb2osz I would do the following to get a build environment for direwolf with nix:
$ nix develop nixpkgs#direwolf # To get a new shell with the build environment for direwolf
$ ldd --version # To confirm youve got the right glibc
Then you can go about building direwolf per the normal direwolf build instructions in this repo.
If you'd like to know more about nix develop
checkout the manual for it here: https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-develop
One thing I did notice was that while this was broken on 1.6
and required the patch I mentioned https://github.com/NixOS/nixpkgs/commit/d00a220853e808e2fcc9b951628645e779d56db6
This breakage seems to have been fixed in the most recent version 1.7
:
driver direwolf $ mkdir build
driver direwolf $ cd build/
driver build $ cmake ..
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/zlzz2z48s7ry0hkl55xiqp5a73b4mzrg-gcc-wrapper-12.3.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/zlzz2z48s7ry0hkl55xiqp5a73b4mzrg-gcc-wrapper-12.3.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /run/current-system/sw/bin/git (found version "2.40.1")
-- Dire Wolf Version: 1.7.0-de293a1
-- Build type set to: Release
CMake system: Linux
-- Target architecture: x86_64
-- Use SSE SIMD instructions
-- Looking for strlcpy
-- Looking for strlcpy - found
-- Looking for strlcat
-- Looking for strlcat - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found hamlib: /nix/store/dpj7dnbkqljwg3gmcqzwrv1x966bkqb1-hamlib-4.5.5/lib/libhamlib.so
-- Found ALSA: /nix/store/4vpj5g0cprbybn6k29rzf1108az9a1ii-alsa-lib-1.2.9/lib/libasound.so (found version "1.2.9")
-- Found udev: /nix/store/vapnrxrw3b21c7ji61bmnbzl2cj1vl96-systemd-254.3/lib/libudev.so
-- Could NOT find Avahi (missing: AVAHI_COMMON_FOUND AVAHI_CLIENT_FOUND)
-- Configuring done (0.7s)
-- Generating done (0.0s)
-- Build files have been written to: /home/rherna/workspace/direwolf/build
driver build $ make
[ 0%] Building C object external/geotranz/CMakeFiles/geotranz.dir/error_string.c.o
[ 1%] Building C object external/geotranz/CMakeFiles/geotranz.dir/mgrs.c.o
[ 1%] Building C object external/geotranz/CMakeFiles/geotranz.dir/polarst.c.o
[ 2%] Building C object external/geotranz/CMakeFiles/geotranz.dir/tranmerc.c.o
[ 2%] Building C object external/geotranz/CMakeFiles/geotranz.dir/ups.c.o
[ 3%] Building C object external/geotranz/CMakeFiles/geotranz.dir/usng.c.o
[ 3%] Building C object external/geotranz/CMakeFiles/geotranz.dir/utm.c.o
[ 4%] Linking C static library libgeotranz.a
[ 4%] Built target geotranz
[ 5%] Building C object src/CMakeFiles/direwolf.dir/direwolf.c.o
[ 5%] Building C object src/CMakeFiles/direwolf.dir/ais.c.o
[ 6%] Building C object src/CMakeFiles/direwolf.dir/aprs_tt.c.o
[ 6%] Building C object src/CMakeFiles/direwolf.dir/audio_stats.c.o
[ 7%] Building C object src/CMakeFiles/direwolf.dir/ax25_link.c.o
/home/rherna/workspace/direwolf/src/ax25_link.c: In function ‘dl_connect_request’:
/home/rherna/workspace/direwolf/src/ax25_link.c:975:13: warning: ‘get_link_handle’ accessing 120 bytes in a region of size 12 [-Wstringop-overflow=]
975 | S = get_link_handle (E->addrs, E->num_addr, E->chan, E->client, ok_to_create);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_link.c:975:13: note: referencing argument 1 of type ‘char[10][12]’
/home/rherna/workspace/direwolf/src/ax25_link.c:745:21: note: in a call to function ‘get_link_handle’
745 | static ax25_dlsm_t *get_link_handle (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, int chan, int client, int create)
| ^~~~~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_link.c: In function ‘dl_disconnect_request’:
/home/rherna/workspace/direwolf/src/ax25_link.c:1067:13: warning: ‘get_link_handle’ accessing 120 bytes in a region of size 12 [-Wstringop-overflow=]
1067 | S = get_link_handle (E->addrs, E->num_addr, E->chan, E->client, ok_to_create);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_link.c:1067:13: note: referencing argument 1 of type ‘char[10][12]’
/home/rherna/workspace/direwolf/src/ax25_link.c:745:21: note: in a call to function ‘get_link_handle’
745 | static ax25_dlsm_t *get_link_handle (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, int chan, int client, int create)
| ^~~~~~~~~~~~~~~
In file included from /home/rherna/workspace/direwolf/src/ax25_link.c:180:
/home/rherna/workspace/direwolf/src/ax25_pad2.h:30:39: warning: ‘ax25_u_frame_debug’ accessing 120 bytes in a region of size 12 [-Wstringop-overflow=]
30 | #define ax25_u_frame(a,n,c,f,p,q,i,l) ax25_u_frame_debug(a,n,c,f,p,q,i,l,__FILE__,__LINE__)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_link.c:1098:29: note: in expansion of macro ‘ax25_u_frame’
1098 | packet_t pp15 = ax25_u_frame (S->addrs, S->num_addr, cr_cmd, frame_type_U_DISC, p1, nopid0, NULL, 0);
| ^~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_pad2.h:30:39: note: referencing argument 1 of type ‘char[10][12]’
30 | #define ax25_u_frame(a,n,c,f,p,q,i,l) ax25_u_frame_debug(a,n,c,f,p,q,i,l,__FILE__,__LINE__)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_link.c:1098:29: note: in expansion of macro ‘ax25_u_frame’
1098 | packet_t pp15 = ax25_u_frame (S->addrs, S->num_addr, cr_cmd, frame_type_U_DISC, p1, nopid0, NULL, 0);
| ^~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_pad2.h:23:10: note: in a call to function ‘ax25_u_frame_debug’
23 | packet_t ax25_u_frame_debug (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, ax25_frame_type_t ftype, int pf, int pid, unsigned char *pinfo, int info_len, char *src_file, int src_line);
| ^~~~~~~~~~~~~~~~~~
In function ‘t1_expiry’,
inlined from ‘dl_timer_expiry’ at /home/rherna/workspace/direwolf/src/ax25_link.c:5256:6:
/home/rherna/workspace/direwolf/src/ax25_pad2.h:30:39: warning: ‘ax25_u_frame_debug’ accessing 120 bytes in a region of size 12 [-Wstringop-overflow=]
30 | #define ax25_u_frame(a,n,c,f,p,q,i,l) ax25_u_frame_debug(a,n,c,f,p,q,i,l,__FILE__,__LINE__)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_link.c:5441:29: note: in expansion of macro ‘ax25_u_frame’
5441 | packet_t pp = ax25_u_frame (S->addrs, S->num_addr, cr, frame_type_U_DM, f, nopid, NULL, 0);
| ^~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_pad2.h:30:39: note: referencing argument 1 of type ‘char[10][12]’
30 | #define ax25_u_frame(a,n,c,f,p,q,i,l) ax25_u_frame_debug(a,n,c,f,p,q,i,l,__FILE__,__LINE__)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_link.c:5441:29: note: in expansion of macro ‘ax25_u_frame’
5441 | packet_t pp = ax25_u_frame (S->addrs, S->num_addr, cr, frame_type_U_DM, f, nopid, NULL, 0);
| ^~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/ax25_pad2.h: In function ‘dl_timer_expiry’:
/home/rherna/workspace/direwolf/src/ax25_pad2.h:23:10: note: in a call to function ‘ax25_u_frame_debug’
23 | packet_t ax25_u_frame_debug (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, ax25_frame_type_t ftype, int pf, int pid, unsigned char *pinfo, int info_len, char *src_file, int src_line);
| ^~~~~~~~~~~~~~~~~~
[ 7%] Building C object src/CMakeFiles/direwolf.dir/ax25_pad.c.o
[ 8%] Building C object src/CMakeFiles/direwolf.dir/ax25_pad2.c.o
[ 8%] Building C object src/CMakeFiles/direwolf.dir/beacon.c.o
[ 9%] Building C object src/CMakeFiles/direwolf.dir/config.c.o
[ 9%] Building C object src/CMakeFiles/direwolf.dir/decode_aprs.c.o
[ 10%] Building C object src/CMakeFiles/direwolf.dir/dedupe.c.o
[ 10%] Building C object src/CMakeFiles/direwolf.dir/demod_9600.c.o
[ 11%] Building C object src/CMakeFiles/direwolf.dir/demod_afsk.c.o
[ 11%] Building C object src/CMakeFiles/direwolf.dir/demod_psk.c.o
[ 12%] Building C object src/CMakeFiles/direwolf.dir/demod.c.o
[ 12%] Building C object src/CMakeFiles/direwolf.dir/digipeater.c.o
[ 13%] Building C object src/CMakeFiles/direwolf.dir/cdigipeater.c.o
[ 13%] Building C object src/CMakeFiles/direwolf.dir/dlq.c.o
[ 14%] Building C object src/CMakeFiles/direwolf.dir/dsp.c.o
[ 14%] Building C object src/CMakeFiles/direwolf.dir/dtime_now.c.o
[ 15%] Building C object src/CMakeFiles/direwolf.dir/dtmf.c.o
[ 15%] Building C object src/CMakeFiles/direwolf.dir/dwgps.c.o
[ 16%] Building C object src/CMakeFiles/direwolf.dir/dwsock.c.o
[ 16%] Building C object src/CMakeFiles/direwolf.dir/encode_aprs.c.o
[ 17%] Building C object src/CMakeFiles/direwolf.dir/fcs_calc.c.o
[ 17%] Building C object src/CMakeFiles/direwolf.dir/fx25_encode.c.o
[ 18%] Building C object src/CMakeFiles/direwolf.dir/fx25_extract.c.o
[ 18%] Building C object src/CMakeFiles/direwolf.dir/fx25_init.c.o
[ 19%] Building C object src/CMakeFiles/direwolf.dir/fx25_rec.c.o
[ 19%] Building C object src/CMakeFiles/direwolf.dir/fx25_send.c.o
[ 20%] Building C object src/CMakeFiles/direwolf.dir/fx25_auto.c.o
[ 20%] Building C object src/CMakeFiles/direwolf.dir/gen_tone.c.o
[ 21%] Building C object src/CMakeFiles/direwolf.dir/hdlc_rec.c.o
[ 21%] Building C object src/CMakeFiles/direwolf.dir/hdlc_rec2.c.o
[ 22%] Building C object src/CMakeFiles/direwolf.dir/hdlc_send.c.o
[ 22%] Building C object src/CMakeFiles/direwolf.dir/igate.c.o
[ 23%] Building C object src/CMakeFiles/direwolf.dir/il2p_codec.c.o
[ 23%] Building C object src/CMakeFiles/direwolf.dir/il2p_scramble.c.o
[ 24%] Building C object src/CMakeFiles/direwolf.dir/il2p_rec.c.o
[ 24%] Building C object src/CMakeFiles/direwolf.dir/il2p_payload.c.o
[ 25%] Building C object src/CMakeFiles/direwolf.dir/il2p_init.c.o
[ 25%] Building C object src/CMakeFiles/direwolf.dir/il2p_header.c.o
[ 26%] Building C object src/CMakeFiles/direwolf.dir/il2p_send.c.o
[ 26%] Building C object src/CMakeFiles/direwolf.dir/kiss_frame.c.o
[ 27%] Building C object src/CMakeFiles/direwolf.dir/kiss.c.o
[ 27%] Building C object src/CMakeFiles/direwolf.dir/kissserial.c.o
[ 28%] Building C object src/CMakeFiles/direwolf.dir/kissnet.c.o
[ 28%] Building C object src/CMakeFiles/direwolf.dir/latlong.c.o
[ 29%] Building C object src/CMakeFiles/direwolf.dir/log.c.o
[ 29%] Building C object src/CMakeFiles/direwolf.dir/morse.c.o
[ 30%] Building C object src/CMakeFiles/direwolf.dir/multi_modem.c.o
[ 30%] Building C object src/CMakeFiles/direwolf.dir/waypoint.c.o
[ 31%] Building C object src/CMakeFiles/direwolf.dir/serial_port.c.o
[ 31%] Building C object src/CMakeFiles/direwolf.dir/pfilter.c.o
[ 32%] Building C object src/CMakeFiles/direwolf.dir/ptt.c.o
[ 32%] Building C object src/CMakeFiles/direwolf.dir/recv.c.o
[ 33%] Building C object src/CMakeFiles/direwolf.dir/rrbb.c.o
[ 33%] Building C object src/CMakeFiles/direwolf.dir/server.c.o
[ 34%] Building C object src/CMakeFiles/direwolf.dir/symbols.c.o
[ 34%] Building C object src/CMakeFiles/direwolf.dir/telemetry.c.o
[ 35%] Building C object src/CMakeFiles/direwolf.dir/textcolor.c.o
[ 35%] Building C object src/CMakeFiles/direwolf.dir/tq.c.o
[ 36%] Building C object src/CMakeFiles/direwolf.dir/tt_text.c.o
[ 36%] Building C object src/CMakeFiles/direwolf.dir/tt_user.c.o
[ 37%] Building C object src/CMakeFiles/direwolf.dir/xid.c.o
[ 37%] Building C object src/CMakeFiles/direwolf.dir/xmit.c.o
[ 38%] Building C object src/CMakeFiles/direwolf.dir/dwgpsnmea.c.o
[ 38%] Building C object src/CMakeFiles/direwolf.dir/dwgpsd.c.o
[ 39%] Building C object src/CMakeFiles/direwolf.dir/mheard.c.o
[ 39%] Building C object src/CMakeFiles/direwolf.dir/audio.c.o
[ 40%] Building C object src/CMakeFiles/direwolf.dir/cm108.c.o
[ 40%] Linking C executable direwolf
[ 40%] Built target direwolf
[ 41%] Building C object src/CMakeFiles/decode_aprs.dir/decode_aprs.c.o
[ 41%] Building C object src/CMakeFiles/decode_aprs.dir/ais.c.o
[ 42%] Building C object src/CMakeFiles/decode_aprs.dir/kiss_frame.c.o
[ 42%] Building C object src/CMakeFiles/decode_aprs.dir/ax25_pad.c.o
[ 43%] Building C object src/CMakeFiles/decode_aprs.dir/dwgpsnmea.c.o
[ 43%] Building C object src/CMakeFiles/decode_aprs.dir/dwgps.c.o
[ 44%] Building C object src/CMakeFiles/decode_aprs.dir/dwgpsd.c.o
[ 44%] Building C object src/CMakeFiles/decode_aprs.dir/serial_port.c.o
[ 45%] Building C object src/CMakeFiles/decode_aprs.dir/symbols.c.o
[ 45%] Building C object src/CMakeFiles/decode_aprs.dir/textcolor.c.o
[ 46%] Building C object src/CMakeFiles/decode_aprs.dir/fcs_calc.c.o
[ 46%] Building C object src/CMakeFiles/decode_aprs.dir/latlong.c.o
[ 47%] Building C object src/CMakeFiles/decode_aprs.dir/log.c.o
[ 47%] Building C object src/CMakeFiles/decode_aprs.dir/telemetry.c.o
[ 48%] Building C object src/CMakeFiles/decode_aprs.dir/tt_text.c.o
[ 48%] Linking C executable decode_aprs
[ 48%] Built target decode_aprs
[ 49%] Building C object src/CMakeFiles/text2tt.dir/tt_text.c.o
[ 49%] Linking C executable text2tt
[ 49%] Built target text2tt
[ 49%] Building C object src/CMakeFiles/tt2text.dir/tt_text.c.o
[ 50%] Linking C executable tt2text
[ 50%] Built target tt2text
[ 51%] Building C object src/CMakeFiles/ll2utm.dir/ll2utm.c.o
[ 51%] Building C object src/CMakeFiles/ll2utm.dir/textcolor.c.o
[ 52%] Linking C executable ll2utm
[ 52%] Built target ll2utm
[ 53%] Building C object src/CMakeFiles/utm2ll.dir/utm2ll.c.o
[ 53%] Building C object src/CMakeFiles/utm2ll.dir/textcolor.c.o
[ 54%] Linking C executable utm2ll
[ 54%] Built target utm2ll
[ 54%] Building C object src/CMakeFiles/log2gpx.dir/log2gpx.c.o
[ 55%] Building C object src/CMakeFiles/log2gpx.dir/textcolor.c.o
[ 55%] Linking C executable log2gpx
[ 55%] Built target log2gpx
[ 56%] Building C object src/CMakeFiles/gen_packets.dir/gen_packets.c.o
[ 56%] Building C object src/CMakeFiles/gen_packets.dir/ax25_pad.c.o
[ 57%] Building C object src/CMakeFiles/gen_packets.dir/ax25_pad2.c.o
[ 57%] Building C object src/CMakeFiles/gen_packets.dir/fx25_encode.c.o
[ 58%] Building C object src/CMakeFiles/gen_packets.dir/fx25_extract.c.o
[ 58%] Building C object src/CMakeFiles/gen_packets.dir/fx25_init.c.o
[ 59%] Building C object src/CMakeFiles/gen_packets.dir/fx25_send.c.o
[ 59%] Building C object src/CMakeFiles/gen_packets.dir/hdlc_send.c.o
[ 60%] Building C object src/CMakeFiles/gen_packets.dir/fcs_calc.c.o
[ 60%] Building C object src/CMakeFiles/gen_packets.dir/gen_tone.c.o
[ 61%] Building C object src/CMakeFiles/gen_packets.dir/il2p_codec.c.o
[ 61%] Building C object src/CMakeFiles/gen_packets.dir/il2p_scramble.c.o
[ 62%] Building C object src/CMakeFiles/gen_packets.dir/il2p_payload.c.o
[ 62%] Building C object src/CMakeFiles/gen_packets.dir/il2p_init.c.o
[ 63%] Building C object src/CMakeFiles/gen_packets.dir/il2p_header.c.o
[ 63%] Building C object src/CMakeFiles/gen_packets.dir/il2p_send.c.o
[ 64%] Building C object src/CMakeFiles/gen_packets.dir/morse.c.o
[ 64%] Building C object src/CMakeFiles/gen_packets.dir/dtmf.c.o
[ 65%] Building C object src/CMakeFiles/gen_packets.dir/textcolor.c.o
[ 65%] Building C object src/CMakeFiles/gen_packets.dir/dsp.c.o
[ 66%] Linking C executable gen_packets
[ 66%] Built target gen_packets
[ 66%] Building C object src/CMakeFiles/atest.dir/atest.c.o
[ 67%] Building C object src/CMakeFiles/atest.dir/ais.c.o
[ 67%] Building C object src/CMakeFiles/atest.dir/demod.c.o
[ 68%] Building C object src/CMakeFiles/atest.dir/demod_afsk.c.o
[ 68%] Building C object src/CMakeFiles/atest.dir/demod_psk.c.o
[ 69%] Building C object src/CMakeFiles/atest.dir/demod_9600.c.o
[ 69%] Building C object src/CMakeFiles/atest.dir/dsp.c.o
[ 70%] Building C object src/CMakeFiles/atest.dir/fx25_extract.c.o
[ 70%] Building C object src/CMakeFiles/atest.dir/fx25_encode.c.o
[ 71%] Building C object src/CMakeFiles/atest.dir/fx25_init.c.o
[ 71%] Building C object src/CMakeFiles/atest.dir/fx25_rec.c.o
[ 72%] Building C object src/CMakeFiles/atest.dir/hdlc_rec.c.o
[ 72%] Building C object src/CMakeFiles/atest.dir/hdlc_rec2.c.o
[ 73%] Building C object src/CMakeFiles/atest.dir/il2p_codec.c.o
[ 73%] Building C object src/CMakeFiles/atest.dir/il2p_scramble.c.o
[ 74%] Building C object src/CMakeFiles/atest.dir/il2p_rec.c.o
[ 74%] Building C object src/CMakeFiles/atest.dir/il2p_payload.c.o
[ 75%] Building C object src/CMakeFiles/atest.dir/il2p_init.c.o
[ 75%] Building C object src/CMakeFiles/atest.dir/il2p_header.c.o
[ 76%] Building C object src/CMakeFiles/atest.dir/multi_modem.c.o
[ 76%] Building C object src/CMakeFiles/atest.dir/rrbb.c.o
[ 77%] Building C object src/CMakeFiles/atest.dir/fcs_calc.c.o
[ 77%] Building C object src/CMakeFiles/atest.dir/ax25_pad.c.o
[ 78%] Building C object src/CMakeFiles/atest.dir/ax25_pad2.c.o
[ 78%] Building C object src/CMakeFiles/atest.dir/decode_aprs.c.o
[ 79%] Building C object src/CMakeFiles/atest.dir/dwgpsnmea.c.o
[ 79%] Building C object src/CMakeFiles/atest.dir/dwgps.c.o
[ 80%] Building C object src/CMakeFiles/atest.dir/dwgpsd.c.o
[ 80%] Building C object src/CMakeFiles/atest.dir/serial_port.c.o
[ 81%] Building C object src/CMakeFiles/atest.dir/telemetry.c.o
[ 81%] Building C object src/CMakeFiles/atest.dir/dtime_now.c.o
[ 82%] Building C object src/CMakeFiles/atest.dir/latlong.c.o
[ 82%] Building C object src/CMakeFiles/atest.dir/symbols.c.o
[ 83%] Building C object src/CMakeFiles/atest.dir/tt_text.c.o
[ 83%] Building C object src/CMakeFiles/atest.dir/textcolor.c.o
[ 84%] Linking C executable atest
[ 84%] Built target atest
[ 84%] Building C object src/CMakeFiles/aclients.dir/aclients.c.o
[ 84%] Building C object src/CMakeFiles/aclients.dir/ax25_pad.c.o
[ 85%] Building C object src/CMakeFiles/aclients.dir/fcs_calc.c.o
[ 85%] Building C object src/CMakeFiles/aclients.dir/textcolor.c.o
[ 86%] Linking C executable aclients
[ 86%] Built target aclients
[ 86%] Building C object src/CMakeFiles/kissutil.dir/kissutil.c.o
[ 87%] Building C object src/CMakeFiles/kissutil.dir/kiss_frame.c.o
[ 87%] Building C object src/CMakeFiles/kissutil.dir/ax25_pad.c.o
[ 88%] Building C object src/CMakeFiles/kissutil.dir/fcs_calc.c.o
[ 88%] Building C object src/CMakeFiles/kissutil.dir/textcolor.c.o
[ 89%] Building C object src/CMakeFiles/kissutil.dir/serial_port.c.o
[ 89%] Building C object src/CMakeFiles/kissutil.dir/dtime_now.c.o
[ 90%] Building C object src/CMakeFiles/kissutil.dir/dwsock.c.o
[ 90%] Linking C executable kissutil
[ 90%] Built target kissutil
[ 91%] Building C object src/CMakeFiles/tnctest.dir/tnctest.c.o
/home/rherna/workspace/direwolf/src/tnctest.c: In function ‘main’:
/home/rherna/workspace/direwolf/src/tnctest.c:1250:68: warning: ‘%s’ directive output may be truncated writing up to 11 bytes into a region of size 10 [-Wformat-truncation=]
1250 | snprintf (cmd.hdr.call_from, sizeof(cmd.hdr.call_from), "%s", tnc_address[from]);
| ^~ ~~~~~~~~~~~~~~~~~
In file included from /nix/store/x8lqlydsxbrwvf6p7v18gws8kn1xl37f-glibc-2.38-23-dev/include/stdio.h:964,
from /home/rherna/workspace/direwolf/src/tnctest.c:74:
In function ‘snprintf’,
inlined from ‘tnc_send_data’ at /home/rherna/workspace/direwolf/src/tnctest.c:1250:4,
inlined from ‘main’ at /home/rherna/workspace/direwolf/src/tnctest.c:453:6:
/nix/store/x8lqlydsxbrwvf6p7v18gws8kn1xl37f-glibc-2.38-23-dev/include/bits/stdio2.h:54:10: note: ‘__builtin_snprintf’ output between 1 and 12 bytes into a destination of size 10
54 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 | __glibc_objsize (__s), __fmt,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 | __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~
/home/rherna/workspace/direwolf/src/tnctest.c: In function ‘main’:
/home/rherna/workspace/direwolf/src/tnctest.c:1251:64: warning: ‘%s’ directive output may be truncated writing up to 11 bytes into a region of size 10 [-Wformat-truncation=]
1251 | snprintf (cmd.hdr.call_to, sizeof(cmd.hdr.call_to), "%s", tnc_address[to]);
| ^~ ~~~~~~~~~~~~~~~
In function ‘snprintf’,
inlined from ‘tnc_send_data’ at /home/rherna/workspace/direwolf/src/tnctest.c:1251:4,
inlined from ‘main’ at /home/rherna/workspace/direwolf/src/tnctest.c:453:6:
/nix/store/x8lqlydsxbrwvf6p7v18gws8kn1xl37f-glibc-2.38-23-dev/include/bits/stdio2.h:54:10: note: ‘__builtin_snprintf’ output between 1 and 12 bytes into a destination of size 10
54 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 | __glibc_objsize (__s), __fmt,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 | __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~
[ 91%] Building C object src/CMakeFiles/tnctest.dir/textcolor.c.o
[ 92%] Building C object src/CMakeFiles/tnctest.dir/dtime_now.c.o
[ 92%] Building C object src/CMakeFiles/tnctest.dir/serial_port.c.o
[ 93%] Linking C executable tnctest
[ 93%] Built target tnctest
[ 93%] Building C object src/CMakeFiles/cm108.dir/cm108.c.o
[ 94%] Building C object src/CMakeFiles/cm108.dir/textcolor.c.o
[ 94%] Linking C executable cm108
[ 94%] Built target cm108
[ 94%] Building C object src/CMakeFiles/ttcalc.dir/ttcalc.c.o
[ 95%] Building C object src/CMakeFiles/ttcalc.dir/ax25_pad.c.o
[ 95%] Building C object src/CMakeFiles/ttcalc.dir/fcs_calc.c.o
[ 96%] Building C object src/CMakeFiles/ttcalc.dir/textcolor.c.o
[ 96%] Linking C executable ttcalc
[ 96%] Built target ttcalc
[ 96%] Building C object src/CMakeFiles/appserver.dir/appserver.c.o
[ 97%] Building C object src/CMakeFiles/appserver.dir/agwlib.c.o
[ 97%] Building C object src/CMakeFiles/appserver.dir/dwsock.c.o
[ 98%] Building C object src/CMakeFiles/appserver.dir/dtime_now.c.o
[ 98%] Building C object src/CMakeFiles/appserver.dir/ax25_pad.c.o
[ 99%] Building C object src/CMakeFiles/appserver.dir/fcs_calc.c.o
[ 99%] Building C object src/CMakeFiles/appserver.dir/textcolor.c.o
[100%] Linking C executable appserver
[100%] Built target appserver
@wb2osz This longer seems like an issue for me
Thank you for confirming that direwolf release 1.7 seems to be OK with glibc 2.38 on NixOS. I'm leaving this open until I can do some of my own testing.
I'm also confirming that release 1.7 works with glibc 2.38 on poky (yocto build system).
As per the release-announcement for glibc 2.38 (https://lists.gnu.org/archive/html/info-gnu/2023-07/msg00010.html) :
When doing Linux builds for release 1.6 using the updated system library, the
strlcat
/strlcpy
implementations from glibc clash with the implementations from this project (referenced insrc/direwolf.h
,external/misc/strlcat.c
andexternal/misc/strlcpy.c
).More precisely, when compiling
strlcat.c
, the compiler first saw the preprocessor-define fromsrc/direwolf.h:301
, tried redefining all instances ofstrlcpy
tostrlcpy_debug
, and then while resolving other include-directives started redefining thestrlcpy
references from glibc to point tostrlcpy_debug
.The error message reported by gcc was about
src/direwolf.h:301,302
, not explaining too much about the root cause:While for my purposes I've fixed this bug (the project now compiles under Linux, patch here), I'm also reporting it upstream to raise awareness about this issue (hopefully no-one else wastes time trying to understand the error message in this scenario).