From 3c28a11bf6cf9b5baf21dd1b36697c84550e4821 Mon Sep 17 00:00:00 2001 From: midchildan Date: Fri, 26 Mar 2021 01:37:15 +0900 Subject: [PATCH] securefs: add darwin build --- .../securefs/add-macfuse-support.patch | 188 ++++++++++++++++++ pkgs/tools/filesystems/securefs/default.nix | 8 +- 2 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 pkgs/tools/filesystems/securefs/add-macfuse-support.patch diff --git a/pkgs/tools/filesystems/securefs/add-macfuse-support.patch b/pkgs/tools/filesystems/securefs/add-macfuse-support.patch new file mode 100644 index 00000000000..217f637ff9d --- /dev/null +++ b/pkgs/tools/filesystems/securefs/add-macfuse-support.patch @@ -0,0 +1,188 @@ +From 8c65c2219976c02a68e27c28156ec0c4c02857e0 Mon Sep 17 00:00:00 2001 +From: midchildan +Date: Sun, 28 Mar 2021 23:39:59 +0900 +Subject: [PATCH] Support the latest FUSE on macOS + +This drops osxfuse support in favor of macFUSE. macFUSE is a newer +version of osxfuse that supports the latest release of macOS, and is a +rebranded version of the same project. +--- + CMakeLists.txt | 8 ++---- + LICENSE.md | 58 ++++++++++++++++++++------------------ + README.md | 2 +- + sources/commands.cpp | 6 ---- + 4 files changed, 33 insertions(+), 41 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7b5e57d..c176554 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -18,12 +18,8 @@ git_describe(GIT_VERSION --tags) + configure_file(${CMAKE_SOURCE_DIR}/sources/git-version.cpp.in ${CMAKE_BINARY_DIR}/git-version.cpp) + + if (UNIX) +- find_path(FUSE_INCLUDE_DIR fuse.h PATHS /usr/local/include PATH_SUFFIXES osxfuse) +- if (APPLE) +- find_library(FUSE_LIBRARIES osxfuse PATHS /usr/local/lib) +- else() +- find_library(FUSE_LIBRARIES fuse PATHS /usr/local/lib) +- endif() ++ find_path(FUSE_INCLUDE_DIR fuse.h PATHS /usr/local/include) ++ find_library(FUSE_LIBRARIES fuse PATHS /usr/local/lib) + include_directories(${FUSE_INCLUDE_DIR}) + link_libraries(${FUSE_LIBRARIES}) + add_compile_options(-Wall -Wextra -Wno-unknown-pragmas) +diff --git a/LICENSE.md b/LICENSE.md +index a8f920c..b134532 100644 +--- a/LICENSE.md ++++ b/LICENSE.md +@@ -758,13 +758,11 @@ Public License instead of this License. + + ------------------------------------------------------------------------------ + +-# [osxfuse] (https://github.com/osxfuse/osxfuse) ++# [macFUSE] (https://github.com/osxfuse/osxfuse) + +-FUSE for macOS is a software developed by the osxfuse project and is covered +-under the following BSD-style license: ++macFUSE is covered under the following license: + +- Copyright (c) 2011-2016 Benjamin Fleischer +- Copyright (c) 2011-2012 Erik Larsson ++ Copyright (c) 2011-2021 Benjamin Fleischer + All rights reserved. + + Redistribution and use in source and binary forms, with or without +@@ -775,9 +773,13 @@ under the following BSD-style license: + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +- 3. Neither the name of osxfuse nor the names of its contributors may be used +- to endorse or promote products derived from this software without specific +- prior written permission. ++ 3. Neither the name of the copyright holder nor the names of its contributors ++ may be used to endorse or promote products derived from this software ++ without specific prior written permission. ++ 4. Redistributions in binary form, bundled with commercial software, are not ++ allowed without specific prior written permission. This includes the ++ automated download or installation or both of the binary form in the ++ context of commercial software. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +@@ -791,9 +793,9 @@ under the following BSD-style license: + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +-FUSE for macOS is a fork of MacFUSE. MacFUSE has been developed by Google Inc.. +-Additional information and the original source of MacFUSE are available on +-http://code.google.com/p/macfuse/. MacFUSE is covered under the following ++macFUSE is a fork of the legacy Google MacFUSE software. Additional information ++and the original source code of Google MacFUSE are available on ++http://code.google.com/p/macfuse/. Google MacFUSE is covered under the following + BSD-style license: + + Copyright (c) 2007—2009 Google Inc. +@@ -830,9 +832,9 @@ BSD-style license: + Portions of this package were derived from code developed by other authors. + Please read further for specific details. + +-* Unless otherwise noted, parts of the FUSE for macOS kernel extension contain +- code derived from the FreeBSD version of FUSE, which is covered under the +- following BSD-style license: ++* Unless otherwise noted, parts of the macFUSE kernel extension contain code ++ derived from the FreeBSD version of FUSE, which is covered under the following ++ BSD-style license: + + Copyright (C) 2005 Csaba Henk. All rights reserved. + +@@ -856,12 +858,13 @@ Please read further for specific details. + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-* Parts of the FUSE for macOS kernel extension contain code derived from Tuxera +- Inc.'s "rebel" branch. The original source of the "rebel" branch is available +- on https://github.com/tuxera. These modifications are covered under the +- following BSD-style license: ++* Parts of the macFUSE kernel extension contain code derived from Tuxera's ++ "rebel" branch. The original source code of the "rebel" branch is available on ++ https://github.com/tuxera. These modifications are covered under the following ++ BSD-style license: + + Copyright (c) 2010 Tuxera Inc. ++ Copyright (c) 2011-2012 Erik Larsson + All rights reserved. + + Redistribution and use in source and binary forms, with or without +@@ -888,9 +891,9 @@ Please read further for specific details. + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +-* Parts of FUSE for macOS contain code derived from Fuse4X. The original source +- of Fuse4X is available on https://github.com/fuse4x. Fuse4X is covered under +- the following BSD-style license: ++* Parts of macFUSE contain code derived from Fuse4X. The original source code of ++ Fuse4X is available on https://github.com/fuse4x. Fuse4X is covered under the ++ following BSD-style license: + + Copyright (c) 2011 Anatol Pomozov + All rights reserved. +@@ -916,21 +919,20 @@ Please read further for specific details. + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +-* Parts of the mount_osxfuse command-line program are covered under the Apple ++* Parts of the mount_macfuse command-line program are covered under the Apple + Public Source License (APSL). You can read the APSL at: + + http://www.opensource.apple.com/license/apsl/ + +-* fuse_kernel.h is an unmodified copy of the interface header from the Linux ++* fuse_kernel.h is a modified copy of the interface header from the Linux + FUSE distribution (https://github.com/libfuse/libfuse). fuse_kernel.h can be + redistributed either under the GPL or under the BSD license. It is being + redistributed here under the BSD license. + +-* fuse_nodehash.c is a slightly modified version of HashNode.c from an +- Apple Developer Technical Support (DTS) sample code example. The original +- source, which is available on +- http://developer.apple.com/library/mac/#samplecode/MFSLives/, has the +- following disclaimer: ++* fuse_nodehash.c is a modified version of HashNode.c from an Apple Developer ++ Technical Support (DTS) sample code example. The original source, which is ++ available on http://developer.apple.com/library/mac/#samplecode/MFSLives/, ++ has the following disclaimer: + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple + Computer, Inc. Apple") in consideration of your agreement to the following +diff --git a/README.md b/README.md +index 9085e96..6fe3592 100644 +--- a/README.md ++++ b/README.md +@@ -28,7 +28,7 @@ There are already many encrypting filesystem in widespread use. Some notable one + + ### macOS + +-Install with [Homebrew](https://brew.sh). [osxfuse](https://osxfuse.github.io) has to be installed beforehand. ++Install with [Homebrew](https://brew.sh). [macFUSE](https://osxfuse.github.io) has to be installed beforehand. + ``` + brew install securefs + ``` +diff --git a/sources/commands.cpp b/sources/commands.cpp +index a371212..862602b 100644 +--- a/sources/commands.cpp ++++ b/sources/commands.cpp +@@ -1252,12 +1252,6 @@ class VersionCommand : public CommandBase + printf("WinFsp %u.%u\n", vn >> 16, vn & 0xFFFFu); + } + } +-#elif defined(__APPLE__) +- typedef const char* version_function(void); +- auto osx_version_func +- = reinterpret_cast(::dlsym(RTLD_DEFAULT, "osxfuse_version")); +- if (osx_version_func) +- printf("osxfuse %s\n", osx_version_func()); + #else + typedef int version_function(void); + auto fuse_version_func + diff --git a/pkgs/tools/filesystems/securefs/default.nix b/pkgs/tools/filesystems/securefs/default.nix index 235d8a53fe7..44e547b01c2 100644 --- a/pkgs/tools/filesystems/securefs/default.nix +++ b/pkgs/tools/filesystems/securefs/default.nix @@ -14,6 +14,12 @@ stdenv.mkDerivation rec { fetchSubmodules = true; }; + patches = [ + # Make it build with macFUSE + # Backported from https://github.com/netheril96/securefs/pull/114 + ./add-macfuse-support.patch + ]; + nativeBuildInputs = [ cmake ]; buildInputs = [ fuse ]; @@ -31,6 +37,6 @@ stdenv.mkDerivation rec { contents. ''; license = with licenses; [ bsd2 mit ]; - platforms = platforms.linux; + platforms = platforms.unix; }; }