JackYeh / s3fs

Automatically exported from code.google.com/p/s3fs
GNU General Public License v2.0
0 stars 0 forks source link

Get this working in OSX #106

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Several other issues address problems with getting this working in OSX

I tried a recent tarball to compile on Snow Leopard (10.6) and ran into 
configure errors related to not finding the right version of fuse.

Previously, I had been able to compile with a g++ command line.  We might have 
to make some adjustments with the autotools configuration for darwin?

Original issue reported on code.google.com by dmoore4...@gmail.com on 29 Oct 2010 at 4:13

GoogleCodeExporter commented 8 years ago
Issue 78 has been merged into this issue.

Original comment by dmoore4...@gmail.com on 30 Oct 2010 at 3:09

GoogleCodeExporter commented 8 years ago
From issue #42  -- information here may help resolve this:

http://mark.aufflick.com/blog/2007/10/28/leopard-amazon-s3-network-storage

Original comment by dmoore4...@gmail.com on 19 Dec 2010 at 1:48

GoogleCodeExporter commented 8 years ago
Issue 70 has been merged into this issue.

Original comment by dmoore4...@gmail.com on 19 Dec 2010 at 1:49

GoogleCodeExporter commented 8 years ago
Issue 49 has been merged into this issue.

Original comment by dmoore4...@gmail.com on 19 Dec 2010 at 9:42

GoogleCodeExporter commented 8 years ago
The link in Comment 2 doesn't solve the problem for Snow Leopard.   Following 
those instructions, installing macfuse and  macosxs3browser, downloading the 
code from :

svn checkout http://s3fs.googlecode.com/svn/trunk s3fs

I get with

cd s3fs
cd src
g++ -ggdb -Wall -D_FILE_OFFSET_BITS=64   -I/usr/include/libxml2 -L/usr/lib 
-lxml2 -lz -lpthread -licucore -lm -lcrypto s3fs.cpp -o s3fs

I get:

s3fs.cpp:4431: error: ‘VERSION’ was not declared in this scope

doing something dubious I put #define VERSION 26 in the s3fs.h file and tried 
again:

$g++ -Wall -D__FreeBSD__=10 -D_FILE_OFFSET_BITS=64 -I/usr/local/include/fuse 
-L/usr/local/lib -lfuse -pthread -lcurl -lcrypto `xml2-config --cflags --libs` 
-ggdb s3fs.cpp -o s3fs
s3fs.cpp: In function ‘int put_local_fd_big_file(const char*, headers_t, 
int)’:
s3fs.cpp:1610: warning: comparison between signed and unsigned integer 
expressions
s3fs.cpp: In function ‘int s3fs_readlink(const char*, char*, size_t)’:
s3fs.cpp:2129: warning: comparison between signed and unsigned integer 
expressions
s3fs.cpp: In function ‘void show_version()’:
s3fs.cpp:4431: warning: format ‘%s’ expects type ‘char*’, but argument 
2 has type ‘int’
Undefined symbols:
  "lower(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
      _main in cc1Jc2Jq.o
  "IntToStr(int)", referenced from:
      put_local_fd_big_file(char const*, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, int)in cc1Jc2Jq.o
      put_local_fd_big_file(char const*, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, int)in cc1Jc2Jq.o
      rename_directory(char const*, char const*)in cc1Jc2Jq.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

All sorts of dependancy problems.... so, up a directory and:

$./autogen.sh
$./configure

gives: 
checking for DEPS... no
configure: error: Package requirements (fuse >= 2.8.4 libcurl >= 7.0 libxml-2.0 
>= 2.6 libcrypto >= 0.9) were not met:

Requested 'fuse >= 2.8.4' but version of fuse is 2.7.3

$ sudo port install libcrypto
Error: Port libcrypto not found
To report a bug, see <http://guide.macports.org/#project.tickets>
$ sudo port install crypto
Error: Port crypto not found
To report a bug, see <http://guide.macports.org/#project.tickets>
$ sudo port install fuse
Error: Port fuse not found
To report a bug, see <http://guide.macports.org/#project.tickets>
$ sudo port install libxml
--->  Computing dependencies for libxml
--->  Cleaning libxml
$ sudo port list libxml
libxml                         @1.8.17         textproc/libxml
$

