From 149f35e57714d7403274c1a4c974a4cbc018b2e1 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 22 Feb 2026 12:14:58 +0100 Subject: [PATCH] netpbm: fix build for non-Glibc Closes: https://github.com/NixOS/nixpkgs/issues/479198 --- pkgs/by-name/ne/netpbm/c23.patch | 63 ++++++++++++++++++++++++++++++ pkgs/by-name/ne/netpbm/package.nix | 5 +++ 2 files changed, 68 insertions(+) create mode 100644 pkgs/by-name/ne/netpbm/c23.patch diff --git a/pkgs/by-name/ne/netpbm/c23.patch b/pkgs/by-name/ne/netpbm/c23.patch new file mode 100644 index 000000000000..c7712f0ba230 --- /dev/null +++ b/pkgs/by-name/ne/netpbm/c23.patch @@ -0,0 +1,63 @@ +From cde10364f1b59098fa2fbcacbdba88c7bbab4848 Mon Sep 17 00:00:00 2001 +From: Alyssa Ross +Date: Sun, 22 Feb 2026 12:06:15 +0100 +Subject: [PATCH] Remove function declarators without prototypes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These are no longer valid in C23 — they prototype the function as +taking no arguments, and now cause compilation errors when building +for non-Glibc systems. + +getenv is part of the C standard, so should be universally present, +and getopt is part of POSIX, so conflicting prototypes should be a +thing of the past. Similar changes have been made in upstream gnulib. +--- + converter/other/fiasco/getopt.c | 3 +-- + converter/other/fiasco/getopt.h | 7 ------- + 2 files changed, 1 insertion(+), 9 deletions(-) + +diff --git a/converter/other/fiasco/getopt.c b/converter/other/fiasco/getopt.c +index 65c206c3..565fac28 100644 +--- a/converter/other/fiasco/getopt.c ++++ b/converter/other/fiasco/getopt.c +@@ -44,6 +44,7 @@ + + #include + #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 +@@ -203,8 +204,6 @@ static char *posixly_correct; + /* Avoid depending on library functions or files + whose names are inconsistent. */ + +-char *getenv (); +- + static char * + my_index (str, chr) + const char *str; +diff --git a/converter/other/fiasco/getopt.h b/converter/other/fiasco/getopt.h +index 3c735e3d..08138da4 100644 +--- a/converter/other/fiasco/getopt.h ++++ b/converter/other/fiasco/getopt.h +@@ -95,14 +95,7 @@ struct option + #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. */ + 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, +-- +2.52.0 + diff --git a/pkgs/by-name/ne/netpbm/package.nix b/pkgs/by-name/ne/netpbm/package.nix index 224e95d900fd..1b2e72cf1fa9 100644 --- a/pkgs/by-name/ne/netpbm/package.nix +++ b/pkgs/by-name/ne/netpbm/package.nix @@ -35,6 +35,11 @@ stdenv.mkDerivation (finalAttrs: { sha256 = "sha256-WfmUfP/uc2k8qPki5Gh7WrTH6nIeyhACcn+F5GaFJCE="; }; + patches = [ + # Sent to maintainer 2026-02-22. + ./c23.patch + ]; + nativeBuildInputs = [ pkg-config flex