c4milo / fusejs

Low level fuse bindings for nodejs
http://c4milo.github.io/fusejs
112 stars 72 forks source link

error installing on OSX #27

Closed ecchi closed 9 years ago

ecchi commented 9 years ago

I've tried a few different configurations. OS tried: Mac OSX 10.7.5, and 10.11.1, node versions tried: iojs 3.3.1, node 0.12.5, and node 5.0.0. osxfuse tried: osxfuse 2.7.5 and 2.8.2. Running pkg-config 0.29

Doesn't seem to matter the configuration.

> fusejs@1.4.0 install /Users/ecchi/Code/node_modules/fusejs
> node-gyp rebuild

  CXX(target) Release/obj.target/fusejs/src/bindings.o
  CXX(target) Release/obj.target/fusejs/src/file_info.o
  CXX(target) Release/obj.target/fusejs/src/filesystem.o
  CXX(target) Release/obj.target/fusejs/src/node_fuse.o
  CXX(target) Release/obj.target/fusejs/src/reply.o
  CXX(target) Release/obj.target/fusejs/src/forget_data.o
../src/forget_data.cc:40:85: error: member access into incomplete type 'struct fuse_forget_data'
                info.GetReturnValue().Set( Nan::New<Integer>(static_cast<uint32_t>(forget_data->fd->ino)));
                                                                                                  ^
../src/forget_data.h:19:20: note: forward declaration of 'NodeFuse::fuse_forget_data'
            struct fuse_forget_data *fd;
                   ^
../src/forget_data.cc:40:87: error: expected ')'
                info.GetReturnValue().Set( Nan::New<Integer>(static_cast<uint32_t>(forget_data->fd->ino)));
                                                                                                    ^
../src/forget_data.cc:40:69: note: to match this '('
                info.GetReturnValue().Set( Nan::New<Integer>(static_cast<uint32_t>(forget_data->fd->ino)));
                                                                                  ^
../src/forget_data.cc:47:86: error: member access into incomplete type 'struct fuse_forget_data'
                info.GetReturnValue().Set( Nan::New<Integer>( static_cast<uint32_t>(forget_data->fd->nlookup)) );
                                                                                                   ^
../src/forget_data.h:19:20: note: forward declaration of 'NodeFuse::fuse_forget_data'
            struct fuse_forget_data *fd;
                   ^
../src/forget_data.cc:47:88: error: expected ')'
                info.GetReturnValue().Set( Nan::New<Integer>( static_cast<uint32_t>(forget_data->fd->nlookup)) );
                                                                                                     ^
../src/forget_data.cc:47:70: note: to match this '('
                info.GetReturnValue().Set( Nan::New<Integer>( static_cast<uint32_t>(forget_data->fd->nlookup)) );
                                                                                   ^
