This is a patch to build fuse-j-2.2.3 on OS X, tested with 10.4.9. Based on http://groups.google.com/group/macfuse-devel/msg/7029bd9a8c676481 with an update to the statfs interface. Thomas Kho May 8, 2007 diff -rN -u old-fuse-j-2.2.3/build.conf new-fuse-j-2.2.3/build.conf --- old-fuse-j-2.2.3/build.conf 2007-05-08 15:20:38.000000000 -0700 +++ new-fuse-j-2.2.3/build.conf 2007-05-08 15:20:38.000000000 -0700 @@ -1,6 +1,6 @@ # JDK 1.4 or greater HOME -JDK_HOME=/opt/jdk1.5.0 +JDK_HOME=/Library/Java/Home # FUSE library & headers base directory FUSE_HOME=/usr/local diff -rN -u old-fuse-j-2.2.3/jni/Makefile new-fuse-j-2.2.3/jni/Makefile --- old-fuse-j-2.2.3/jni/Makefile 2007-05-08 15:20:38.000000000 -0700 +++ new-fuse-j-2.2.3/jni/Makefile 2007-05-08 15:20:38.000000000 -0700 @@ -5,22 +5,24 @@ OBJS := javafs.o javafs_bindings.o SRCS := javafs.c javafs_bindings.c HDRS := javafs.h javafs_bindings.h -LIB_SO := libjavafs.so +LIB_SO := libjavafs.jnilib -INCLUDES := -I${FUSE_HOME}/include -I${JDK_HOME}/include -I${JDK_HOME}/include/linux +INCLUDES := -I${FUSE_HOME}/include -I${JDK_HOME}/include -LDPATH := ${LDPATH} -L${FUSE_HOME}/lib +LDPATH := ${LDPATH} -L${FUSE_HOME}/lib -L/System/Library/Frameworks/JavaVM.framework/Libraries + +CFLAGS := -D__FreeBSD__=10 -O -g -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk all: ${LIB_SO} ${LIB_SO}: ${OBJS} - gcc -fPIC -shared -o ${LIB_SO} ${LDPATH} -ljvm -lfuse ${OBJS} -lpthread + gcc -fPIC -o ${LIB_SO} ${CFLAGS} ${LDPATH} -dynamiclib -framework JavaVM -ljvm -lfuse ${OBJS} -lpthread # ${FUSE_HOME}/lib/libfuse.a .c.o: ${SRCS} ${HDRS} - gcc -fPIC -c ${INCLUDES} -D_FILE_OFFSET_BITS=64 $< -o $@ + gcc -fPIC -c ${INCLUDES} ${CFLAGS} -D_FILE_OFFSET_BITS=64 $< -o $@ clean: rm -f ${LIB_SO} ${OBJS} diff -rN -u old-fuse-j-2.2.3/jni/javafs.c new-fuse-j-2.2.3/jni/javafs.c --- old-fuse-j-2.2.3/jni/javafs.c 2007-05-08 15:20:38.000000000 -0700 +++ new-fuse-j-2.2.3/jni/javafs.c 2007-05-08 15:20:38.000000000 -0700 @@ -761,7 +761,7 @@ } -static int javafs_statfs( const char *path, struct statfs *fst) +static int javafs_statfs( const char *path, struct statvfs *fst) { JNIEnv *env = get_env(); jobject jStatfs = NULL; @@ -776,7 +776,7 @@ fst->f_bfree = (*env)->GetIntField(env, jStatfs, FuseStatfs->field.blocksFree); fst->f_files = (*env)->GetIntField(env, jStatfs, FuseStatfs->field.files); fst->f_ffree = (*env)->GetIntField(env, jStatfs, FuseStatfs->field.filesFree); - fst->f_namelen = (*env)->GetIntField(env, jStatfs, FuseStatfs->field.namelen); + fst->f_namemax = (*env)->GetIntField(env, jStatfs, FuseStatfs->field.namelen); break; } diff -rN -u old-fuse-j-2.2.3/jni/javafs.h new-fuse-j-2.2.3/jni/javafs.h --- old-fuse-j-2.2.3/jni/javafs.h 2007-05-08 15:20:38.000000000 -0700 +++ new-fuse-j-2.2.3/jni/javafs.h 2007-05-08 15:20:38.000000000 -0700 @@ -11,7 +11,7 @@ #ifndef _JAVAFS_H_ #define _JAVAFS_H_ -#define FUSE_USE_VERSION 22 +#define FUSE_USE_VERSION 25 #include #include @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include diff -rN -u old-fuse-j-2.2.3/zipfs_mount.sh new-fuse-j-2.2.3/zipfs_mount.sh --- old-fuse-j-2.2.3/zipfs_mount.sh 2007-05-08 15:20:38.000000000 -0700 +++ new-fuse-j-2.2.3/zipfs_mount.sh 2007-05-08 15:20:38.000000000 -0700 @@ -4,4 +4,4 @@ . ./build.conf -LD_LIBRARY_PATH=./jni:$FUSE_HOME/lib $JDK_HOME/bin/java -classpath ./build fuse.zipfs.ZipFilesystem -f -s $2 $1 +DYLD_LIBRARY_PATH=./jni:$FUSE_HOME/lib LD_LIBRARY_PATH=./jni:$FUSE_HOME/lib $JDK_HOME/bin/java -classpath ./build fuse.zipfs.ZipFilesystem -f -s $2 $1