Przeglądaj źródła

Re-enable FUSE

This reverts commit 0e924e74293f594ec7d3efd02e2e12e0fdd60158.
Sebastian Stenzel 3 lat temu
rodzic
commit
94e26da693

+ 8 - 1
assembly-linux.xml

@@ -34,7 +34,14 @@
 			<includes>
 				<include>cryptomator-*.jar</include>
 			</includes>
-			<outputDirectory>libs</outputDirectory>
+			<outputDirectory>mods</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>target/mods</directory>
+			<includes>
+				<include>*.jar</include>
+			</includes>
+			<outputDirectory>mods</outputDirectory>
 		</fileSet>
 		<fileSet>
 			<directory>target/libs</directory>

+ 8 - 1
assembly-mac.xml

@@ -34,7 +34,14 @@
 			<includes>
 				<include>cryptomator-*.jar</include>
 			</includes>
-			<outputDirectory>libs</outputDirectory>
+			<outputDirectory>mods</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>target/mods</directory>
+			<includes>
+				<include>*.jar</include>
+			</includes>
+			<outputDirectory>mods</outputDirectory>
 		</fileSet>
 		<fileSet>
 			<directory>target/libs</directory>

+ 8 - 1
assembly-win.xml

@@ -34,7 +34,14 @@
 			<includes>
 				<include>cryptomator-*.jar</include>
 			</includes>
-			<outputDirectory>libs</outputDirectory>
+			<outputDirectory>mods</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>target/mods</directory>
+			<includes>
+				<include>*.jar</include>
+			</includes>
+			<outputDirectory>mods</outputDirectory>
 		</fileSet>
 		<fileSet>
 			<directory>target/libs</directory>

+ 26 - 10
pom.xml

@@ -23,6 +23,9 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<project.jdk.version>16</project.jdk.version>
 
+		<!-- Group IDs of jars that need to stay on the class path for now -->
+		<nonModularGroupIds>com.github.serceman,com.github.jnr,org.ow2.asm,net.java.dev.jna,org.apache.jackrabbit,org.apache.httpcomponents</nonModularGroupIds>
+
 		<!-- cryptomator dependencies -->
 		<cryptomator.cryptofs.version>2.1.0-beta6</cryptomator.cryptofs.version>
 		<cryptomator.integrations.version>1.0.0-rc1</cryptomator.integrations.version>
@@ -58,11 +61,11 @@
 			<artifactId>cryptofs</artifactId>
 			<version>${cryptomator.cryptofs.version}</version>
 		</dependency>
-<!--		<dependency>-->
-<!--			<groupId>org.cryptomator</groupId>-->
-<!--			<artifactId>fuse-nio-adapter</artifactId>-->
-<!--			<version>${cryptomator.fuse.version}</version>-->
-<!--		</dependency>-->
+		<dependency>
+			<groupId>org.cryptomator</groupId>
+			<artifactId>fuse-nio-adapter</artifactId>
+			<version>${cryptomator.fuse.version}</version>
+		</dependency>
 		<dependency>
 			<groupId>org.cryptomator</groupId>
 			<artifactId>dokany-nio-adapter</artifactId>
@@ -240,7 +243,7 @@
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-dependency-plugin</artifactId>
-					<version>3.1.2</version>
+					<version>3.2.0</version>
 				</plugin>
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
@@ -339,6 +342,19 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-dependency-plugin</artifactId>
 				<executions>
+					<execution>
+						<id>copy-mods</id>
+						<phase>prepare-package</phase>
+						<goals>
+							<goal>copy-dependencies</goal>
+						</goals>
+						<configuration>
+							<includeScope>runtime</includeScope>
+							<outputDirectory>${project.build.directory}/mods</outputDirectory>
+							<excludeClassifiers>linux,mac,win</excludeClassifiers>
+							<excludeGroupIds>${nonModularGroupIds}</excludeGroupIds>
+						</configuration>
+					</execution>
 					<execution>
 						<id>copy-libs</id>
 						<phase>prepare-package</phase>
@@ -348,7 +364,7 @@
 						<configuration>
 							<includeScope>runtime</includeScope>
 							<outputDirectory>${project.build.directory}/libs</outputDirectory>
-							<excludeClassifiers>linux,mac,win</excludeClassifiers>
+							<includeGroupIds>${nonModularGroupIds}</includeGroupIds>
 						</configuration>
 					</execution>
 				</executions>
@@ -492,7 +508,7 @@
 									<goal>copy-dependencies</goal>
 								</goals>
 								<configuration>
-									<outputDirectory>${project.build.directory}/libs</outputDirectory>
+									<outputDirectory>${project.build.directory}/mods</outputDirectory>
 									<includeGroupIds>org.openjfx</includeGroupIds>
 									<classifier>mac</classifier>
 								</configuration>
@@ -554,7 +570,7 @@
 									<goal>copy-dependencies</goal>
 								</goals>
 								<configuration>
-									<outputDirectory>${project.build.directory}/libs</outputDirectory>
+									<outputDirectory>${project.build.directory}/mods</outputDirectory>
 									<includeGroupIds>org.openjfx</includeGroupIds>
 									<classifier>linux</classifier>
 								</configuration>
@@ -615,7 +631,7 @@
 									<goal>copy-dependencies</goal>
 								</goals>
 								<configuration>
-									<outputDirectory>${project.build.directory}/libs</outputDirectory>
+									<outputDirectory>${project.build.directory}/mods</outputDirectory>
 									<includeGroupIds>org.openjfx</includeGroupIds>
 									<classifier>win</classifier>
 								</configuration>

+ 1 - 1
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;

src/main/java/org/cryptomator/common/vaults/FuseVolume.java.txt → src/main/java/org/cryptomator/common/vaults/FuseVolume.java


+ 3 - 3
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());

+ 1 - 1
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);
 	}
 

+ 18 - 1
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:

+ 2 - 1
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" \

+ 2 - 1
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" \

+ 2 - 1
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" ^