4 errors generated.
make: *** [Release/obj.target/fusejs/src/forget_data.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 15.0.0
gyp ERR! command "/usr/local/bin/iojs" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/ecchi/Code/node_modules/fusejs
gyp ERR! node -v v3.3.1
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok 
npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/iojs" "/usr/local/bin/npm" "install" "fusejs"
npm ERR! node v3.3.1
npm ERR! npm  v2.14.3
npm ERR! code ELIFECYCLE

npm ERR! fusejs@1.4.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the fusejs@1.4.0 install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the fusejs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls fusejs
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/ecchi/Code/npm-debug.log
EricTheMagician commented 9 years ago

I can't tell what the source of the problem is. I might have this problem but fixed it on my computer in an odd way.

Can you run this command "pkg-config fuse --cflags-only-I" and go the path for fuse without the -I. On my system, it showed "-I/usr/local/include/osxfuse/fuse" after running it. And I went to "/usr/local/include/osxfuse/fuse".

Can you send me the "fuse_lowlevel.h" from that folder?

On Wed, Nov 4, 2015 at 6:02 PM ecchi notifications@github.com wrote:

I've tried a few different configurations. OS tried: Mac OSX 10.7.5, and 10.11.1, node versions tried: iojs 3.3.1, node 0.12.5, and node 5.0.0. osxfuse tried: osxfuse 2.7.5 and 2.8.2. Running pkg-config 0.29

Doesn't seem to matter the configuration.

fusejs@1.4.0 install /Users/ecchi/Code/node_modules/fusejs node-gyp rebuild

CXX(target) Release/obj.target/fusejs/src/bindings.o CXX(target) Release/obj.target/fusejs/src/file_info.o CXX(target) Release/obj.target/fusejs/src/filesystem.o CXX(target) Release/obj.target/fusejs/src/node_fuse.o CXX(target) Release/obj.target/fusejs/src/reply.o CXX(target) Release/obj.target/fusejs/src/forget_data.o ../src/forget_data.cc:40:85: error: member access into incomplete type 'struct fuse_forget_data' info.GetReturnValue().Set( Nan::New(static_cast(forget_data->fd->ino))); ^ ../src/forget_data.h:19:20: note: forward declaration of 'NodeFuse::fuse_forget_data' struct fuse_forget_data _fd; ^ ../src/forget_data.cc:40:87: error: expected ')' info.GetReturnValue().Set( Nan::New(static_cast(forget_data->fd->ino))); ^ ../src/forget_data.cc:40:69: note: to match this '(' info.GetReturnValue().Set( Nan::New(static_cast(forget_data->fd->ino))); ^ ../src/forget_data.cc:47:86: error: member access into incomplete type 'struct fuse_forget_data' info.GetReturnValue().Set( Nan::New( static_cast(forget_data->fd->nlookup)) ); ^ ../src/forget_data.h:19:20: note: forward declaration of 'NodeFuse::fuse_forget_data' struct fuse_forget_data fd; ^ ../src/forget_data.cc:47:88: error: expected ')' info.GetReturnValue().Set( Nan::New( static_cast(forget_data->fd->nlookup)) ); ^ ../src/forget_data.cc:47:70: note: to match this '(' info.GetReturnValue().Set( Nan::New( static_cast(forget_data->fd->nlookup)) ); ^ 4 errors generated. make: _* [Release/obj.target/fusejs/src/forget_data.o] Error 1 gyp ERR! build error gyp ERR! stack Error: make failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23) gyp ERR! stack at emitTwo (events.js:87:13) gyp ERR! stack at ChildProcess.emit (events.js:172:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) gyp ERR! System Darwin 15.0.0 gyp ERR! command "/usr/local/bin/iojs" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /Users/ecchi/Code/node_modules/fusejs gyp ERR! node -v v3.3.1 gyp ERR! node-gyp -v v3.0.3 gyp ERR! not ok npm ERR! Darwin 15.0.0 npm ERR! argv "/usr/local/bin/iojs" "/usr/local/bin/npm" "install" "fusejs" npm ERR! node v3.3.1 npm ERR! npm v2.14.3 npm ERR! code ELIFECYCLE

npm ERR! fusejs@1.4.0 install: node-gyp rebuild npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the fusejs@1.4.0 install script 'node-gyp rebuild'. npm ERR! This is most likely a problem with the fusejs package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls fusejs npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request: npm ERR! /Users/ecchi/Code/npm-debug.log

— Reply to this email directly or view it on GitHub https://github.com/c4milo/fusejs/issues/27.

Eric

ecchi commented 9 years ago