what is needed to fix the dependency problem?  are these dependencies available 
for snow leopard?

Original comment by robblov...@gmail.com on 6 Jan 2011 at 1:04

GoogleCodeExporter commented 8 years ago
I also have problem in build on mac:

chengyang:s3fs$./autogen.sh 
configure.ac:7: installing `./config.sub'
configure.ac:8: installing `./missing'
configure.ac:8: installing `./install-sh'
configure.ac:7: installing `./config.guess'
src/Makefile.am: installing `./depcomp'
chengyang:s3fs$./configure 
checking build system type... i386-apple-darwin10.7.0
checking host system type... i386-apple-darwin10.7.0
checking target system type... i386-apple-darwin10.7.0
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
./configure: line 3092: syntax error near unexpected token `DEPS,'
./configure: line 3092: `PKG_CHECK_MODULES(DEPS, fuse >= 2.8.4 libcurl >= 7.0 
libxml-2.0 >= 2.6 libcrypto >= 0.9)'
chengyang:s3fs$

Original comment by yang...@gmail.com on 25 Apr 2011 at 2:43

GoogleCodeExporter commented 8 years ago
I have similar issues on Snow Leopard - mine are relating to the version of 
libfuse. MacFuse seems to have not been updated for three years. Is there a way 
to get a more up-to-date version of Fuse on OSX?

Requested 'fuse >= 2.8.4' but version of fuse is 2.7.3

Original comment by t...@tomkerswill.co.uk on 1 May 2011 at 9:45

GoogleCodeExporter commented 8 years ago
Just to get you past this point, change the minimum required version of fuse in 
the configure.ac file.  It might work or get you to the next issue to be solved.

Theoretically, a newer fuse can be compiled on the Mac, but MacFuse makes it 
more convenient.

Original comment by moore...@gmail.com on 1 May 2011 at 1:27

GoogleCodeExporter commented 8 years ago
Ah, thanks for the pointer. It required updating the configure file, to change 
all references to the version of fuse from 2.8.4 to 2.7.3 (this seems 
hard-coded in a lot of places in the configure file).

Unfortunately, I think the version of Fuse must be quite critical, because 
although I can now run the configure script fine, when I run then the make, I 
get:

s3fs.cpp:3556: error: ‘struct fuse_conn_info’ has no member named 
‘capable’
s3fs.cpp:3556: error: ‘FUSE_CAP_ATOMIC_O_TRUNC’ was not declared in this 
scope
s3fs.cpp:3558: error: ‘struct fuse_conn_info’ has no member named ‘want’

... I do see that there has (last few days) been some talk about resurrecting 
the MacFuse project, so I guess I'll have to wait until that gets up and 
running again.  I've not seen anyone successfully compiling 2.8.4 on a Mac, but 
I'm definitely going to give it a go!

Tom

Original comment by t...@tomkerswill.co.uk on 1 May 2011 at 7:15

GoogleCodeExporter commented 8 years ago
In general, you shouldn't manual change the configure file as it is generated.

I recommended changing the configure.ac file, which is a source file for 
configure.

After changing the configure.ac file, this command will regenerate the 
configure file:

% autoreconf --install --force

Ah, one of the reasons to use a newer fuse shows itself during compile. I 
recall using this newer construct to solve an issue. 

Original comment by dmoore4...@gmail.com on 2 May 2011 at 1:54

GoogleCodeExporter commented 8 years ago
Try fuse4x from macports (or Homebrew). It has version 2.8.5 of libfuse.

Original comment by anatol.p...@gmail.com on 15 Feb 2012 at 8:25

GoogleCodeExporter commented 8 years ago
I have all the required libs, yet I too get a syntax error:
 > ./configure: line 3092: syntax error near unexpected token `DEPS,'
I couldn't figure out how to bypass this one. I removed the line entirely from 
configure.ac, but make threw a bunch of errors. (sigh)

