commit: 0af61fd360215359d6c10edbd941cf7800af869b Author: NHOrus <jy6x2b32pie9 <AT> yahoo <DOT> com> AuthorDate: Sat Feb 8 08:03:49 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Mon Feb 10 08:47:19 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0af61fd3
net-analyzer/ippl: update EAPI 7 -> 8, fix musl build, Modern C Porting Autoreconf configure for "compiler can't create executables". Missing headers, different header and mass rename of global log facilty to prevent faulty shadowing of musl-defined log variable. Closes: https://bugs.gentoo.org/875665 Closes: https://bugs.gentoo.org/731184 Closes: https://bugs.gentoo.org/716916 Signed-off-by: NHOrus <jy6x2b32pie9 <AT> yahoo.com> Closes: https://github.com/gentoo/gentoo/pull/40486 Signed-off-by: Sam James <sam <AT> gentoo.org> net-analyzer/ippl/files/ippl-1.4.14-musl.patch | 301 +++++++++++++++++++++++++ net-analyzer/ippl/ippl-1.4.14-r7.ebuild | 53 +++++ 2 files changed, 354 insertions(+) diff --git a/net-analyzer/ippl/files/ippl-1.4.14-musl.patch b/net-analyzer/ippl/files/ippl-1.4.14-musl.patch new file mode 100644 index 000000000000..44596aac3b4a --- /dev/null +++ b/net-analyzer/ippl/files/ippl-1.4.14-musl.patch @@ -0,0 +1,301 @@ +Add missing includes. For some non-POSIX integer types and open() +Rename global logging facility so it won't try to shadow musl-provided symbol +and cause build failures +udphdr union has two variants - RFC and BSD flavors, glibc uses union, +musl uses BSD flavor in netinet/udp.h with linux/udp.h for RFC flavor. +Switched header to linux. +https://bugs.gentoo.org/716916 +https://bugs.gentoo.org/731184 +--- a/Source/defines.h ++++ b/Source/defines.h +@@ -62,6 +62,7 @@ + + /* Useful types */ + #ifndef _I386_TYPES_H ++#include <sys/types.h> + typedef u_int32_t __u32; + typedef u_int16_t __u16; + typedef u_int8_t __u8; +--- a/Source/pidfile.c ++++ b/Source/pidfile.c +@@ -31,6 +31,7 @@ + #include <string.h> + #include <errno.h> + #include <signal.h> ++#include <fcntl.h> + + /* read_pid + * +--- a/Source/configuration.c ++++ b/Source/configuration.c +@@ -39,11 +39,11 @@ + + FILE *open_configuration(char *name) { + FILE *configfile; +- extern struct loginfo log; ++ extern struct loginfo local_log; + + configfile = fopen(name, "r"); + if (configfile == NULL) { +- log.log(log.level_or_fd, "Cannot open configuration file %s.\n", name); ++ local_log.log(local_log.level_or_fd, "Cannot open configuration file %s.\n", name); + exit(1); + } + return configfile; +--- a/Source/icmp.c ++++ b/Source/icmp.c +@@ -46,7 +46,7 @@ + int icmp_socket; + + struct loginfo icmp_log; +-extern struct loginfo log; ++extern struct loginfo local_log; + extern unsigned short resolve_protocols; + + /* +@@ -299,7 +299,7 @@ + icmp_socket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); + if (icmp_socket <= 0) { + int error = errno; +- log.log(log.level_or_fd, "FATAL: Unable to open icmp raw socket\nERROR No: %d\nERROR : %s", error, strerror(error)); ++ local_log.log(local_log.level_or_fd, "FATAL: Unable to open icmp raw socket\nERROR No: %d\nERROR : %s", error, strerror(error)); + exit(1); + } + +@@ -311,7 +311,7 @@ + + for(;;) { + if (read(icmp_socket, (__u8 *) &pkt, ICMP_CAPTURE_LENGTH) == -1) { +- log.log(log.level_or_fd, "FATAL: Unable to read icmp raw socket"); ++ local_log.log(local_log.level_or_fd, "FATAL: Unable to read icmp raw socket"); + exit(1); + } + +--- a/Source/log.c ++++ b/Source/log.c +@@ -32,7 +32,7 @@ + + #include "log.h" + +-extern struct loginfo log; ++extern struct loginfo local_log; + + /* Mutex either for stdout or for a file */ + pthread_mutex_t log_mutex = PTHREAD_MUTEX_INITIALIZER; +@@ -193,7 +193,7 @@ + + *fd = open((const char *) filename, O_WRONLY | O_APPEND | O_CREAT, 0640); + if (*fd == 0) { +- log.log(log.level_or_fd, "Can't open log file %s.", filename); ++ local_log.log(local_log.level_or_fd, "Can't open log file %s.", filename); + } + } + +--- a/Source/main.c ++++ b/Source/main.c +@@ -54,7 +54,7 @@ + #endif + + /* Logging mechanism */ +-struct loginfo log; ++struct loginfo local_log; + + /* Do we have to run as a daemon? */ + int run_as_daemon = TRUE; +@@ -127,17 +127,17 @@ + + account = getpwnam(used_user); + if (!account) { +- log.log(log.level_or_fd, "WARNING: I cannot find the \"%s\" account. Not spawning threads.", used_user); ++ local_log.log(local_log.level_or_fd, "WARNING: I cannot find the \"%s\" account. Not spawning threads.", used_user); + log_protocols = NONE; + return; + } + + if (!strcmp(used_user, "root")) { +- log.log(log.level_or_fd, "WARNING: Using root account to run threads!"); ++ local_log.log(local_log.level_or_fd, "WARNING: Using root account to run threads!"); + } + + if (log_protocols == NONE) { +- log.log(log.level_or_fd, "WARNING: Nothing to log."); ++ local_log.log(local_log.level_or_fd, "WARNING: Nothing to log."); + return; + } + +@@ -309,7 +309,7 @@ + + /* Check PID */ + if (check_pid(PID_FILE)) { +- log.log(log.level_or_fd, "Already running. Exiting..."); ++ local_log.log(local_log.level_or_fd, "Already running. Exiting..."); + exit(1); + } + +@@ -323,7 +323,7 @@ + + /* Write PID file */ + if (!write_pid(PID_FILE)) { +- log.log(log.level_or_fd, "Can't write pid.\n"); ++ local_log.log(local_log.level_or_fd, "Can't write pid.\n"); + exit(1); + } + +@@ -360,7 +360,7 @@ + (void) remove_pid(PID_FILE); + } + +- log.log(log.level_or_fd, "IP Protocols Logger: stopped (signal %d).", sig); ++ local_log.log(local_log.level_or_fd, "IP Protocols Logger: stopped (signal %d).", sig); + + exit(0); + } +@@ -372,8 +372,8 @@ + */ + void sighup(int sig) { + // DEPRECATED - reload_configuration(); +- // log.log(log.level_or_fd, "IP Protocols Logger: reloaded configuration."); +- log.log(log.level_or_fd, "IP Protocols Logger: reload configuration is unsupported."); ++ // local_log.log(local_log.level_or_fd, "IP Protocols Logger: reloaded configuration."); ++ local_log.log(local_log.level_or_fd, "IP Protocols Logger: reload configuration is unsupported."); + die(sig); + signal(SIGHUP, sighup); + } +@@ -412,15 +412,15 @@ + if (configuration_file == NULL) + configuration_file = strdup(CONFIGURATION_FILE); + +- init_loginfo(&log); +- log.open(&log.level_or_fd, log.file); ++ init_loginfo(&local_log); ++ local_log.open(&local_log.level_or_fd, local_log.file); + + if (run_as_daemon) { + go_background(); + } + + start_all_threads(); +- log.log(log.level_or_fd, "IP Protocols Logger: started."); ++ local_log.log(local_log.level_or_fd, "IP Protocols Logger: started."); + + for(;;) { + sleep(dns_expire); +--- a/Source/netutils.c ++++ b/Source/netutils.c +@@ -34,7 +34,7 @@ + #include "netutils.h" + #include "log.h" + +-extern struct loginfo log; ++extern struct loginfo local_log; + + /* Mutexes */ + pthread_mutex_t service_mutex = PTHREAD_MUTEX_INITIALIZER; +@@ -96,7 +96,7 @@ + pthread_mutex_unlock(&dns_mutex); + + #ifdef CACHE_DEBUG +- log.log(log.level_or_fd, "DEBUG cache: cleared %d entries", dbg_freed); ++ local_log.log(local_log.level_or_fd, "DEBUG cache: cleared %d entries", dbg_freed); + #endif + } + +@@ -121,7 +121,7 @@ + + #ifdef CACHE_DEBUG + if (dbg_calls % DUMP_EVERY == 0) +- log.log(log.level_or_fd, "DEBUG cache: %d calls - %d misses", dbg_calls, dbg_missed); ++ local_log.log(local_log.level_or_fd, "DEBUG cache: %d calls - %d misses", dbg_calls, dbg_missed); + + dbg_calls++; + #endif +@@ -165,8 +165,8 @@ + #endif + res = perform_lookup(host, in); + #ifdef CACHE_DEBUG +- log.log(log.level_or_fd, "DEBUG cache: result of lookup - %s", host); +- log.log(log.level_or_fd, "DEBUG cache: replacing (%d; %d; %d; %s)", key, table[key].ip, table[key].dirty, table[key].name); ++ local_log.log(local_log.level_or_fd, "DEBUG cache: result of lookup - %s", host); ++ local_log.log(local_log.level_or_fd, "DEBUG cache: replacing (%d; %d; %d; %s)", key, table[key].ip, table[key].dirty, table[key].name); + #endif + /* Now host contains the correct value; store it in the table */ + table[key].ip = in; +--- a/Source/tcp.c ++++ b/Source/tcp.c +@@ -51,7 +51,7 @@ + int tcp_socket; + + struct loginfo tcp_log; +-extern struct loginfo log; ++extern struct loginfo local_log; + extern unsigned short resolve_protocols; + extern unsigned short portresolve_protocols; + +@@ -262,7 +262,7 @@ + tcp_socket = socket(AF_INET, SOCK_RAW, IPPROTO_TCP); + if (tcp_socket <= 0) { + int error = errno; +- log.log(log.level_or_fd, "FATAL: Unable to open tcp raw socket\nERROR No: %d\nERROR : %s", error, strerror(error)); ++ local_log.log(local_log.level_or_fd, "FATAL: Unable to open tcp raw socket\nERROR No: %d\nERROR : %s", error, strerror(error)); + exit(1); + } + +@@ -274,7 +274,7 @@ + + for(;;) { + if (read(tcp_socket, (__u8 *) &pkt, TCP_CAPTURE_LENGTH) == -1) { +- log.log(log.level_or_fd, "FATAL: Unable to read tcp raw socket"); ++ local_log.log(local_log.level_or_fd, "FATAL: Unable to read tcp raw socket"); + exit(1); + } + +--- a/Source/ippl.y ++++ b/Source/ippl.y +@@ -535,7 +535,7 @@ + */ + + void print_error(char *s, int l) { +- extern struct loginfo log; ++ extern struct loginfo local_log; + +- log.log(log.level_or_fd, "CFG: Parse error line %d: %s",l,s); ++ local_log.log(local_log.level_or_fd, "CFG: Parse error line %d: %s",l,s); + } +--- a/Source/udp.c ++++ b/Source/udp.c +@@ -21,7 +21,7 @@ + #include <netinet/in.h> + #include <arpa/inet.h> + #include <netinet/ip.h> +-#include <netinet/udp.h> ++#include <linux/udp.h> + #include <sys/types.h> + #include <sys/socket.h> + #include <netdb.h> +@@ -48,7 +48,7 @@ + extern unsigned short resolve_protocols; + + struct loginfo udp_log; +-extern struct loginfo log; ++extern struct loginfo local_log; + + /* + * Structure of a UDP packet +@@ -141,7 +141,7 @@ + udp_socket = socket(AF_INET, SOCK_RAW, IPPROTO_UDP); + if (udp_socket <= 0) { + int error = errno; +- log.log(log.level_or_fd, "FATAL: Unable to open udp raw socket\nERROR No: %d\nERROR : %s", error, strerror(error)); ++ local_log.log(local_log.level_or_fd, "FATAL: Unable to open udp raw socket\nERROR No: %d\nERROR : %s", error, strerror(error)); + exit(1); + } + +@@ -153,7 +153,7 @@ + + for(;;) { + if (read(udp_socket, (__u8 *) &pkt, UDP_CAPTURE_LENGTH) == -1) { +- log.log(log.level_or_fd, "FATAL: Unable to read udp raw socket"); ++ local_log.log(local_log.level_or_fd, "FATAL: Unable to read udp raw socket"); + exit(1); + } + diff --git a/net-analyzer/ippl/ippl-1.4.14-r7.ebuild b/net-analyzer/ippl/ippl-1.4.14-r7.ebuild new file mode 100644 index 000000000000..ec2bb459a1c6 --- /dev/null +++ b/net-analyzer/ippl/ippl-1.4.14-r7.ebuild @@ -0,0 +1,53 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs autotools + +DESCRIPTION="A daemon which logs TCP/UDP/ICMP packets" +HOMEPAGE="http://pltplp.net/ippl/" +SRC_URI="http://pltplp.net/ippl/archive/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" + +BDEPEND=" + app-alternatives/yacc + app-alternatives/lex" +RDEPEND="acct-user/ippl" + +PATCHES=( + "${FILESDIR}"/${PN}-1.4.14-noportresolve.patch + "${FILESDIR}"/${PN}-1.4.14-manpage.patch + "${FILESDIR}"/${PN}-1.4.14-privilege-drop.patch + "${FILESDIR}"/${PN}-1.4.14-includes.patch + "${FILESDIR}"/${PN}-1.4.14-format-warnings.patch + # bug #351287 + "${FILESDIR}"/${PN}-1.4.14-fix-build-system.patch + "${FILESDIR}"/${PN}-1.4.14-musl.patch +) + +src_prepare() { + default + # bug https://bugs.gentoo.org/875665 + eautoreconf +} + +src_configure() { + tc-export CC + default +} + +src_install() { + dosbin Source/ippl + + insinto /etc + doins ippl.conf + + doman Docs/{ippl.8,ippl.conf.5} + dodoc BUGS CREDITS HISTORY README TODO + + newinitd "${FILESDIR}"/ippl.rc ippl +}
