zip: Fix build with gcc-14

zip's configure fails to link this piece of test code:

  int main() { return closedir(opendir(".")); }

with GCC-14 because it now treats implicit declaration of function
as error, unline older GCC version where it was just a warning
and this test would build fine.

Remove 0002-unix.c-Do-not-redefine-DIR-as-FILE.patch which
is now unnecessary (MJ: this part wasn't applicable for kirkstone).

(From OE-Core rev: fd31dd1abc8199a1865801259e6f96b78a17d994)

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 3422411eb750c7e960b81676637cfb321dbadefb)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
Khem Raj
2024-10-25 21:51:54 +02:00
committed by Steve Sakoman
parent b16d844beb
commit 7aee2667d1
3 changed files with 46 additions and 36 deletions

View File

@@ -0,0 +1,45 @@
From 9db2f8cdbbc0dfb359d3b4e5dfe48c18652ce531 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 8 May 2024 19:02:46 -0700
Subject: [PATCH] configure: Include dirent.h for closedir/opendir APIs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
GCC-14 is strict about function prototypes and since the
testcase tries to compile/link opendir/closedir functions
without including signatures, it fails to build the test
due to missing signatures which come from dirent.h
Therefore include the needed system header and make it more
robust.
Fixes
a.c:2:21: error: implicit declaration of function closedir [-Wimplicit-function-declaration]
2 | int main() { return closedir(opendir(".")); }
| ^~~~~~~~
a.c:2:30: error: implicit declaration of function opendir [-Wimplicit-function-declaration]
2 | int main() { return closedir(opendir(".")); }
| ^~~~~~~
Upstream-Status: Inactive-Upstream
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
unix/configure | 1 +
1 file changed, 1 insertion(+)
diff --git a/unix/configure b/unix/configure
index f917086..1dd98c6 100644
--- a/unix/configure
+++ b/unix/configure
@@ -591,6 +591,7 @@ $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null
echo Check for directory libraries
cat > conftest.c << _EOF_
+#include <dirent.h>
int main() { return closedir(opendir(".")); }
_EOF_
--
2.45.0

View File

@@ -1,35 +0,0 @@
From 76f5bf3546d826dcbc03acbefcf0b10b972bf136 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 10 Aug 2022 17:19:38 -0700
Subject: [PATCH 2/2] unix.c: Do not redefine DIR as FILE
DIR is already provided on Linux via
/usr/include/dirent.h system header
Upstream-Status: Inactive-Upstream
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
unix/unix.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/unix/unix.c b/unix/unix.c
index ba87614..6e6f4d2 100644
--- a/unix/unix.c
+++ b/unix/unix.c
@@ -61,13 +61,11 @@ local time_t label_utim = 0;
/* Local functions */
local char *readd OF((DIR *));
-
#ifdef NO_DIR /* for AT&T 3B1 */
#include <sys/dir.h>
#ifndef dirent
# define dirent direct
#endif
-typedef FILE DIR;
/*
** Apparently originally by Rich Salz.
** Cleaned up and modified by James W. Birdsall.
--
2.37.1

View File

@@ -18,8 +18,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.
file://0002-configure-support-PIC-code-build.patch \
file://0001-configure-Use-CFLAGS-and-LDFLAGS-when-doing-link-tes.patch \
file://0001-configure-Specify-correct-function-signatures-and-de.patch \
file://0002-unix.c-Do-not-redefine-DIR-as-FILE.patch \
file://0001-unix-configure-use-_Static_assert-to-do-correct-dete.patch \
file://0001-configure-Include-dirent.h-for-closedir-opendir-APIs.patch \
"
UPSTREAM_VERSION_UNKNOWN = "1"