Until this is sorted out, I'm using Transmit 4 to mount s3 as a volume.

Original comment by jrdm...@gmail.com on 4 Jun 2012 at 1:48

GoogleCodeExporter commented 8 years ago
Any updates on getting this working with osxfuse?

Original comment by brye...@gmail.com on 26 Mar 2013 at 12:13

GoogleCodeExporter commented 8 years ago
Quite disappointing that 3 years haven't been long enough... there is an OS X 
.dmg for download, but the app on it does is give an error in Terminal, 
"Illegal instruction: 4". The README says to read INSTALL, but there is no 
INSTALL.

Original comment by kupietz....@gmail.com on 26 Jun 2013 at 4:27

GoogleCodeExporter commented 8 years ago
Hi, all

I tried to run s3fs on OSX 10.8.4, with MacPorts(2.2.0) and OSXFUSE.
Finally, s3fs can run on it, but I can not test completely.

I needed to set/modify some codes and configuration. see below:

1) s3fs:configure.ac
  Remove checking fuse/libxml/libcrypto

  < PKG_CHECK_MODULES([DEPS], [fuse >= 2.8.4 libcurl >= 7.0 libxml-2.0 >= 2.6 libcrypto >= 0.9])
  ---
  > #PKG_CHECK_MODULES([DEPS], [fuse >= 2.8.4 libcurl >= 7.0 libxml-2.0 >= 2.6 libcrypto >= 0.9])

2) run autogen.sh/configure

3) modify(add) src/Makefile
  > DEPS_CFLAGS = -I/usr/include/libxml2 -I/usr/local/include/osxfuse
  > DEPS_LIBS = -pthread -losxfuse -lcurl -lxml2 -lcrypto

4) modify s3fs.cpp
  Comment outed below codes in s3fs_init().

  > //  if((unsigned int)conn->capable & FUSE_CAP_ATOMIC_O_TRUNC){
  > //     conn->want |= FUSE_CAP_ATOMIC_O_TRUNC;
  > //  }

5) make(build) and run s3fs

After that I can run s3fs on OSX, but this is not completely and I worry about 
fuse version.
Probably, latest OSXFUSE is based on fuse 2.7.3, it is too old.
So that, I needed to modify srouce code(s3fs.cpp).
But it seems that s3fs runs without problem.

I tried to build lib fuse 2.9.3 on OSX, but it failed by statfs.h.
I think we need to fix it for s3fs.

If someone knows solution about this, please let me know.

Thanks in advance for your help.

Original comment by ggta...@gmail.com on 6 Oct 2013 at 2:37

GoogleCodeExporter commented 8 years ago
Not sure if I should create a new issue for this ("Get this working in OSX" is 
a pretty broad mandate for a single bug) but here's what Homebrew on Mavericks 
gives me when I attempt "brew install s3fs" (see attached make output).

Original comment by cboettc...@gmail.com on 10 Dec 2013 at 5:26

Attachments:

GoogleCodeExporter commented 8 years ago
I am also having the following error:

make[1]: *** [curl.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [install-recursive] Error 1

Granted, it might be an issue with the homebrew formula.

Original comment by nes...@gmail.com on 20 Jan 2014 at 8:29

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
I'm having the same issue as comment #16 building 1.74 from source on Mac OS 
10.9.1, and my macports build gives the same error.

I have no idea what this means:

    http://stackoverflow.com/questions/19746903/cant-push-a-map-inside-a-vector

but it seems to do the trick (patch for src/curl.h attached). :)

Original comment by christia...@umassmed.edu on 21 Jan 2014 at 6:38

Attachments:

GoogleCodeExporter commented 8 years ago
Hi, all

Thanks for patches, randy have updated a codes on github.
https://github.com/s3fs-fuse/s3fs-fuse/pull/4

Please use latest version v1.76 on 
github(https://github.com/s3fs-fuse/s3fs-fuse/releases).

Regards,

Original comment by ggta...@gmail.com on 4 Feb 2014 at 1:48