From 1d042be2d8cb16f0a2c8a74611433346d2950760 Mon Sep 17 00:00:00 2001 From: NHOrus Date: Mon, 10 Feb 2025 18:43:11 +0400 Subject: [PATCH] dev-util/fuzz: fix compilation on musl Missing include for string.h, glibc transitively included strcmp Removed different getopt definition for non-glibc situation: we are all living in POSIX-land (Somewhat. Hopefully. Mostly.) and definitions for getopt are the same on musl and glibc. Closes: https://bugs.gentoo.org/944111 Closes: https://bugs.gentoo.org/934059 Signed-off-by: NHOrus Closes: https://github.com/gentoo/gentoo/pull/40514 Signed-off-by: Sam James --- dev-util/fuzz/files/fuzz-0.6-musl.patch | 34 +++++++++++++++++++ ...{fuzz-0.6-r3.ebuild => fuzz-0.6-r4.ebuild} | 7 ++-- 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 dev-util/fuzz/files/fuzz-0.6-musl.patch rename dev-util/fuzz/{fuzz-0.6-r3.ebuild => fuzz-0.6-r4.ebuild} (84%) diff --git a/dev-util/fuzz/files/fuzz-0.6-musl.patch b/dev-util/fuzz/files/fuzz-0.6-musl.patch new file mode 100644 index 0000000000000..6783e008a8a6a --- /dev/null +++ b/dev-util/fuzz/files/fuzz-0.6-musl.patch @@ -0,0 +1,34 @@ +Fix missing include on musl, as strcmp is not transitively included +Remove arg-less declaration for non-glibc case: we have POSIX here, +getopt has same prototype in glibc and in musl +https://bugs.gentoo.org/934059 +https://bugs.gentoo.org/944111 +--- a/getopt.c ++++ b/getopt.c +@@ -43,6 +43,7 @@ + #endif + + #include ++#include + + /* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C +--- a/getopt.h ++++ b/getopt.h +@@ -99,14 +99,12 @@ + #define optional_argument 2 + + #if defined (__STDC__) && __STDC__ +-#ifdef __GNU_LIBRARY__ + /* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ ++/* But in Gentoo we have glibc and musl, and they have same POSIX ++ definition */ + extern int getopt (int argc, char *const *argv, const char *shortopts); +-#else /* not __GNU_LIBRARY__ */ +-extern int getopt (); +-#endif /* __GNU_LIBRARY__ */ + extern int getopt_long (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); + extern int getopt_long_only (int argc, char *const *argv, diff --git a/dev-util/fuzz/fuzz-0.6-r3.ebuild b/dev-util/fuzz/fuzz-0.6-r4.ebuild similarity index 84% rename from dev-util/fuzz/fuzz-0.6-r3.ebuild rename to dev-util/fuzz/fuzz-0.6-r4.ebuild index b5e826d55c104..152195a2ab695 100644 --- a/dev-util/fuzz/fuzz-0.6-r3.ebuild +++ b/dev-util/fuzz/fuzz-0.6-r4.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -21,7 +21,10 @@ KEYWORDS="~amd64 ~x86" DEPEND="sys-libs/readline:=" RDEPEND="${DEPEND}" -PATCHES=( "${WORKDIR}"/${DEB_P}-${DEB_PR}.diff ) +PATCHES=( + "${WORKDIR}"/"${DEB_P}-${DEB_PR}.diff" + "${FILESDIR}"/"${P}-musl.patch" +) src_prepare() { default