nixpkgs/pkgs/tools/filesystems/sshfs-fuse/common.nix
Artturin f9fdf2d402 treewide: move NIX_CFLAGS_COMPILE to the env attrset
with structuredAttrs lists will be bash arrays which cannot be exported
which will be a issue with some patches and some wrappers like cc-wrapper

this makes it clearer that NIX_CFLAGS_COMPILE must be a string as lists
in env cause a eval failure
2023-02-22 21:23:04 +02:00

63 lines
1.8 KiB
Nix

{ 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 ];
nativeCheckInputs = [ which python3Packages.pytest ];
env.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;
mainProgram = "sshfs";
maintainers = with maintainers; [ primeos ];
};
}