e2fsprogs: build fuse2fs on darwin

This commit is contained in:
Ihor Stuzhuk 2024-07-18 15:45:13 +03:00
parent 4496f7dd0b
commit 0dfc820f4a
2 changed files with 24 additions and 4 deletions

View File

@ -1,5 +1,5 @@
{ lib, stdenv, buildPackages, fetchurl, fetchpatch, pkg-config, libuuid, gettext, texinfo
, withFuse ? stdenv.isLinux, fuse3
, withFuse ? stdenv.isLinux || stdenv.isDarwin, fuse3, macfuse-stubs
, shared ? !stdenv.hostPlatform.isStatic
, e2fsprogs, runCommand
}:
@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [ pkg-config texinfo ];
buildInputs = [ libuuid gettext ]
++ lib.optionals withFuse [ fuse3 ];
++ lib.optional withFuse (if stdenv.isDarwin then macfuse-stubs else fuse3);
patches = [
# Avoid trouble with older systems like NixOS 23.05.
@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
url = "https://lore.kernel.org/linux-ext4/20240527091542.4121237-2-hi@alyssa.is/raw";
hash = "sha256-pMoqm2eo5zYaTdU+Ppa4+posCVFb2A9S4uo5oApaaqc=";
})
];
] ++ lib.optional stdenv.isDarwin ./macfuse.patch;
configureFlags =
if stdenv.isLinux then [
@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
"--disable-uuidd"
] else [
"--enable-libuuid --disable-e2initrd-helper"
];
] ++ lib.optional stdenv.isDarwin "CFLAGS=-D_FILE_OFFSET_BITS=64";
nativeCheckInputs = [ buildPackages.perl ];
doCheck = true;

View File

@ -0,0 +1,20 @@
--- a/misc/fuse2fs.c
+++ b/misc/fuse2fs.c
@@ -2441,7 +2441,7 @@
#undef XATTR_TRANSLATOR
static int op_getxattr(const char *path, const char *key, char *value,
- size_t len)
+ size_t len, uint32_t position EXT2FS_ATTR((unused)))
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -2623,7 +2623,7 @@
static int op_setxattr(const char *path EXT2FS_ATTR((unused)),
const char *key, const char *value,
- size_t len, int flags EXT2FS_ATTR((unused)))
+ size_t len, int flags EXT2FS_ATTR((unused)), uint32_t position EXT2FS_ATTR((unused)))
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;