commit:     1afb1f2f7dfb2e4c1588fcb084f9879f3494f111
Author:     Ben Kohler <bkohler <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 15 15:17:46 2023 +0000
Commit:     Ben Kohler <bkohler <AT> gentoo <DOT> org>
CommitDate: Thu Jun 15 15:17:46 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1afb1f2f

sys-fs/fatcat: new musl fix, replace old musl fix too

We previously had 1 musl patch for getopt usage, I'm replacing that with
one from an upstream PR [1], also adding a new patch from that upstream PR.

[1] https://github.com/Gregwar/fatcat/pull/34

Closes: https://bugs.gentoo.org/908541

Signed-off-by: Ben Kohler <bkohler <AT> gentoo.org>

 sys-fs/fatcat/fatcat-1.1.1.ebuild                  |   6 +-
 .../files/fatcat-1.1.1-musl-1.2.4-fixes.patch      | 107 +++++++++++++++++++++
 sys-fs/fatcat/files/fatcat-include-getopt.patch    |  11 ---
 3 files changed, 111 insertions(+), 13 deletions(-)

diff --git a/sys-fs/fatcat/fatcat-1.1.1.ebuild 
b/sys-fs/fatcat/fatcat-1.1.1.ebuild
index 1cbdeace786e..ac61be67b09a 100644
--- a/sys-fs/fatcat/fatcat-1.1.1.ebuild
+++ b/sys-fs/fatcat/fatcat-1.1.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2018-2022 Gentoo Authors
+# Copyright 2018-2023 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
@@ -17,7 +17,9 @@ IUSE=""
 DEPEND="!elibc_glibc? ( sys-libs/argp-standalone )"
 RDEPEND="${DEPEND}"
 
-PATCHES=( "${FILESDIR}"/fatcat-include-getopt.patch )
+PATCHES=(
+       "${FILESDIR}/fatcat-1.1.1-musl-1.2.4-fixes.patch"
+)
 
 src_install() {
        cmake_src_install

diff --git a/sys-fs/fatcat/files/fatcat-1.1.1-musl-1.2.4-fixes.patch 
b/sys-fs/fatcat/files/fatcat-1.1.1-musl-1.2.4-fixes.patch
new file mode 100644
index 000000000000..e01533fee306
--- /dev/null
+++ b/sys-fs/fatcat/files/fatcat-1.1.1-musl-1.2.4-fixes.patch
@@ -0,0 +1,107 @@
+From 12fdf46cb916b71ed8360250d50b9208684695c9 Mon Sep 17 00:00:00 2001
+From: Alex Kiernan <[email protected]>
+Date: Sun, 19 Jan 2020 16:03:21 +0000
+Subject: [PATCH 1/2] Use unistd.h not argp.h for all POSIX systems
+
+getopt(3) is found in unistd.h on all POSIX systems and we make no use
+of any of the GNU specific argp extensions. Include unistd.h directly to
+allow building with musl on linux, whilst retaining compatibility with
+glibc and other unices.
+
+Signed-off-by: Alex Kiernan <[email protected]>
+---
+ src/fatcat.cpp | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/src/fatcat.cpp b/src/fatcat.cpp
+index ce23ca0..b4427e4 100644
+--- a/src/fatcat.cpp
++++ b/src/fatcat.cpp
+@@ -1,14 +1,10 @@
+ #include <stdlib.h>
+-#include<string.h>
+-#ifdef __APPLE__
+-#include <unistd.h>
+-#else
++#include <string.h>
+ #ifdef __WIN__
+ #include <ctype.h>
+ #include "xgetopt/xgetopt.h"
+ #else
+-#include <argp.h>
+-#endif
++#include <unistd.h>
+ #endif
+ 
+ #include <stdio.h>
+
+From 29021747ac2e52a27013310a532439bfdf438c24 Mon Sep 17 00:00:00 2001
+From: Khem Raj <[email protected]>
+Date: Fri, 16 Dec 2022 18:54:55 -0800
+Subject: [PATCH 2/2] Enable 64bit off_t
+
+Ensure that off_t is always 64-bit by specifying -D_LARGEFILE_SOURCE
+-D_FILE_OFFSET_BITS=64 this will ensure that normal lseek() function is
+same as lseek64
+
+This helps compiling on latest musl where lseek64 and friends are not
+available
+
+Signed-off-by: Khem Raj <[email protected]>
+---
+ CMakeLists.txt         | 2 ++
+ src/core/FatSystem.cpp | 4 ++--
+ src/core/FatSystem.h   | 2 --
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d6a2649..4cdd1fb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -34,6 +34,8 @@ IF(DEFINE_WIN)
+       add_definitions(-D__WIN__)
+ ENDIF(DEFINE_WIN)
+ 
++add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64)
++
+ include_directories("${CMAKE_SOURCE_DIR}/src")
+ 
+ add_executable(fatcat "src/fatcat.cpp" ${ALL_SOURCES})
+diff --git a/src/core/FatSystem.cpp b/src/core/FatSystem.cpp
+index 79cda8c..1f52e82 100644
+--- a/src/core/FatSystem.cpp
++++ b/src/core/FatSystem.cpp
+@@ -90,7 +90,7 @@ int FatSystem::readData(unsigned long long address, char 
*buffer, int size)
+         cerr << "! Trying to read outside the disk" << endl;
+     }
+ 
+-    lseek64(fd, globalOffset+address, SEEK_SET);
++    lseek(fd, globalOffset+address, SEEK_SET);
+ 
+     int n;
+     int pos = 0;
+@@ -112,7 +112,7 @@ int FatSystem::writeData(unsigned long long address, const 
char *buffer, int siz
+         throw string("Trying to write data while write mode is disabled");
+     }
+ 
+-    lseek64(fd, globalOffset+address, SEEK_SET);
++    lseek(fd, globalOffset+address, SEEK_SET);
+ 
+     int n;
+     int pos = 0;
+diff --git a/src/core/FatSystem.h b/src/core/FatSystem.h
+index cd3c914..f9f2ca3 100644
+--- a/src/core/FatSystem.h
++++ b/src/core/FatSystem.h
+@@ -11,11 +11,9 @@
+ 
+ #ifdef __APPLE__
+ #define O_LARGEFILE 0
+-#define lseek64 lseek
+ #endif
+ #ifdef __WIN__
+ #define O_LARGEFILE 0
+-#define lseek64 lseek
+ #endif
+ using namespace std;
+ 

diff --git a/sys-fs/fatcat/files/fatcat-include-getopt.patch 
b/sys-fs/fatcat/files/fatcat-include-getopt.patch
deleted file mode 100644
index a9c9094eceb3..000000000000
--- a/sys-fs/fatcat/files/fatcat-include-getopt.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ur a/src/fatcat.cpp b/src/fatcat.cpp
---- a/src/fatcat.cpp   2020-04-05 11:12:55.773602065 -0500
-+++ b/src/fatcat.cpp   2020-04-05 11:13:14.112132604 -0500
-@@ -8,6 +8,7 @@
- #include "xgetopt/xgetopt.h"
- #else
- #include <argp.h>
-+#include <getopt.h>
- #endif
- #endif
- 

Reply via email to