net-analyzer/flow-tools: EAPI 8; fix modern C issues & LTO; fix config path

* EAPI 8

* Modern C porting
** Fix a C99 issue (missing 'config.h' include in lexer)
** Fix a C23 issue (mismatched function pointer types)
** Fix an LTO issue (yy* prefix clash, linker warning)

* Fix config location

  The upstream location was fixed in 6bccc64533fcc32597a4cc8de07fd031019ea2fd
  but we retained our --sysconfdir workaround with the bump to 0.68.6, which
  meant configs were installed to /etc/flow-tools/flow-tools/.

  Fix that and add a warning...

Closes: https://bugs.gentoo.org/785040
Closes: https://bugs.gentoo.org/851159
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2025-09-08 00:53:47 +01:00
parent a6f078de9e
commit a3001edf46
3 changed files with 106 additions and 15 deletions

View File

@@ -0,0 +1,41 @@
https://bugs.gentoo.org/945075
--- a/lib/ftstat.c
+++ b/lib/ftstat.c
@@ -831,11 +831,11 @@ struct jump {
struct typelookup {
char *name;
- void* (*f_new)();
- void* (*f_accum)();
- void* (*f_calc)();
- void* (*f_dump)();
- void* (*f_free)();
+ void* (*f_new)(struct ftstat_rpt *);
+ void* (*f_accum)(struct ftstat_rpt *, char *, struct fts3rec_offsets *);
+ void* (*f_calc)(struct ftstat_rpt *);
+ void* (*f_dump)(FILE *, struct ftio *, struct ftstat_rpt *);
+ void* (*f_free)(void *);
int allowed_fields; /* FT_STAT_FIELD_* */
int allowed_options;/* FT_STAT_OPT_* */
uint64_t xfields; /* FT_XFIELD_* */
--- a/src/acllex.l
+++ b/src/acllex.l
@@ -1,4 +1,5 @@
%{
+#include <ftconfig.h>
#include <ftlib.h>
#if HAVE_STRINGS_H
--- a/src/flow-print.c
+++ b/src/flow-print.c
@@ -89,9 +89,7 @@ struct jump format[] = {{format0}, {format1}, {format2},
void usage(void);
-int main(argc, argv)
-int argc;
-char **argv;
+int main(int argc, char **argv)
{
struct ftio ftio;
struct ftprof ftp;

View File

@@ -0,0 +1,31 @@
We get a linker warning otherwise from YYSTYPE changing.
--- a/lib/getdate.y
+++ b/lib/getdate.y
@@ -1,3 +1,5 @@
+%define api.prefix {getdate}
+
%{
/*
** Originally written by Steven M. Bellovin <smb@research.att.com> while
@@ -117,10 +119,6 @@ extern struct tm *localtime();
extern time_t get_date(char * p, struct timeb * now);
/*@=exportheader@*/
-#define yyparse getdate_yyparse
-#define yylex getdate_yylex
-#define yyerror getdate_yyerror
-
static int yyparse (void);
static int yylex (void);
static int yyerror(const char * s);
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,7 @@
noinst_HEADERS = flow-dscan.h pcap.h cflowd.h acl2.h
-BUILT_SOURCES = aclyacc.h
+BUILT_SOURCES = aclyacc.h acllex.c
AM_YFLAGS = -d
EXTRA_DIST = ftbuild.sh

View File

@@ -1,9 +1,9 @@
# Copyright 1999-2024 Gentoo Authors
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
inherit autotools
inherit autotools eapi9-ver
DESCRIPTION="library and programs to process reports from NetFlow data"
HOMEPAGE="https://github.com/5u623l20/flow-tools/"
@@ -19,39 +19,49 @@ RDEPEND="
acct-user/flows
sys-apps/tcp-wrappers
sys-libs/zlib
mysql? ( dev-db/mysql-connector-c:0= )
mysql? ( dev-db/mysql-connector-c:= )
postgres? ( dev-db/postgresql:* )
ssl? ( dev-libs/openssl:0= )
"
DEPEND="
${RDEPEND}
ssl? ( dev-libs/openssl:= )
"
DEPEND="${RDEPEND}"
BDEPEND="
app-text/docbook-sgml-utils
app-alternatives/yacc
app-alternatives/lex
sys-devel/bison
"
DOCS=( ChangeLog.old README README.fork SECURITY TODO TODO.old )
PATCHES=(
"${FILESDIR}"/${PN}-0.68.5.1-run.patch
"${FILESDIR}"/${PN}-0.68.5.1-openssl11.patch
"${FILESDIR}"/${PN}-0.68.5.1-fno-common.patch
"${FILESDIR}"/${PN}-0.68.6-mysql.patch
"${FILESDIR}"/${PN}-0.68.6-c99-c23.patch
"${FILESDIR}"/${PN}-0.68.6-lto.patch
)
src_prepare() {
default
sed -i -e 's|docbook-to-man|docbook2man|g' docs/Makefile.am || die
eautoreconf
}
src_configure() {
econf \
$(use_enable static-libs static) \
$(usex mysql --with-mysql '') \
$(usex postgres --with-postgresql=yes --with-postgresql=no) \
$(usex ssl --with-openssl '') \
--sysconfdir=/etc/flow-tools
# Needs bison specifically for LTO patch (for setting a prefix)
unset YACC
local myeconfargs=(
$(use_enable static-libs static)
# configure logic is buggy
$(usev mysql --with-mysql)
--with-postgresql=$(usex postgres yes no)
$(usev ssl --with-openssl)
)
econf "${myeconfargs[@]}"
}
src_install() {
@@ -74,3 +84,12 @@ src_install() {
find "${ED}" -name '*.la' -delete || die
}
pkg_postinst() {
if ver_replacing -lt 0.68.6-r2 ; then
ewarn "Config files have been moved bak to ${EPREFIX}/etc/flow-tools"
ewarn "after temporarily being in the wrong location of"
ewarn " ${EPREFIX}/etc/flow-tools/flow-tools"
ewarn "See bug #785040."
fi
}