From 584da3b7cef1e40dc3e31e0112e2a995e5f145f3 Mon Sep 17 00:00:00 2001 From: FliegendeWurst <2012gdwu+github@posteo.de> Date: Tue, 26 Nov 2024 17:38:50 +0100 Subject: [PATCH] zip: include patch to fix build with GCC 14 Co-authored-by: Emily --- .../zi/zip/12-fix-build-with-gcc-14.patch | 56 +++++++++++++++++++ .../by-name/zi/zip/fix-memset-detection.patch | 15 ----- pkgs/by-name/zi/zip/package.nix | 12 ++-- 3 files changed, 64 insertions(+), 19 deletions(-) create mode 100644 pkgs/by-name/zi/zip/12-fix-build-with-gcc-14.patch delete mode 100644 pkgs/by-name/zi/zip/fix-memset-detection.patch diff --git a/pkgs/by-name/zi/zip/12-fix-build-with-gcc-14.patch b/pkgs/by-name/zi/zip/12-fix-build-with-gcc-14.patch new file mode 100644 index 000000000000..58d070a3c2b9 --- /dev/null +++ b/pkgs/by-name/zi/zip/12-fix-build-with-gcc-14.patch @@ -0,0 +1,56 @@ +From: Santiago Vila +Subject: Fix build with gcc-14 +Bug-Debian: https://bugs.debian.org/1075706 +X-Debian-version: 3.0-14 + +--- a/unix/configure ++++ b/unix/configure +@@ -514,14 +514,16 @@ + echo Check for $func + echo "int main(){ $func(); return 0; }" > conftest.c + $CC $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null +- [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_`echo $func | tr '[a-z]' '[A-Z]'`" ++# glibc-based systems do not need this ++# [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_`echo $func | tr '[a-z]' '[A-Z]'`" + done + + + echo Check for memset + echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c + $CC -o conftest conftest.c >/dev/null 2>/dev/null +-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM" ++# glibc-based systems do not need this ++# [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM" + + + echo Check for memmove +@@ -551,7 +553,8 @@ + } + _EOF_ + $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null +-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_ERRNO" ++# glibc-based systems do not need this ++# [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_ERRNO" + + + echo Check for directory libraries +@@ -567,7 +570,8 @@ + $CC -o conftest conftest.c -l$lib >/dev/null 2>/dev/null + [ $? -eq 0 ] && OPT=-l$lib && break + done +- if [ ${OPT} ]; then ++ # glibc-based systems do not need this ++ if true; then + LFLAGS2="${LFLAGS2} ${OPT}" + else + CFLAGS="${CFLAGS} -DNO_DIR" +@@ -629,7 +633,8 @@ + } + _EOF_ + $CC ${CFLAGS} -c conftest.c > /dev/null 2>/dev/null +-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_VALLOC" ++# glibc-based systems do not need this ++# [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_VALLOC" + + + echo Check for /usr/local/bin and /usr/local/man diff --git a/pkgs/by-name/zi/zip/fix-memset-detection.patch b/pkgs/by-name/zi/zip/fix-memset-detection.patch deleted file mode 100644 index 55bda33a2573..000000000000 --- a/pkgs/by-name/zi/zip/fix-memset-detection.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -ur a/unix/configure b/unix/configure ---- a/unix/configure 2008-06-19 21:32:20.000000000 -0600 -+++ b/unix/configure 2023-07-11 10:02:57.809867694 -0600 -@@ -519,7 +519,10 @@ - - - echo Check for memset --echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c -+cat > conftest.c << _EOF_ -+#include -+int main(){ char k; memset(&k,0,0); return 0; } -+_EOF_ - $CC -o conftest conftest.c >/dev/null 2>/dev/null - [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM" - diff --git a/pkgs/by-name/zi/zip/package.nix b/pkgs/by-name/zi/zip/package.nix index 19a16cd40a0e..85b81e0f309b 100644 --- a/pkgs/by-name/zi/zip/package.nix +++ b/pkgs/by-name/zi/zip/package.nix @@ -27,14 +27,18 @@ stdenv.mkDerivation rec { ]; patches = [ - # Trying to use `memset` without declaring it is flagged as an error with clang 16, causing - # the `configure` script to incorrectly define `ZMEM`. That causes the build to fail due to - # incompatible redeclarations of `memset`, `memcpy`, and `memcmp` in `zip.h`. - ./fix-memset-detection.patch # Implicit declaration of `closedir` and `opendir` cause dirent detection to fail with clang 16. ./fix-implicit-declarations.patch # Fixes forward declaration errors with timezone.c ./fix-time.h-not-included.patch + # Without this patch, we get a runtime failures with GCC 14 when building OpenJDK 8: + # + # zip I/O error: No such file or directory + # zip error: Could not create output file (was replacing the original zip file) + # make[2]: *** [CreateJars.gmk:659: /build/source/build/linux-x86_64-normal-server-release/images/src.zip] Error 1 + # + # Source: Debian + ./12-fix-build-with-gcc-14.patch (fetchpatch { url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/app-arch/zip/files/zip-3.0-pic.patch?id=d37d095fc7a2a9e4a8e904a7bf0f597fe99df85a"; hash = "sha256-OXgC9KqiOpH/o/bSabt3LqtoT/xifqfkvpLLPfPz+1c=";