From 93dae9b18ed2d53d06b091e6412de9585a4a62f3 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 7 Aug 2024 13:44:01 +0200
Subject: [PATCH] main/cramfs: fix build with gcc 14

---
 main/cramfs/APKBUILD    | 15 ++++++++++-----
 main/cramfs/gcc14.patch | 25 +++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 5 deletions(-)
 create mode 100644 main/cramfs/gcc14.patch

diff --git a/main/cramfs/APKBUILD b/main/cramfs/APKBUILD
index 00f206742016..7acacadcbe83 100644
--- a/main/cramfs/APKBUILD
+++ b/main/cramfs/APKBUILD
@@ -1,23 +1,28 @@
 # Maintainer: Natanael Copa <ncopa@alpinelinux.org>
 pkgname=cramfs
 pkgver=1.1
-pkgrel=6
+pkgrel=7
 pkgdesc="Linux filesystem designed to be simple, small, and to compress things well"
 arch="all"
 url="https://sourceforge.net/projects/cramfs/"
 license="GPL-2.0-or-later"
 makedepends="zlib-dev linux-headers"
 source="https://downloads.sourceforge.net/cramfs/cramfs-$pkgver.tar.gz
-	mkcramfs-include-sysmacros.patch"
+	mkcramfs-include-sysmacros.patch
+	gcc14.patch
+	"
 options="!check"
 
 build() {
-	make CFLAGS="$CFLAGS -D_GNU_SOURCE"
+	make
 }
 
 package() {
 	install -Dm755 -t "$pkgdir"/sbin mkcramfs cramfsck
 }
 
-sha512sums="6c18dbe32df57f7d132fb2a59a917ad381156ca1f720c1ad0997ca81c62e82fd43ebb0339c5a66d5b144a72ce5c7ae93596522fe2698259f2b68c31db26e3b63  cramfs-1.1.tar.gz
-4cb3b50f76181775634a4cdf5d2d06ea90978f7059e0390e97f58c58896afee76e04e1df4e44f254285d7c80a76c3b053c36aa03b2e4cb3b9621c8aacd21368b  mkcramfs-include-sysmacros.patch"
+sha512sums="
+6c18dbe32df57f7d132fb2a59a917ad381156ca1f720c1ad0997ca81c62e82fd43ebb0339c5a66d5b144a72ce5c7ae93596522fe2698259f2b68c31db26e3b63  cramfs-1.1.tar.gz
+4cb3b50f76181775634a4cdf5d2d06ea90978f7059e0390e97f58c58896afee76e04e1df4e44f254285d7c80a76c3b053c36aa03b2e4cb3b9621c8aacd21368b  mkcramfs-include-sysmacros.patch
+be7acef82b7b7dda2a60b123cae3e8ff03ead5432f13ab0256258c436d33a1882283d2c80b4ddd87debf9577e6f8fa6d92c903e72b6d9fc53a33c770968379be  gcc14.patch
+"
diff --git a/main/cramfs/gcc14.patch b/main/cramfs/gcc14.patch
new file mode 100644
index 000000000000..81009067133f
--- /dev/null
+++ b/main/cramfs/gcc14.patch
@@ -0,0 +1,25 @@
+diff --git a/mkcramfs.c b/mkcramfs.c
+index f9d12a2..a24e937 100644
+--- a/mkcramfs.c
++++ b/mkcramfs.c
+@@ -22,6 +22,7 @@
+  * If you change the disk format of cramfs, please update fs/cramfs/README.
+  */
+ 
++#define _GNU_SOURCE
+ #include <sys/types.h>
+ #include <sys/sysmacros.h>
+ #include <stdio.h>
+@@ -218,10 +219,9 @@ static void eliminate_doubles(struct entry *root, struct entry *orig) {
+  * We define our own sorting function instead of using alphasort which
+  * uses strcoll and changes ordering based on locale information.
+  */
+-static int cramsort (const void *a, const void *b)
++static int cramsort (const struct dirent **a, const struct dirent **b)
+ {
+-	return strcmp ((*(const struct dirent **) a)->d_name,
+-		       (*(const struct dirent **) b)->d_name);
++	return strcmp ((*a)->d_name, (*b)->d_name);
+ }
+ 
+ static unsigned int parse_directory(struct entry *root_entry, const char *name, struct entry **prev, loff_t *fslen_ub)
-- 
GitLab