Skip to content

Commit

Permalink
e2fsprogs: build fuse2fs on darwin
Browse files Browse the repository at this point in the history
  • Loading branch information
KoHcoJlb committed Jul 18, 2024
1 parent 4496f7d commit 0dfc820
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
8 changes: 4 additions & 4 deletions pkgs/tools/filesystems/e2fsprogs/default.nix
Original file line number Diff line number Diff line change
@@ -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
}:
Expand All @@ -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.
Expand All @@ -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 [
Expand All @@ -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;
Expand Down
20 changes: 20 additions & 0 deletions pkgs/tools/filesystems/e2fsprogs/macfuse.patch
Original file line number Diff line number Diff line change
@@ -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;

0 comments on commit 0dfc820

Please sign in to comment.