same path for me too. attached lowlevel to zippyshare (since I'm not authorized to attach files here)

http://www35.zippyshare.com/v/J9P5zCkZ/file.html

EricTheMagician commented 9 years ago

Could you try the PR i made? I don't want to pull it before it compiles for you.

ecchi commented 9 years ago

Slightly different output.

➜  fusejs git:(master) npm install
npm WARN package.json fusejs@1.4.1 'repositories' (plural) Not supported. Please pick one as the 'repository' field
-
> fusejs@1.4.1 install /Users/ecchi/GitHub/fusejs
> node-gyp rebuild

  CXX(target) Release/obj.target/fusejs/src/bindings.o
  CXX(target) Release/obj.target/fusejs/src/file_info.o
  CXX(target) Release/obj.target/fusejs/src/filesystem.o
In file included from ../src/filesystem.cc:11:
../src/mpmc_queue.h:19:10: fatal error: 'atomic' file not found
#include <atomic>
         ^
1 error generated.
make: *** [Release/obj.target/fusejs/src/filesystem.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 15.0.0
gyp ERR! command "/usr/local/bin/iojs" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/ecchi/GitHub/fusejs
gyp ERR! node -v v3.3.1
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok 

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/iojs" "/usr/local/bin/npm" "install"
npm ERR! node v3.3.1
npm ERR! npm  v2.14.3
npm ERR! code ELIFECYCLE
npm ERR! fusejs@1.4.1 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the fusejs@1.4.1 install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the fusejs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls fusejs
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/ecchi/GitHub/fusejs/npm-debug.log
EricTheMagician commented 9 years ago

Do you have access to the GNU GCC? I've been using the GNU GCC/G++ 4.8 and newer, but if you don't have access to it, I can work around it I think.

On Tue, Nov 10, 2015 at 12:26 PM ecchi notifications@github.com wrote:

Slightly different output.

➜ fusejs git:(master) npm install

npm WARN package.json fusejs@1.4.1 'repositories' (plural) Not supported. Please pick one as the 'repository' field

fusejs@1.4.1 install /Users/ecchi/GitHub/fusejs node-gyp rebuild

CXX(target) Release/obj.target/fusejs/src/bindings.o CXX(target) Release/obj.target/fusejs/src/file_info.o CXX(target) Release/obj.target/fusejs/src/filesystem.o In file included from ../src/filesystem.cc:11: ../src/mpmc_queue.h:19:10: fatal error: 'atomic' file not found

include

     ^

1 error generated. make: *\ [Release/obj.target/fusejs/src/filesystem.o] Error 1 gyp ERR! build error gyp ERR! stack Error: make failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23) gyp ERR! stack at emitTwo (events.js:87:13) gyp ERR! stack at ChildProcess.emit (events.js:172:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) gyp ERR! System Darwin 15.0.0 gyp ERR! command "/usr/local/bin/iojs" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /Users/ecchi/GitHub/fusejs gyp ERR! node -v v3.3.1 gyp ERR! node-gyp -v v3.0.3 gyp ERR! not ok

npm ERR! Darwin 15.0.0 npm ERR! argv "/usr/local/bin/iojs" "/usr/local/bin/npm" "install" npm ERR! node v3.3.1 npm ERR! npm v2.14.3 npm ERR! code ELIFECYCLE npm ERR! fusejs@1.4.1 install: node-gyp rebuild npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the fusejs@1.4.1 install script 'node-gyp rebuild'. npm ERR! This is most likely a problem with the fusejs package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls fusejs npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request: npm ERR! /Users/ecchi/GitHub/fusejs/npm-debug.log

— Reply to this email directly or view it on GitHub https://github.com/c4milo/fusejs/issues/27#issuecomment-155498782.

Eric

ecchi commented 9 years ago

no, it appears Xcode uses 4.2.1

gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1
Apple LLVM version 7.0.0 (clang-700.1.76)
Target: x86_64-apple-darwin15.0.0
Thread model: posix

I can install a different version with homebrew, but I would prefer not messing with it.

EricTheMagician commented 9 years ago

I have a different version installed through homebrew. It leaves the binary as gcc-4.8 or g++-4.8.

I can set it up tonight such that it can work with Apple's compiler.

On Tue, Nov 10, 2015 at 1:13 PM ecchi notifications@github.com wrote:

no, it appears Xcode uses 4.2.1

gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1 Apple LLVM version 7.0.0 (clang-700.1.76) Target: x86_64-apple-darwin15.0.0 Thread model: posix

I can install a different version with homebrew, but I would prefer not messing with it.

— Reply to this email directly or view it on GitHub https://github.com/c4milo/fusejs/issues/27#issuecomment-155518766.

Eric

EricTheMagician commented 9 years ago

Can you try it now?

ecchi commented 9 years ago

still compiling errors, new ones though:

➜  fusejs git:(master) ✗ npm install
npm WARN package.json fusejs@1.4.1 'repositories' (plural) Not supported. Please pick one as the 'repository' field

> fusejs@1.4.1 install /Users/gregd/GitHub/fusejs
> node-gyp rebuild

  CXX(target) Release/obj.target/fusejs/src/bindings.o
  CXX(target) Release/obj.target/fusejs/src/file_info.o
  CXX(target) Release/obj.target/fusejs/src/filesystem.o
  CXX(target) Release/obj.target/fusejs/src/node_fuse.o
  CXX(target) Release/obj.target/fusejs/src/reply.o
  CXX(target) Release/obj.target/fusejs/src/forget_data.o
  SOLINK_MODULE(target) Release/fusejs.node
clang: warning: argument unused during compilation: '-pthread'
ld: warning: object file (Release/obj.target/fusejs/src/bindings.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/fusejs/src/file_info.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/fusejs/src/filesystem.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/fusejs/src/node_fuse.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/fusejs/src/reply.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/fusejs/src/forget_data.o) was built for newer OSX version (10.7) than being linked (10.5)

This was the 10.11.1 machine

EricTheMagician commented 9 years ago

Can you give it a try to see if it works? It does give a warning, but it's not an error. It does work on my laptop.

At the very least, running require(fusejs) should not cause nodejs to crash.

ecchi commented 9 years ago

Ok. This treads into your node-gdrive territory, but its the only means I have of testing this. I changed your node-gdrive package.json to point to your github of fusejs. Yes, same warnings, but no errors.

However running iojs client.es6.js produces:

client.es6.js:119
            setImmediate( ()=> { queryDatabaseAndParseFiles(offset) } );
                           ^

SyntaxError: Unexpected token )
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:413:25)
    at Object.Module._extensions..js (module.js:448:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:471:10)
    at startup (node.js:117:18)
    at node.js:951:3

