sys-apps/fakeroot: fix building on musl

Closes: https://bugs.gentoo.org/894510
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
This commit is contained in:
Arthur Zamarin 2025-10-06 23:16:49 +03:00
parent b915ed1e5f
commit cbe66de5b8
No known key found for this signature in database
GPG Key ID: 02A0AF503D120504
4 changed files with 113 additions and 0 deletions

View File

@ -25,6 +25,11 @@ BDEPEND="nls? ( app-text/po4a )"
DOCS=( AUTHORS BUGS DEBUG README doc/README.saving )
PATCHES=(
"${FILESDIR}/${PN}-1.32.2-musl.patch"
"${FILESDIR}/${PN}-1.32.2-configure-id_t.patch"
)
src_prepare() {
default

View File

@ -25,6 +25,11 @@ BDEPEND="nls? ( app-text/po4a )"
DOCS=( AUTHORS BUGS DEBUG README doc/README.saving )
PATCHES=(
"${FILESDIR}/${PN}-1.32.2-musl.patch"
"${FILESDIR}/${PN}-1.32.2-configure-id_t.patch" # merged upstream 1.35.1
)
src_prepare() {
default

View File

@ -0,0 +1,35 @@
https://salsa.debian.org/clint/fakeroot/-/commit/819063eb4d2781ddea0647117ad6ab4d502dd39d
From: Clint Adams <clint@debian.org>
Date: Thu, 6 Jun 2024 09:16:52 -0400
Subject: [PATCH] test for id_t with autoconf instead of blind typedef, fixes
FTBFS on FreeBSD
--- a/configure.ac
+++ b/configure.ac
@@ -111,6 +111,7 @@ AC_C_CONST
AC_CHECK_TYPE(mode_t, int)
AC_CHECK_TYPE(off_t, long)
AC_CHECK_TYPE(size_t, unsigned)
+AC_CHECK_TYPE(id_t, int)
AH_TEMPLATE([FAKEROOT_ATTR], [for packed])
if test -n "$GCC";
--- a/libfakeroot.c
+++ b/libfakeroot.c
@@ -139,13 +139,6 @@
#define INT_SEND_STAT(a,b) SEND_STAT(a,b,_STAT_VER)
#define INT_SEND_GET_XATTR(a,b) SEND_GET_XATTR(a,b,_STAT_VER)
#define INT_SEND_GET_STAT(a,b) SEND_GET_STAT(a,b)
-
-/* 10.10 uses id_t in getpriority/setpriority calls, so pretend
- id_t is used everywhere, just happens to be int on some OSes */
-#ifndef _ID_T
-#define _ID_T
-typedef int id_t;
-#endif
#endif
#include <sys/types.h>
--
GitLab

View File

@ -0,0 +1,68 @@
https://github.com/void-linux/void-packages/tree/master/srcpkgs/fakeroot/patches
--- a/faked.c
+++ b/faked.c
@@ -121,6 +121,7 @@
#include <stdlib.h>
#include <string.h>
#include <signal.h>
+#include <inttypes.h>
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
@@ -514,11 +514,11 @@
#ifdef FAKEROOT_DB_PATH
if (find_path(i->buf.dev, i->buf.ino, roots, path))
- fprintf(f,"mode=%llo,uid=%llu,gid=%llu,nlink=%llu,rdev=%llu %s\n",
+ fprintf(f,"mode=%"PRIo64",uid=%"PRIu64",gid=%"PRIu64",nlink=%"PRIu64",rdev=%"PRIu64" %s\n",
(uint64_t) i->buf.mode,(uint64_t) i->buf.uid,(uint64_t) i->buf.gid,
(uint64_t) i->buf.nlink,(uint64_t) i->buf.rdev,path);
#else
- fprintf(f,"dev=%llx,ino=%llu,mode=%llo,uid=%llu,gid=%llu,nlink=%llu,rdev=%llu\n",
+ fprintf(f,"dev=%"PRIx64",ino=%"PRIu64",mode=%"PRIo64",uid=%"PRIu64",gid=%"PRIu64",nlink=%"PRIu64",rdev=%"PRIu64"\n",
(uint64_t) i->buf.dev,(uint64_t) i->buf.ino,(uint64_t) i->buf.mode,
(uint64_t) i->buf.uid,(uint64_t) i->buf.gid,(uint64_t) i->buf.nlink,
(uint64_t) i->buf.rdev);
@@ -544,7 +544,7 @@
while(1){
#ifdef FAKEROOT_DB_PATH
- r=scanf("mode=%llo,uid=%llu,gid=%llu,nlink=%llu,rdev=%llu "DB_PATH_SCAN"\n",
+ r=scanf("mode=%"PRIo64",uid=%"PRIu64",gid=%"PRIu64",nlink=%"PRIu64",rdev=%"PRIu64" "DB_PATH_SCAN"\n",
&stmode, &stuid, &stgid, &stnlink, &strdev, &path);
if (r != 6)
break;
@@ -559,7 +559,7 @@
stdev = path_st.st_dev;
stino = path_st.st_ino;
#else
- r=scanf("dev=%llx,ino=%llu,mode=%llo,uid=%llu,gid=%llu,nlink=%llu,rdev=%llu\n",
+ r=scanf("dev=%"PRIx64",ino=%"PRIu64",mode=%"PRIo64",uid=%"PRIu64",gid=%"PRIu64",nlink=%"PRIu64",rdev=%"PRIu64"\n",
&stdev, &stino, &stmode, &stuid, &stgid, &stnlink, &strdev);
if (r != 7)
break;
@@ -687,7 +688,7 @@ int load_database(const uint32_t remote)
/* */
/*********************************/
void debug_stat(const struct fakestat *st){
- fprintf(stderr,"dev:ino=(%llx:%lli), mode=0%lo, own=(%li,%li), nlink=%li, rdev=%lli\n",
+ fprintf(stderr,"dev:ino=(%"PRIx64":%"PRIu64"), mode=0%lo, own=(%li,%li), nlink=%li, rdev=%"PRIu64"\n",
st->dev,
st->ino,
(long)st->mode,
--- a/libfakeroot.c
+++ b/libfakeroot.c
@@ -81,12 +81,14 @@
#define SEND_STAT64(a,b,c) send_stat64(a,b,c)
#define SEND_GET_STAT(a,b) send_get_stat(a,b)
#define SEND_GET_STAT64(a,b) send_get_stat64(a,b)
+#define SEND_GET_XATTR(a,b,c) send_get_xattr(a,b,c)
#define SEND_GET_XATTR64(a,b,c) send_get_xattr64(a,b,c)
#else
#define SEND_STAT(a,b,c) send_stat(a,b)
#define SEND_STAT64(a,b,c) send_stat64(a,b)
#define SEND_GET_STAT(a,b) send_get_stat(a)
#define SEND_GET_STAT64(a,b) send_get_stat64(a)
+#define SEND_GET_XATTR(a,b,c) send_get_xattr(a,b)
#define SEND_GET_XATTR64(a,b,c) send_get_xattr64(a,b)
#endif