diff --git a/main/nfdump/APKBUILD b/main/nfdump/APKBUILD index e9f544dd719..b6346ab1aa9 100644 --- a/main/nfdump/APKBUILD +++ b/main/nfdump/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Leonardo Arena # Maintainer: Natanael Copa pkgname=nfdump -pkgver=1.7.3 +pkgver=1.7.4 pkgrel=0 pkgdesc="Tools to collect and process netflow data" url="https://github.com/phaag/nfdump" @@ -20,6 +20,7 @@ subpackages=" sfcapd-openrc " source="$pkgname-$pkgver.tar.gz::https://github.com/phaag/nfdump/archive/v$pkgver.tar.gz + gcc14.patch nfcapd.confd nfcapd.initd sfcapd.confd @@ -38,7 +39,7 @@ prepare() { build() { # setresgid - CFLAGS="$CFLAGS -D_GNU_SOURCE -fpermissive" \ + CFLAGS="$CFLAGS -D_GNU_SOURCE" \ ./configure \ --build=$CBUILD \ --host=$CHOST \ @@ -54,7 +55,7 @@ build() { } check() { - make check || { + make -j1 check || { cat src/test/test-suite.log return 1 } @@ -89,7 +90,8 @@ sfcapd() { } sha512sums=" -588459558a2831db679d32b0f3da5321bae04b9519b5f4f493ca32521afd87b1eb075faabd97a9d26b095e14e89685c589b2a563280a70e2202bda8b5cb88884 nfdump-1.7.3.tar.gz +be65aeee9b982b30633102b3ca0f84eab280ca4fda4544be458a2387d051e62517127a2625bbc4329a844550a613df67f5015cc5a90a8e4b6a8c65d045650ee2 nfdump-1.7.4.tar.gz +8156a485bfb0c2ecfd92e87d99b89786f760367ab03ed73f6a749d88ae8e9c116f2522332eb1aec03c1c6050d987c0ba8e9b28d2934a563f4999f12d0672a79a gcc14.patch fcb467f819f2b73ac0e13de6de4d6c94cafd3866a7a56685d5d4a048fa975135299655e896ff8370c8c5061d03ab38644623f8be455c08dfe5f630f152820148 nfcapd.confd 97e432e884dd1cc8f27c2d7398bb0320164d46dea06c64ad72fa385d190998b3d62356634962f42652daf6e31f237baa2f3f3efad47c3fc38cc6bea799db61cc nfcapd.initd abe594a95a9320bec1d6ee6af6b75cd4d176526d4b10d07aa7ed79fc292b51c341339ba8e1e468df9ec2aae138b1dd66e3a291921938217835ac33819da9d153 sfcapd.confd diff --git a/main/nfdump/gcc14.patch b/main/nfdump/gcc14.patch new file mode 100644 index 00000000000..423a73cd3cd --- /dev/null +++ b/main/nfdump/gcc14.patch @@ -0,0 +1,166 @@ +From 5e08f546877be781bff279ca45981c844eb85f50 Mon Sep 17 00:00:00 2001 +From: Peter Haag +Date: Thu, 22 Aug 2024 21:38:53 +0200 +Subject: [PATCH] Fix #507 - gcc-14 issues with rrd version 1.9.x + +--- + configure.ac | 30 ++++++++++++++++++++++-------- + src/nfsen/nftrack_rrd.c | 22 ++++++++++++++-------- + src/nfsen/profile.c | 10 ++++++++-- + 3 files changed, 44 insertions(+), 18 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 0d7b54a2..bf231daf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -206,6 +206,8 @@ cat >>config.h <<_ACEOF + #define HAVE_LIBRRD 1 + _ACEOF + RRD_LIBS="-lrrd" ++saved_LIBS=$LIBS ++LIBS="${LIBS} -lrrd" + AC_SUBST(RRD_LIBS) + ] + , AC_MSG_ERROR(Can not link librrd. Please specify --with-rrdpath=.. configure failed! )) +@@ -215,17 +217,29 @@ AC_SUBST(RRD_LIBS) + else + AC_MSG_ERROR(Required rrd.h header file not found!) + fi +- AC_RUN_IFELSE( +- [ AC_LANG_PROGRAM( +- [[ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include ++ #include + #include +- ]], +- [[ +- rrd_value_t d; ++ ++ int main(int argc, char **argv) { ++ ++ char *s = rrd_strversion(); ++ if ( s != NULL && strlen(s) == 5 ) { ++ if ( s[0] == '1' && s[1] == '.' ) { ++ int ver = s[2] - 0x30; ++ if ( argc > 1 ) printf("%d\n", ver); ++ } ++ } else { ++ exit(255); ++ } ++ return 0; ++ } + ]]) +- ],, AC_MSG_ERROR(Can not load rrd library. Not in loader search path! )) +- ++ ],rrdversion=$(./conftest$EXEEXT print 2>&1) ++ LIBS=$saved_LIBS ++ AC_DEFINE_UNQUOTED(HAVE_RRDVERSION, $rrdversion, [ ]) ++ , AC_MSG_ERROR(Can not load rrd library. Not in loader search path! )) + ] + , + build_nfprofile="no" +diff --git a/src/nfsen/nftrack_rrd.c b/src/nfsen/nftrack_rrd.c +index 52512d96..2f81a199 100644 +--- a/src/nfsen/nftrack_rrd.c ++++ b/src/nfsen/nftrack_rrd.c +@@ -48,6 +48,12 @@ + #include "rrd.h" + #include "util.h" + ++#if HAVE_RRDVERSION > 8 ++#define rrdchar const char ++#else ++#define rrdchar char ++#endif ++ + #define BUFF_CHECK(num, buffsize) \ + if ((num) >= (buffsize)) { \ + fprintf(stderr, "No enough space to create RRD arg\n"); \ +@@ -153,7 +159,7 @@ static void CreateRRDB(char *filename, time_t when) { + */ + + rrd_clear_error(); +- if ((i = rrd_create(argc, rrd_arg))) { ++ if ((i = rrd_create(argc, (rrdchar **)rrd_arg))) { + fprintf(stderr, "Create DB Error: %ld %s\n", i, rrd_get_error()); + } + +@@ -329,12 +335,12 @@ int RRD_StoreDataRow(char *path, char *iso_time, data_row *row) { + optind = 0; + opterr = 0; + rrd_clear_error(); +- if ((i = rrd_update(argc, rrd_arg))) { ++ if ((i = rrd_update(argc, (rrdchar **)rrd_arg))) { + fprintf(stderr, "RRD: %s Insert Error: %d %s\n", rrd_filename, i, rrd_get_error()); + } + } // for all 64 rrd files +- } // for every type flows - packets - bytes +- } // for every protocol TCP - UDP ++ } // for every type flows - packets - bytes ++ } // for every protocol TCP - UDP + + return 1; + } // End of RRD_StoreDataRow +@@ -423,7 +429,7 @@ data_row *RRD_GetDataRow(char *path, time_t when) { + optind = 0; + opterr = 0; + rrd_clear_error(); +- if ((ret = rrd_fetch(argc, rrd_arg, &when, &when, &step, &ds_cnt, &ds_namv, &data))) { ++ if ((ret = rrd_fetch(argc, (rrdchar **)rrd_arg, &when, &when, &step, &ds_cnt, &ds_namv, &data))) { + fprintf(stderr, "RRD: %s Fetch Error: %d %s\n", rrd_filename, ret, rrd_get_error()); + } + if (ds_cnt != 1024) { +@@ -442,8 +448,8 @@ data_row *RRD_GetDataRow(char *path, time_t when) { + free(data); + + } // for all 64 rrd files +- } // for every type flows - packets - bytes +- } // for every protocol TCP - UDP ++ } // for every type flows - packets - bytes ++ } // for every protocol TCP - UDP + + return row; + +@@ -474,7 +480,7 @@ time_t RRD_LastUpdate(char *path) { + rrd_arg[argc++] = rrd_filename; + rrd_arg[argc] = NULL; + +- when = rrd_last(argc, rrd_arg); ++ when = rrd_last(argc, (rrdchar **)rrd_arg); + + return when; + +diff --git a/src/nfsen/profile.c b/src/nfsen/profile.c +index 59fbdce9..6b8d8462 100644 +--- a/src/nfsen/profile.c ++++ b/src/nfsen/profile.c +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2009-2023, Peter Haag ++ * Copyright (c) 2009-2024, Peter Haag + * Copyright (c) 2004-2008, SWITCH - Teleinformatikdienste fuer Lehre und Forschung + * All rights reserved. + * +@@ -59,6 +59,12 @@ extern char influxdb_url[1024]; + static char influxdb_measurement[] = "nfsen_stats"; + #endif + ++#if HAVE_RRDVERSION > 8 ++#define rrdchar const char ++#else ++#define rrdchar char ++#endif ++ + /* imported vars */ + extern char yyerror_buff[256]; + +@@ -449,7 +455,7 @@ void UpdateRRD(time_t tslot, profile_channel_info_t *channel) { + opterr = 0; + rrd_clear_error(); + int i = 0; +- if ((i = rrd_update(argc, rrd_arg)) != 0) { ++ if ((i = rrd_update(argc, (rrdchar **)rrd_arg)) != 0) { + LogError("RRD: %s Insert Error: %d %s\n", channel->rrdfile, i, rrd_get_error()); + } +