net-analyzer/net-snmp: fix configure w/ clang 16

Closes: https://bugs.gentoo.org/879715
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2022-11-19 19:29:23 +00:00
parent fae22e479e
commit be240aefac
2 changed files with 161 additions and 0 deletions

View File

@@ -0,0 +1,160 @@
https://bugs.gentoo.org/879715
https://github.com/net-snmp/net-snmp/commit/ddec5fa0ed1c76fde5eea9b974442faeec008526
https://github.com/net-snmp/net-snmp/commit/fec0f9ee59d5d89c28d70bb35fad29a0013d048c
https://github.com/net-snmp/net-snmp/commit/f362b354ce993d7394bf77db41bb27cfe8d1e307
From ddec5fa0ed1c76fde5eea9b974442faeec008526 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Thu, 17 Nov 2022 00:10:09 +0000
Subject: [PATCH] configure.d: fix compatibility with Clang 16
Clang 16 makes -Wimplicit-function-declaration and -Wimplicit-int an error by
default. Unfortunately, this can lead to misconfiguration or miscompilation of
software as configure tests may then return the wrong result.
We also fix -Wstrict-prototypes while here as it's easy to do and it prepares
us for C23.
For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki
[2], or the (new) c-std-porting mailing list [3].
[0] https://lwn.net/Articles/913505/
[1] https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213
[2] https://wiki.gentoo.org/wiki/Modern_C_porting
[3] hosted at lists.linux.dev.
Bug: https://bugs.gentoo.org/879715
Signed-off-by: Sam James <sam@gentoo.org>
[ bvanassche: removed two header file guards ]
--- a/configure
+++ b/configure
@@ -28483,7 +28483,14 @@ else
#ifdef HAVE_SYS_FS_TYPES_H
#include <sys/fs_types.h>
#endif
-int main ()
+#ifdef HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
+int main(void)
{
struct fs_data fsd;
/* Ultrix's statfs returns 1 for success,
@@ -31851,8 +31858,10 @@ else
#if HAVE_SYS_SYSCTL_H
# include <sys/sysctl.h>
#endif
+#include <stddef.h>
+#include <stdlib.h>
-int main(int argc, char **argv)
+int main(void)
{
int mib[2];
size_t len;
--- a/configure.d/config_os_functions
+++ b/configure.d/config_os_functions
@@ -216,7 +216,14 @@ AC_CACHE_VAL(
#ifdef HAVE_SYS_FS_TYPES_H
#include <sys/fs_types.h>
#endif
-int main ()
+#ifdef HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
+int main(void)
{
struct fs_data fsd;
/* Ultrix's statfs returns 1 for success,
--- a/configure.d/config_os_misc4
+++ b/configure.d/config_os_misc4
@@ -185,8 +185,10 @@ else
#if HAVE_SYS_SYSCTL_H
# include <sys/sysctl.h>
#endif
+#include <stddef.h>
+#include <stdlib.h>
-int main(int argc, char **argv)
+int main(void)
{
int mib[2];
size_t len;
From fec0f9ee59d5d89c28d70bb35fad29a0013d048c Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Thu, 17 Nov 2022 00:13:55 +0000
Subject: [PATCH] agent/mibgroup: fix -Wstrict-prototypes
Clang 16 warns on this. Fix it in preparation for C23.
Signed-off-by: Sam James <sam@gentoo.org>
[ bvanassche: minor formatting changes ]
--- a/agent/mibgroup/agentx/protocol.c
+++ b/agent/mibgroup/agentx/protocol.c
@@ -1895,7 +1895,7 @@ agentx_parse(netsnmp_session * session, netsnmp_pdu *pdu, u_char * data,
#ifdef TESTING
-testit(netsnmp_pdu *pdu1)
+void testit(netsnmp_pdu *pdu1)
{
char packet1[BUFSIZ];
char packet2[BUFSIZ];
@@ -1964,7 +1964,7 @@ testit(netsnmp_pdu *pdu1)
-main()
+int main(void)
{
netsnmp_pdu pdu1;
oid oid_buf[] = { 1, 3, 6, 1, 2, 1, 10 };
--- a/agent/mibgroup/header_complex.c
+++ b/agent/mibgroup/header_complex.c
@@ -569,7 +569,7 @@ header_complex_dump(struct header_complex_index *thestuff)
}
}
-main()
+int main(void)
{
oid oidsave[MAX_OID_LEN];
int len = MAX_OID_LEN, len2;
From f362b354ce993d7394bf77db41bb27cfe8d1e307 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Thu, 17 Nov 2022 00:20:04 +0000
Subject: [PATCH] agent: fix -Wincompatible-function-pointer-types
Clang 16 makes -Wincompatible-function-pointer-types an error by default.
Fixes the following error:
```
mibgroup/if-mib/data_access/interface_linux.c:159:23: error: incompatible function pointer types assigning to 'void (*)(char *, ...) __attribute__((noreturn))' from 'void (char *, ...)' [-Wincompatible-function-pointer-types]
pci_access->error = netsnmp_pci_error;
^ ~~~~~~~~~~~~~~~~~
1 error generated.
```
Signed-off-by: Sam James <sam@gentoo.org>
--- a/agent/mibgroup/if-mib/data_access/interface_linux.c
+++ b/agent/mibgroup/if-mib/data_access/interface_linux.c
@@ -31,7 +31,7 @@ static struct pci_access *pci_access;
/* Avoid letting libpci call exit(1) when no PCI bus is available. */
static int do_longjmp =0;
static jmp_buf err_buf;
-static void
+PCI_NONRET static void
netsnmp_pci_error(char *msg, ...)
{
va_list args;

View File

@@ -91,6 +91,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-5.8.1-mysqlclient.patch
"${FILESDIR}"/${PN}-5.9-MakeMaker.patch
"${FILESDIR}"/${PN}-5.9.2-fix-LDFLAGS.patch
"${FILESDIR}"/${P}-configure-clang16.patch
"${FILESDIR}"/${PN}-99999999-tinfo.patch
)