sshfs: add darwin build
This commit is contained in:
parent
239d8e2517
commit
87f578a36f
|
@ -56,4 +56,10 @@ stdenv.mkDerivation rec {
|
||||||
lgpl2Plus # libfuse
|
lgpl2Plus # libfuse
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
passthru.warning = ''
|
||||||
|
macFUSE is required for this package to work on macOS. To install macFUSE,
|
||||||
|
use the installer from the <link xlink:href="https://osxfuse.github.io/">
|
||||||
|
project website</link>.
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
61
pkgs/tools/filesystems/sshfs-fuse/common.nix
Normal file
61
pkgs/tools/filesystems/sshfs-fuse/common.nix
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
{ version, sha256, platforms, patches ? [ ] }:
|
||||||
|
|
||||||
|
{ lib, stdenv, fetchFromGitHub
|
||||||
|
, meson, pkg-config, ninja, docutils, makeWrapper
|
||||||
|
, fuse3, macfuse-stubs, glib
|
||||||
|
, which, python3Packages
|
||||||
|
, openssh
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
fuse = if stdenv.isDarwin then macfuse-stubs else fuse3;
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
pname = "sshfs-fuse";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "libfuse";
|
||||||
|
repo = "sshfs";
|
||||||
|
rev = "sshfs-${version}";
|
||||||
|
inherit sha256;
|
||||||
|
};
|
||||||
|
|
||||||
|
inherit patches;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ meson pkg-config ninja docutils makeWrapper ];
|
||||||
|
buildInputs = [ fuse glib ];
|
||||||
|
checkInputs = [ which python3Packages.pytest ];
|
||||||
|
|
||||||
|
NIX_CFLAGS_COMPILE = lib.optionalString
|
||||||
|
(stdenv.hostPlatform.system == "i686-linux")
|
||||||
|
"-D_FILE_OFFSET_BITS=64";
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/sbin
|
||||||
|
ln -sf $out/bin/sshfs $out/sbin/mount.sshfs
|
||||||
|
'' + lib.optionalString (!stdenv.isDarwin) ''
|
||||||
|
wrapProgram $out/bin/sshfs --prefix PATH : "${openssh}/bin"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# doCheck = true;
|
||||||
|
checkPhase = lib.optionalString (!stdenv.isDarwin) ''
|
||||||
|
# The tests need fusermount:
|
||||||
|
mkdir bin
|
||||||
|
cp ${fuse}/bin/fusermount3 bin/fusermount
|
||||||
|
export PATH=bin:$PATH
|
||||||
|
# Can't access /dev/fuse within the sandbox: "FUSE kernel module does not seem to be loaded"
|
||||||
|
substituteInPlace test/util.py --replace "/dev/fuse" "/dev/null"
|
||||||
|
# TODO: "fusermount executable not setuid, and we are not root"
|
||||||
|
# We should probably use a VM test instead
|
||||||
|
${python3Packages.python.interpreter} -m pytest test/
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
inherit platforms;
|
||||||
|
description = "FUSE-based filesystem that allows remote filesystems to be mounted over SSH";
|
||||||
|
longDescription = macfuse-stubs.warning;
|
||||||
|
homepage = "https://github.com/libfuse/sshfs";
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
maintainers = with maintainers; [ primeos ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,52 +1,28 @@
|
||||||
{ lib, stdenv, fetchFromGitHub
|
{ lib, stdenv, callPackage, fetchpatch }:
|
||||||
, meson, pkg-config, ninja, docutils, makeWrapper
|
|
||||||
, fuse3, glib
|
|
||||||
, which, python3Packages
|
|
||||||
, openssh
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
let mkSSHFS = args: callPackage (import ./common.nix args) { };
|
||||||
version = "3.7.1";
|
in if stdenv.isDarwin then
|
||||||
pname = "sshfs-fuse";
|
mkSSHFS {
|
||||||
|
version = "2.10"; # macFUSE isn't yet compatible with libfuse 3.x
|
||||||
|
sha256 = "1dmw4kx6vyawcywiv8drrajnam0m29mxfswcp4209qafzx3mjlp1";
|
||||||
|
patches = [
|
||||||
|
# remove reference to fuse_darwin.h which doens't exist on recent macFUSE
|
||||||
|
./fix-fuse-darwin-h.patch
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
# From https://github.com/libfuse/sshfs/pull/185:
|
||||||
owner = "libfuse";
|
# > With this patch, setting I/O size to a reasonable large value, will
|
||||||
repo = "sshfs";
|
# > result in much improved performance, e.g.: -o iosize=1048576
|
||||||
rev = "sshfs-${version}";
|
(fetchpatch {
|
||||||
sha256 = "088mgcsqv9f2vly4xn6lvvkmqkgr9jjmjs9qp8938hl7j6rrgd17";
|
name = "fix-configurable-blksize.patch";
|
||||||
};
|
url = "https://github.com/libfuse/sshfs/commit/667cf34622e2e873db776791df275c7a582d6295.patch";
|
||||||
|
sha256 = "0d65lawd2g2aisk1rw2vl65dgxywf4vqgv765n9zj9zysyya8a54";
|
||||||
nativeBuildInputs = [ meson pkg-config ninja docutils makeWrapper ];
|
})
|
||||||
buildInputs = [ fuse3 glib ];
|
];
|
||||||
checkInputs = [ which python3Packages.pytest ];
|
platforms = lib.platforms.darwin;
|
||||||
|
}
|
||||||
NIX_CFLAGS_COMPILE = lib.optionalString
|
else
|
||||||
(stdenv.hostPlatform.system == "i686-linux")
|
mkSSHFS {
|
||||||
"-D_FILE_OFFSET_BITS=64";
|
version = "3.7.1";
|
||||||
|
sha256 = "088mgcsqv9f2vly4xn6lvvkmqkgr9jjmjs9qp8938hl7j6rrgd17";
|
||||||
postInstall = ''
|
platforms = lib.platforms.linux;
|
||||||
mkdir -p $out/sbin
|
|
||||||
ln -sf $out/bin/sshfs $out/sbin/mount.sshfs
|
|
||||||
wrapProgram $out/bin/sshfs --prefix PATH : "${openssh}/bin"
|
|
||||||
'';
|
|
||||||
|
|
||||||
#doCheck = true;
|
|
||||||
checkPhase = ''
|
|
||||||
# The tests need fusermount:
|
|
||||||
mkdir bin && cp ${fuse3}/bin/fusermount3 bin/fusermount
|
|
||||||
export PATH=bin:$PATH
|
|
||||||
# Can't access /dev/fuse within the sandbox: "FUSE kernel module does not seem to be loaded"
|
|
||||||
substituteInPlace test/util.py --replace "/dev/fuse" "/dev/null"
|
|
||||||
# TODO: "fusermount executable not setuid, and we are not root"
|
|
||||||
# We should probably use a VM test instead
|
|
||||||
python3 -m pytest test/
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
inherit (src.meta) homepage;
|
|
||||||
description = "FUSE-based filesystem that allows remote filesystems to be mounted over SSH";
|
|
||||||
platforms = platforms.linux;
|
|
||||||
license = licenses.gpl2;
|
|
||||||
maintainers = with maintainers; [ primeos ];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
14
pkgs/tools/filesystems/sshfs-fuse/fix-fuse-darwin-h.patch
Normal file
14
pkgs/tools/filesystems/sshfs-fuse/fix-fuse-darwin-h.patch
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
diff --git a/sshfs.c b/sshfs.c
|
||||||
|
index 97eaf06..d442577 100644
|
||||||
|
--- a/sshfs.c
|
||||||
|
+++ b/sshfs.c
|
||||||
|
@@ -14,9 +14,6 @@
|
||||||
|
#if !defined(__CYGWIN__)
|
||||||
|
#include <fuse_lowlevel.h>
|
||||||
|
#endif
|
||||||
|
-#ifdef __APPLE__
|
||||||
|
-# include <fuse_darwin.h>
|
||||||
|
-#endif
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
Loading…
Reference in a new issue