I have my config from way back when it was still coffee-script. So I also tried: iojs fs.es6.js:

iojs fs.es6.js
/Users/ecchi/Code/node-gdrive-fuse/src/client.es6.js:119
            setImmediate( ()=> { queryDatabaseAndParseFiles(offset) } );
                           ^

SyntaxError: Unexpected token )
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:413:25)
    at Object.Module._extensions..js (module.js:448:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/Users/ecchi/Code/node-gdrive-fuse/src/fs.es6.js:12:16)
    at Module._compile (module.js:430:26)
    at Object.Module._extensions..js (module.js:448:10)
EricTheMagician commented 9 years ago

Can you try with nodejs v4 or 5? I've started using fat arrows and I'm not sure if they are available in all versions of nodejs/iojs.

ecchi commented 9 years ago

node 5.0

node fs.es6.js 
module.js:450
  return process.dlopen(module, path._makeLong(filename));
                 ^

Error: Module version mismatch. Expected 47, got 45.
    at Error (native)
    at Object.Module._extensions..node (module.js:450:18)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/Users/ecchi/Code/node-gdrive-fuse/node_modules/fusejs/fuse.js:5:16)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
➜  src git:(master) ✗ node client.es6.js 
module.js:450
  return process.dlopen(module, path._makeLong(filename));
                 ^
Error: Module version mismatch. Expected 47, got 45.
    at Error (native)
    at Object.Module._extensions..node (module.js:450:18)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/Users/ecchi/Code/node-gdrive-fuse/node_modules/mmmagic/index.js:3:13)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
EricTheMagician commented 9 years ago

Did you recompile the modules first? i.e. run npm install. There was an API change between version 3/4 and 5, which would cause those errors.

Just to be safe, I would just remove the node_modules folder, and then run npm install again.

ecchi commented 9 years ago

you are right, sorry for not re-compiling. It works now :)