diff --git a/pkgs/development/python-modules/llfuse/default.nix b/pkgs/development/python-modules/llfuse/default.nix index e615582a282..6dffffd8b08 100644 --- a/pkgs/development/python-modules/llfuse/default.nix +++ b/pkgs/development/python-modules/llfuse/default.nix @@ -1,5 +1,5 @@ { lib, stdenv, fetchPypi, fetchpatch, buildPythonPackage, pkg-config, pytest, fuse, attr, which -, contextlib2, osxfuse +, contextlib2, macfuse-stubs }: buildPythonPackage rec { @@ -23,7 +23,7 @@ buildPythonPackage rec { buildInputs = lib.optionals stdenv.isLinux [ fuse ] - ++ lib.optionals stdenv.isDarwin [ osxfuse ]; + ++ lib.optionals stdenv.isDarwin [ macfuse-stubs ]; checkInputs = [ pytest which ] ++ lib.optionals stdenv.isLinux [ attr ]; diff --git a/pkgs/os-specific/darwin/macfuse/default.nix b/pkgs/os-specific/darwin/macfuse/default.nix new file mode 100644 index 00000000000..a5162b3aed2 --- /dev/null +++ b/pkgs/os-specific/darwin/macfuse/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv, fetchurl, cpio, xar, undmg, libtapi }: + +stdenv.mkDerivation rec { + pname = "macfuse-stubs"; + version = "4.1.0"; + + src = fetchurl { + url = "https://github.com/osxfuse/osxfuse/releases/download/macfuse-${version}/macfuse-${version}.dmg"; + sha256 = "118hg64w5wb95lbxw6w1hbqxrx3plcbxfjhvxx86q0zx0saa9diw"; + }; + + nativeBuildInputs = [ cpio xar undmg libtapi ]; + + postUnpack = '' + xar -xf 'Install macFUSE.pkg' + cd Core.pkg + gunzip -dc Payload | cpio -i + ''; + + sourceRoot = "."; + + buildPhase = '' + pushd usr/local/lib + for f in *.dylib; do + tapi stubify --filetype=tbd-v2 "$f" -o "''${f%%.dylib}.tbd" + done + sed -i "s|^prefix=.*|prefix=$out|" pkgconfig/fuse.pc + popd + ''; + + # NOTE: Keep in mind that different parts of macFUSE are distributed under a + # different license + installPhase = '' + mkdir -p $out/include $out/lib/pkgconfig + cp usr/local/lib/*.tbd $out/lib + cp usr/local/lib/pkgconfig/*.pc $out/lib/pkgconfig + cp -R usr/local/include/* $out/include + ''; + + meta = with lib; { + homepage = "https://osxfuse.github.io"; + description = "Build time stubs for FUSE on macOS"; + platforms = platforms.darwin; + maintainers = with maintainers; [ midchildan ]; + + # macFUSE as a whole includes code with restrictions on commercial + # redistribution. However, the build artifacts that we actually touch for + # this derivation are distributed under a free license. + license = with licenses; [ + lgpl2Plus # libfuse + ]; + }; +} diff --git a/pkgs/os-specific/darwin/osxfuse/default.nix b/pkgs/os-specific/darwin/osxfuse/default.nix deleted file mode 100644 index d0f6b0f5311..00000000000 --- a/pkgs/os-specific/darwin/osxfuse/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ lib, stdenv, runCommand, fetchFromGitHub, autoreconfHook }: - -let - version = "3.8.3"; - - headers = runCommand "osxfuse-common-${version}" { - src = fetchFromGitHub { - owner = "osxfuse"; - repo = "osxfuse"; - rev = "osxfuse-${version}"; - sha256 = "13lmg41zcyiajh8m42w7szkbg2is4551ryx2ia2mmzvvd23pag0z"; - }; - } '' - mkdir -p $out/include - cp --target-directory=$out/include $src/common/*.h - ''; -in - -stdenv.mkDerivation { - - pname = "osxfuse"; - inherit version; - - src = fetchFromGitHub { - owner = "osxfuse"; - repo = "fuse"; - rev = "1a1977a"; # Submodule reference from osxfuse/osxfuse at tag osxfuse-${version} - sha256 = "101fw8j40ylfbbrjycnwr5qp422agyf9sfbczyb9w5ivrkds3rfw"; - }; - - postPatch = '' - touch config.rpath - ''; - - postInstall = '' - ln -s osxfuse.pc $out/lib/pkgconfig/fuse.pc - ''; - - nativeBuildInputs = [ autoreconfHook ]; - buildInputs = [ headers ]; - - meta = with lib; { - homepage = "https://osxfuse.github.io"; - description = "C-based FUSE for macOS SDK"; - platforms = platforms.darwin; - license = licenses.gpl2; - }; -} diff --git a/pkgs/tools/filesystems/bindfs/default.nix b/pkgs/tools/filesystems/bindfs/default.nix index 44c5e5d0fe3..a6d2382a1a6 100644 --- a/pkgs/tools/filesystems/bindfs/default.nix +++ b/pkgs/tools/filesystems/bindfs/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, fuse, pkg-config, osxfuse }: +{ lib, stdenv, fetchurl, fuse, pkg-config, macfuse-stubs }: stdenv.mkDerivation rec { version = "1.15.1"; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkg-config ]; buildInputs = if stdenv.isDarwin - then [ osxfuse ] + then [ macfuse-stubs ] else [ fuse ]; postFixup = '' ln -s $out/bin/bindfs $out/bin/mount.fuse.bindfs diff --git a/pkgs/tools/filesystems/s3fs/default.nix b/pkgs/tools/filesystems/s3fs/default.nix index e80e6530371..63a6153e8ca 100644 --- a/pkgs/tools/filesystems/s3fs/default.nix +++ b/pkgs/tools/filesystems/s3fs/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, curl, openssl, libxml2, fuse, osxfuse }: +{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, curl, openssl, libxml2, fuse, macfuse-stubs }: stdenv.mkDerivation rec { pname = "s3fs-fuse"; @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { buildInputs = [ curl openssl libxml2 ] ++ lib.optionals stdenv.isLinux [ fuse ] - ++ lib.optionals stdenv.isDarwin [ osxfuse ]; + ++ lib.optionals stdenv.isDarwin [ macfuse-stubs ]; nativeBuildInputs = [ autoreconfHook pkg-config ]; configureFlags = [ diff --git a/pkgs/tools/filesystems/unionfs-fuse/default.nix b/pkgs/tools/filesystems/unionfs-fuse/default.nix index 6af582d91a7..acfd3b1e9a0 100644 --- a/pkgs/tools/filesystems/unionfs-fuse/default.nix +++ b/pkgs/tools/filesystems/unionfs-fuse/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, fuse, osxfuse }: +{ lib, stdenv, fetchFromGitHub, cmake, fuse, macfuse-stubs }: stdenv.mkDerivation rec { pname = "unionfs-fuse"; @@ -21,13 +21,11 @@ stdenv.mkDerivation rec { postPatch = lib.optionalString stdenv.isDarwin '' substituteInPlace CMakeLists.txt \ - --replace '/usr/local/include/osxfuse/fuse' '${osxfuse}/include/osxfuse/fuse' - substituteInPlace src/CMakeLists.txt \ - --replace 'target_link_libraries(unionfs fuse pthread)' 'target_link_libraries(unionfs osxfuse pthread)' + --replace '/usr/local/include/osxfuse/fuse' '${macfuse-stubs}/include/fuse' ''; nativeBuildInputs = [ cmake ]; - buildInputs = [ (if stdenv.isDarwin then osxfuse else fuse) ]; + buildInputs = [ (if stdenv.isDarwin then macfuse-stubs else fuse) ]; # Put the unionfs mount helper in place as mount.unionfs-fuse. This makes it # possible to do: diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index b2ff3e93c3a..0a901b2f7cb 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -459,6 +459,7 @@ mapAliases ({ openssh_with_kerberos = openssh; # added 2018-01-28 onnxruntime = throw "onnxruntime has been removed due to poor maintainability"; # added 2020-12-04 osquery = throw "osquery has been removed."; # added 2019-11-24 + osxfuse = macfuse-stubs; # added 2021-03-20 otter-browser = throw "otter-browser has been removed from nixpkgs, as it was unmaintained"; # added 2020-02-02 owncloudclient = owncloud-client; # added 2016-08 p11_kit = p11-kit; # added 2018-02-25 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3444df35798..af424136d5d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19374,7 +19374,9 @@ in inherit (pkgs.darwin.apple_sdk.frameworks) IOKit; }; - osxfuse = callPackage ../os-specific/darwin/osxfuse { }; + macfuse-stubs = callPackage ../os-specific/darwin/macfuse { + inherit (darwin) libtapi; + }; osxsnarf = callPackage ../os-specific/darwin/osxsnarf { };