Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failing to build #5

Closed
ezzatron opened this issue Dec 7, 2020 · 4 comments · Fixed by #6
Closed

Failing to build #5

ezzatron opened this issue Dec 7, 2020 · 4 comments · Fixed by #6

Comments

@ezzatron
Copy link

ezzatron commented Dec 7, 2020

I was going to try this module out, but it fails to build on my macOS Catalina machine with the following error when trying a yarn add:

error /path/to/project/node_modules/posix-semaphore: Command failed.
Exit code: 1
Command: node-gyp rebuild
Arguments:
Directory: /path/to/project/node_modules/posix-semaphore
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@7.1.2
gyp info using node@15.3.0 | darwin | x64
gyp info find Python using Python version 2.7.16 found at "/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python"
gyp info spawn /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
gyp info spawn args [
gyp info spawn args   '/usr/local/Cellar/node/15.3.0/libexec/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/path/to/project/node_modules/posix-semaphore/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/local/Cellar/node/15.3.0/libexec/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/Users/erin/Library/Caches/node-gyp/15.3.0',
gyp info spawn args   '-Dnode_gyp_dir=/usr/local/Cellar/node/15.3.0/libexec/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/Users/erin/Library/Caches/node-gyp/15.3.0/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/path/to/project/node_modules/posix-semaphore',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
  CXX(target) Release/obj.target/addon/srcs/semaphore.o
../srcs/semaphore.cc:25:9: warning: 'sem_getvalue' is deprecated [-Wdeprecated-declarations]
    if (sem_getvalue(this->semaphore, &sval)) sval = -1;
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/semaphore.h:54:56: note: 'sem_getvalue' has been explicitly marked deprecated here
int sem_getvalue(sem_t * __restrict, int * __restrict) __deprecated;
                                                       ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/cdefs.h:187:40: note: expanded from macro '__deprecated'
#define __deprecated    __attribute__((__deprecated__))
                                       ^
../srcs/semaphore.cc:54:38: error: too few arguments to function call, single argument 'context' was not specified
  constructor.Reset(tpl->GetFunction());
                    ~~~~~~~~~~~~~~~~ ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8.h:6497:3: note: 'GetFunction' declared here
  V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
  ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8config.h:431:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../srcs/semaphore.cc:55:73: error: too few arguments to function call, single argument 'context' was not specified
  exports->Set(Nan::New("Semaphore").ToLocalChecked(), tpl->GetFunction());
                                                       ~~~~~~~~~~~~~~~~ ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8.h:6497:3: note: 'GetFunction' declared here
  V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
  ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8config.h:431:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../srcs/semaphore.cc:83:34: error: too few arguments to function call, single argument 'isolate' was not specified
  strict = info[1]->BooleanValue();
           ~~~~~~~~~~~~~~~~~~~~~ ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8.h:2904:3: note: 'BooleanValue' declared here
  bool BooleanValue(Isolate* isolate) const;
  ^
../srcs/semaphore.cc:84:33: error: too few arguments to function call, single argument 'isolate' was not specified
  debug = info[2]->BooleanValue();
          ~~~~~~~~~~~~~~~~~~~~~ ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8.h:2904:3: note: 'BooleanValue' declared here
  bool BooleanValue(Isolate* isolate) const;
  ^
../srcs/semaphore.cc:85:34: error: too few arguments to function call, single argument 'isolate' was not specified
  silent = info[3]->BooleanValue();
           ~~~~~~~~~~~~~~~~~~~~~ ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8.h:2904:3: note: 'BooleanValue' declared here
  bool BooleanValue(Isolate* isolate) const;
  ^
../srcs/semaphore.cc:86:42: error: too few arguments to function call, single argument 'isolate' was not specified
  retry_on_eintr = info[4]->BooleanValue();
                   ~~~~~~~~~~~~~~~~~~~~~ ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8.h:2904:3: note: 'BooleanValue' declared here
  bool BooleanValue(Isolate* isolate) const;
  ^
../srcs/semaphore.cc:87:58: error: too few arguments to function call, single argument 'context' was not specified
  value = !info[5]->IsUndefined()? info[5]->IntegerValue(): 1;
                                   ~~~~~~~~~~~~~~~~~~~~~ ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8.h:2909:3: note: 'IntegerValue' declared here
  V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(
  ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8config.h:431:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../srcs/semaphore.cc:88:47: error: too few arguments to function call, single argument 'context' was not specified
  v8::String::Utf8Value str(info[0]->ToString());
                            ~~~~~~~~~~~~~~~~~ ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8.h:2856:3: note: 'ToString' declared here
  V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
  ^
/Users/erin/Library/Caches/node-gyp/15.3.0/include/node/v8config.h:431:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../srcs/semaphore.cc:114:9: warning: 'sem_getvalue' is deprecated [-Wdeprecated-declarations]
    if (sem_getvalue(obj->semaphore, &sval)) sval = -1;
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/semaphore.h:54:56: note: 'sem_getvalue' has been explicitly marked deprecated here
int sem_getvalue(sem_t * __restrict, int * __restrict) __deprecated;
                                                       ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/cdefs.h:187:40: note: expanded from macro '__deprecated'
#define __deprecated    __attribute__((__deprecated__))
                                       ^
../srcs/semaphore.cc:144:9: warning: 'sem_getvalue' is deprecated [-Wdeprecated-declarations]
    if (sem_getvalue(obj->semaphore, &sval)) sval = -1;
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/semaphore.h:54:56: note: 'sem_getvalue' has been explicitly marked deprecated here
int sem_getvalue(sem_t * __restrict, int * __restrict) __deprecated;
                                                       ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/cdefs.h:187:40: note: expanded from macro '__deprecated'
#define __deprecated    __attribute__((__deprecated__))
                                       ^
../srcs/semaphore.cc:165:9: warning: 'sem_getvalue' is deprecated [-Wdeprecated-declarations]
    if (sem_getvalue(obj->semaphore, &sval)) sval = -1;
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/semaphore.h:54:56: note: 'sem_getvalue' has been explicitly marked deprecated here
int sem_getvalue(sem_t * __restrict, int * __restrict) __deprecated;
                                                       ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/cdefs.h:187:40: note: expanded from macro '__deprecated'
#define __deprecated    __attribute__((__deprecated__))
                                       ^
../srcs/semaphore.cc:180:9: warning: 'sem_getvalue' is deprecated [-Wdeprecated-declarations]
    if (sem_getvalue(obj->semaphore, &sval)) sval = -1;
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/semaphore.h:54:56: note: 'sem_getvalue' has been explicitly marked deprecated here
int sem_getvalue(sem_t * __restrict, int * __restrict) __deprecated;
                                                       ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/cdefs.h:187:40: note: expanded from macro '__deprecated'
#define __deprecated    __attribute__((__deprecated__))
                                       ^
5 warnings and 8 errors generated.
make: *** [Release/obj.target/addon/srcs/semaphore.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/Cellar/node/15.3.0/libexec/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (node:events:376:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:277:12)
gyp ERR! System Darwin 19.6.0
gyp ERR! command "/usr/local/Cellar/node/15.3.0/bin/node" "/usr/local/Cellar/node/15.3.0/libexec/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /path/to/project/node_modules/posix-semaphore
gyp ERR! node -v v15.3.0
gyp ERR! node-gyp -v v7.1.2

Thought you might appreciate a heads up. Let me know if you need any further info about my system.

EDIT: Updated error output after fixing macOS command line tools warnings.

@dbousque
Copy link
Owner

dbousque commented Dec 7, 2020

Hi there, thanks for the report! Looks like it's some issue with the combination of node-gyp/nan/nodejs versions. I tried a few of the combinations I thought were working in the past, but failed to get a working build on macOS Catalina as well.

We probably need to rewrite the nodejs - C++ intercommunication glue code (currently uses nan), but I don't have time to invest in that right now, I'll let you know if that changes! You could maybe take a look at N-API if you care to, it's probably a few hours worth of investment if you don't have experience with it, probably a few tens of minutes if you do.

@szymonWojdat
Copy link
Contributor

Hey I faced the same set of issues and managed to fix this locally for myself, going to issue a PR soon. Two things here went wrong:

  • sem_getvalue is deprecated on OSX as it doesn't support unnamed semaphores. Fortunately it was only used inside debug statements, so I removed them.
  • this lib was using some deprecated nan APIs, I updated them. This thread was helpful as I felt like nan was poorly documented.

@dbousque
Copy link
Owner

dbousque commented Jan 3, 2021

Awesome, thanks @szymonWojdat ! Let's continue the discussion in the PR.

@dbousque
Copy link
Owner

dbousque commented Jan 3, 2021

Thanks to you both @ezzatron and @szymonWojdat , the fixes are available in the new version 1.0.0!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants