Commit 0dfc820f authored by Ihor Stuzhuk's avatar Ihor Stuzhuk
Browse files

e2fsprogs: build fuse2fs on darwin

parent 4496f7dd
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
{ 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;
+20 −0
Original line number Diff line number Diff line
--- 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;