From 94e26da693d30c4a5615fd999c8455fa8dfcac33 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 22 Jun 2021 16:32:19 +0200 Subject: [PATCH] Re-enable FUSE This reverts commit 0e924e74293f594ec7d3efd02e2e12e0fdd60158. --- assembly-linux.xml | 9 ++++- assembly-mac.xml | 9 ++++- assembly-win.xml | 9 ++++- pom.xml | 36 +++++++++++++------ src/main/java/module-info.java | 2 +- .../{FuseVolume.java.txt => FuseVolume.java} | 0 .../common/vaults/VaultModule.java | 6 ++-- .../org/cryptomator/common/vaults/Volume.java | 2 +- src/main/resources/license/THIRD-PARTY.txt | 19 +++++++++- src/package/launcher-linux.sh | 3 +- src/package/launcher-mac.sh | 3 +- src/package/launcher-win.bat | 3 +- 12 files changed, 79 insertions(+), 22 deletions(-) rename src/main/java/org/cryptomator/common/vaults/{FuseVolume.java.txt => FuseVolume.java} (100%) diff --git a/assembly-linux.xml b/assembly-linux.xml index d8d224d67..1de114820 100644 --- a/assembly-linux.xml +++ b/assembly-linux.xml @@ -34,7 +34,14 @@ cryptomator-*.jar - libs + mods + + + target/mods + + *.jar + + mods target/libs diff --git a/assembly-mac.xml b/assembly-mac.xml index cf044be12..95b8adb21 100644 --- a/assembly-mac.xml +++ b/assembly-mac.xml @@ -34,7 +34,14 @@ cryptomator-*.jar - libs + mods + + + target/mods + + *.jar + + mods target/libs diff --git a/assembly-win.xml b/assembly-win.xml index e04495220..c64a34b05 100644 --- a/assembly-win.xml +++ b/assembly-win.xml @@ -34,7 +34,14 @@ cryptomator-*.jar - libs + mods + + + target/mods + + *.jar + + mods target/libs diff --git a/pom.xml b/pom.xml index 5ab5593eb..287f03f8a 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,9 @@ UTF-8 16 + + com.github.serceman,com.github.jnr,org.ow2.asm,net.java.dev.jna,org.apache.jackrabbit,org.apache.httpcomponents + 2.1.0-beta6 1.0.0-rc1 @@ -58,11 +61,11 @@ cryptofs ${cryptomator.cryptofs.version} - - - - - + + org.cryptomator + fuse-nio-adapter + ${cryptomator.fuse.version} + org.cryptomator dokany-nio-adapter @@ -240,7 +243,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.1.2 + 3.2.0 org.apache.maven.plugins @@ -339,6 +342,19 @@ org.apache.maven.plugins maven-dependency-plugin + + copy-mods + prepare-package + + copy-dependencies + + + runtime + ${project.build.directory}/mods + linux,mac,win + ${nonModularGroupIds} + + copy-libs prepare-package @@ -348,7 +364,7 @@ runtime ${project.build.directory}/libs - linux,mac,win + ${nonModularGroupIds} @@ -492,7 +508,7 @@ copy-dependencies - ${project.build.directory}/libs + ${project.build.directory}/mods org.openjfx mac @@ -554,7 +570,7 @@ copy-dependencies - ${project.build.directory}/libs + ${project.build.directory}/mods org.openjfx linux @@ -615,7 +631,7 @@ copy-dependencies - ${project.build.directory}/libs + ${project.build.directory}/mods org.openjfx win diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 41b0056cb..9bd600695 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -6,7 +6,7 @@ import org.cryptomator.integrations.uiappearance.UiAppearanceProvider; module org.cryptomator.desktop { requires org.cryptomator.cryptofs; requires org.cryptomator.frontend.dokany; - // requires org.cryptomator.frontend.fuse; + requires org.cryptomator.frontend.fuse; requires org.cryptomator.frontend.webdav; requires org.cryptomator.integrations.api; requires java.rmi; diff --git a/src/main/java/org/cryptomator/common/vaults/FuseVolume.java.txt b/src/main/java/org/cryptomator/common/vaults/FuseVolume.java similarity index 100% rename from src/main/java/org/cryptomator/common/vaults/FuseVolume.java.txt rename to src/main/java/org/cryptomator/common/vaults/FuseVolume.java diff --git a/src/main/java/org/cryptomator/common/vaults/VaultModule.java b/src/main/java/org/cryptomator/common/vaults/VaultModule.java index 55ba2e020..d254ec0dd 100644 --- a/src/main/java/org/cryptomator/common/vaults/VaultModule.java +++ b/src/main/java/org/cryptomator/common/vaults/VaultModule.java @@ -48,12 +48,12 @@ public class VaultModule { } @Provides - public Volume provideVolume(Settings settings, WebDavVolume webDavVolume, DokanyVolume dokanyVolume) { + public Volume provideVolume(Settings settings, WebDavVolume webDavVolume, FuseVolume fuseVolume, DokanyVolume dokanyVolume) { VolumeImpl preferredImpl = settings.preferredVolumeImpl().get(); if (VolumeImpl.DOKANY == preferredImpl && dokanyVolume.isSupported()) { return dokanyVolume; -// } else if (VolumeImpl.FUSE == preferredImpl && fuseVolume.isSupported()) { -// return fuseVolume; + } else if (VolumeImpl.FUSE == preferredImpl && fuseVolume.isSupported()) { + return fuseVolume; } else { if (VolumeImpl.WEBDAV != preferredImpl) { LOG.warn("Using WebDAV, because {} is not supported.", preferredImpl.getDisplayName()); diff --git a/src/main/java/org/cryptomator/common/vaults/Volume.java b/src/main/java/org/cryptomator/common/vaults/Volume.java index f57f913e4..f608122bf 100644 --- a/src/main/java/org/cryptomator/common/vaults/Volume.java +++ b/src/main/java/org/cryptomator/common/vaults/Volume.java @@ -66,7 +66,7 @@ public interface Volume { return Stream.of(VolumeImpl.values()).filter(impl -> switch (impl) { case WEBDAV -> WebDavVolume.isSupportedStatic(); case DOKANY -> DokanyVolume.isSupportedStatic(); - case FUSE -> false; // FuseVolume.isSupportedStatic(); + case FUSE -> FuseVolume.isSupportedStatic(); }).toArray(VolumeImpl[]::new); } diff --git a/src/main/resources/license/THIRD-PARTY.txt b/src/main/resources/license/THIRD-PARTY.txt index 1407c0713..e97424589 100644 --- a/src/main/resources/license/THIRD-PARTY.txt +++ b/src/main/resources/license/THIRD-PARTY.txt @@ -11,11 +11,15 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. -Cryptomator uses 31 third-party dependencies under the following licenses: +Cryptomator uses 43 third-party dependencies under the following licenses: Apache License v2.0: - Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.11.0 - http://github.com/FasterXML/jackson) - Jackson-core (com.fasterxml.jackson.core:jackson-core:2.11.0 - https://github.com/FasterXML/jackson-core) - jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.11.0 - http://github.com/FasterXML/jackson) + - jffi (com.github.jnr:jffi:1.2.23 - http://github.com/jnr/jffi) + - jnr-a64asm (com.github.jnr:jnr-a64asm:1.0.0 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-a64asm) + - jnr-constants (com.github.jnr:jnr-constants:0.9.15 - http://github.com/jnr/jnr-constants) + - jnr-ffi (com.github.jnr:jnr-ffi:2.1.12 - http://github.com/jnr/jnr-ffi) - Gson (com.google.code.gson:gson:2.8.6 - https://github.com/google/gson/gson) - Dagger (com.google.dagger:dagger:2.37 - https://github.com/google/dagger) - Guava InternalFutureFailureAccess and InternalFutures (com.google.guava:failureaccess:1.0.1 - https://github.com/google/guava/failureaccess) @@ -34,6 +38,12 @@ Cryptomator uses 31 third-party dependencies under the following licenses: - Jetty :: Servlet Handling (org.eclipse.jetty:jetty-servlet:10.0.2 - https://eclipse.org/jetty/jetty-servlet) - Jetty :: Utilities (org.eclipse.jetty:jetty-util:10.0.2 - https://eclipse.org/jetty/jetty-util) - Jetty :: Servlet API and Schemas for JPMS and OSGi (org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6 - https://eclipse.org/jetty/jetty-servlet-api) + BSD: + - asm (org.ow2.asm:asm:7.1 - http://asm.ow2.org/) + - asm-analysis (org.ow2.asm:asm-analysis:7.1 - http://asm.ow2.org/) + - asm-commons (org.ow2.asm:asm-commons:7.1 - http://asm.ow2.org/) + - asm-tree (org.ow2.asm:asm-tree:7.1 - http://asm.ow2.org/) + - asm-util (org.ow2.asm:asm-util:7.1 - http://asm.ow2.org/) Eclipse Public License - Version 1.0: - Jetty :: Servlet API and Schemas for JPMS and OSGi (org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6 - https://eclipse.org/jetty/jetty-servlet-api) Eclipse Public License - Version 2.0: @@ -46,19 +56,26 @@ Cryptomator uses 31 third-party dependencies under the following licenses: Eclipse Public License - v 1.0: - Logback Classic Module (ch.qos.logback:logback-classic:1.2.3 - http://logback.qos.ch/logback-classic) - Logback Core Module (ch.qos.logback:logback-core:1.2.3 - http://logback.qos.ch/logback-core) + Eclipse Public License - v 2.0: + - jnr-posix (com.github.jnr:jnr-posix:3.0.54 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix) GNU Lesser General Public License: - Logback Classic Module (ch.qos.logback:logback-classic:1.2.3 - http://logback.qos.ch/logback-classic) - Logback Core Module (ch.qos.logback:logback-core:1.2.3 - http://logback.qos.ch/logback-core) + GPLv2: + - jnr-posix (com.github.jnr:jnr-posix:3.0.54 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix) GPLv2+CE: - javafx-base (org.openjfx:javafx-base:16 - https://openjdk.java.net/projects/openjfx/javafx-base/) - javafx-controls (org.openjfx:javafx-controls:16 - https://openjdk.java.net/projects/openjfx/javafx-controls/) - javafx-fxml (org.openjfx:javafx-fxml:16 - https://openjdk.java.net/projects/openjfx/javafx-fxml/) - javafx-graphics (org.openjfx:javafx-graphics:16 - https://openjdk.java.net/projects/openjfx/javafx-graphics/) LGPL 2.1: + - jnr-posix (com.github.jnr:jnr-posix:3.0.54 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix) - Java Native Access (net.java.dev.jna:jna:5.7.0 - https://github.com/java-native-access/jna) - Java Native Access Platform (net.java.dev.jna:jna-platform:5.7.0 - https://github.com/java-native-access/jna) MIT License: - java jwt (com.auth0:java-jwt:3.15.0 - https://github.com/auth0/java-jwt) + - jnr-x86asm (com.github.jnr:jnr-x86asm:1.0.2 - http://github.com/jnr/jnr-x86asm) + - jnr-fuse (com.github.serceman:jnr-fuse:0.5.5 - https://github.com/SerCeMan/jnr-fuse) - zxcvbn4j (com.nulab-inc:zxcvbn:1.5.2 - https://github.com/nulab/zxcvbn4j) - SLF4J API Module (org.slf4j:slf4j-api:1.7.30 - http://www.slf4j.org) The BSD 2-Clause License: diff --git a/src/package/launcher-linux.sh b/src/package/launcher-linux.sh index 4ce8e6670..a14ed7e24 100644 --- a/src/package/launcher-linux.sh +++ b/src/package/launcher-linux.sh @@ -1,7 +1,8 @@ #!/bin/sh cd $(dirname $0) java \ - -p "libs" \ + -p "mods" \ + -cp "libs/*" \ -Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json" \ -Dcryptomator.ipcPortPath="~/.config/Cryptomator/ipcPort.bin" \ -Dcryptomator.logDir="~/.local/share/Cryptomator/logs" \ diff --git a/src/package/launcher-mac.sh b/src/package/launcher-mac.sh index 100c975b5..54bae32d5 100644 --- a/src/package/launcher-mac.sh +++ b/src/package/launcher-mac.sh @@ -1,7 +1,8 @@ #!/bin/sh cd $(dirname $0) java \ - -p "libs" \ + -p "mods" \ + -cp "libs/*" \ -Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator/settings.json" \ -Dcryptomator.ipcPortPath="~/Library/Application Support/Cryptomator/ipcPort.bin" \ -Dcryptomator.logDir="~/Library/Logs/Cryptomator" \ diff --git a/src/package/launcher-win.bat b/src/package/launcher-win.bat index b809b3b04..385e01555 100644 --- a/src/package/launcher-win.bat +++ b/src/package/launcher-win.bat @@ -1,6 +1,7 @@ @echo off java ^ - -p "libs" ^ + -p "mods" ^ + -cp "libs/*" ^ -Dcryptomator.settingsPath="~/AppData/Roaming/Cryptomator/settings.json" ^ -Dcryptomator.ipcPortPath="~/AppData/Roaming/Cryptomator/ipcPort.bin" ^ -Dcryptomator.logDir="~/AppData/Roaming/Cryptomator" ^