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

warning Error: running install script for optional dependency scrypt #234

Open
nottakis opened this issue May 25, 2020 · 3 comments
Open

Comments

@nottakis
Copy link
Contributor

When we run npm install or yarn on the Node v12, it omits the Warning.

[4/15] ⠐ scrypt
warning Error running install script for optional dependency: "/workspaces/hack/website/node_modules/scrypt: Command failed.
Exit code: 1
Command: node-gyp rebuild
Arguments: 
Directory: /workspaces/hack/website/node_modules/scrypt
Output:
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info find Python using Python version 2.7.13 found at \"/usr/bin/python\"
gyp info spawn /usr/bin/python
gyp info spawn args [
gyp info spawn args   '/usr/local/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   '/workspaces/hack/website/node_modules/scrypt/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/root/.cache/node-gyp/12.14.1/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/root/.cache/node-gyp/12.14.1',
gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/root/.cache/node-gyp/12.14.1/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/workspaces/hack/website/node_modules/scrypt',
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' ]
make: Entering directory '/workspaces/hack/website/node_modules/scrypt/build'
  SOLINK_MODULE(target) Release/obj.target/copied_files.node
  COPY Release/copied_files.node
  CC(target) Release/obj.target/scrypt_wrapper/src/util/memlimit.o
  CC(target) Release/obj.target/scrypt_wrapper/src/scryptwrapper/keyderivation.o
  CC(target) Release/obj.target/scrypt_wrapper/src/scryptwrapper/pickparams.o
  CC(target) Release/obj.target/scrypt_wrapper/src/scryptwrapper/hash.o
  AR(target) Release/obj.target/scrypt_wrapper.a
  COPY Release/scrypt_wrapper.a
  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/lib/crypto/crypto_scrypt.o
  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/lib/crypto/crypto_scrypt_smix.o
  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/libcperciva/util/warnp.o
  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/libcperciva/alg/sha256.o
  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/libcperciva/util/insecure_memzero.o
  CC(target) Release/obj.target/scrypt_lib/scrypt/scrypt-1.2.0/lib/scryptenc/scryptenc_cpuperf.o
  AR(target) Release/obj.target/scrypt_lib.a
  COPY Release/scrypt_lib.a
  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_common.o
  CXX(target) Release/obj.target/scrypt/src/node-boilerplate/scrypt_params_async.o
In file included from ../src/node-boilerplate/inc/scrypt_async.h:28:0,
                 from ../src/node-boilerplate/inc/scrypt_params_async.h:28,
                 from ../src/node-boilerplate/scrypt_params_async.cc:4:
../src/node-boilerplate/inc/scrypt_common.h: In constructor 'NodeScrypt::Params::Params(const v8::Local<v8::Object>&)':
../src/node-boilerplate/inc/scrypt_common.h:39:48: warning: 'v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)' is deprecated: Use maybe version [-Wdeprecated-declarations]
       N(obj->Get(Nan::New(\"N\").ToLocalChecked())->Uint32Value()),
                                                ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/v8-internal.h:14:0,
                 from /root/.cache/node-gyp/12.14.1/include/node/v8.h:25,
                 from /root/.cache/node-gyp/12.14.1/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:3457:51: note: declared here
   V8_DEPRECATED(\"Use maybe version\", Local<Value> Get(Local<Value> key));
                                                   ^
/root/.cache/node-gyp/12.14.1/include/node/v8config.h:311:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/node-boilerplate/inc/scrypt_async.h:28:0,
                 from ../src/node-boilerplate/inc/scrypt_params_async.h:28,
                 from ../src/node-boilerplate/scrypt_params_async.cc:4:
../src/node-boilerplate/inc/scrypt_common.h:39:63: error: no matching function for call to 'v8::Value::Uint32Value()'
       N(obj->Get(Nan::New(\"N\").ToLocalChecked())->Uint32Value()),
                                                               ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/node.h:63:0,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2611:41: note: candidate: v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
                                         ^~~~~~~~~~~
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2611:41: note:   candidate expects 1 argument, 0 provided
In file included from ../src/node-boilerplate/inc/scrypt_async.h:28:0,
                 from ../src/node-boilerplate/inc/scrypt_params_async.h:28,
                 from ../src/node-boilerplate/scrypt_params_async.cc:4:
../src/node-boilerplate/inc/scrypt_common.h:40:48: warning: 'v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)' is deprecated: Use maybe version [-Wdeprecated-declarations]
       r(obj->Get(Nan::New(\"r\").ToLocalChecked())->Uint32Value()),
                                                ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/v8-internal.h:14:0,
                 from /root/.cache/node-gyp/12.14.1/include/node/v8.h:25,
                 from /root/.cache/node-gyp/12.14.1/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:3457:51: note: declared here
   V8_DEPRECATED(\"Use maybe version\", Local<Value> Get(Local<Value> key));
                                                   ^
/root/.cache/node-gyp/12.14.1/include/node/v8config.h:311:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/node-boilerplate/inc/scrypt_async.h:28:0,
                 from ../src/node-boilerplate/inc/scrypt_params_async.h:28,
                 from ../src/node-boilerplate/scrypt_params_async.cc:4:
../src/node-boilerplate/inc/scrypt_common.h:40:63: error: no matching function for call to 'v8::Value::Uint32Value()'
       r(obj->Get(Nan::New(\"r\").ToLocalChecked())->Uint32Value()),
                                                               ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/node.h:63:0,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2611:41: note: candidate: v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
                                         ^~~~~~~~~~~
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2611:41: note:   candidate expects 1 argument, 0 provided
In file included from ../src/node-boilerplate/inc/scrypt_async.h:28:0,
                 from ../src/node-boilerplate/inc/scrypt_params_async.h:28,
                 from ../src/node-boilerplate/scrypt_params_async.cc:4:
../src/node-boilerplate/inc/scrypt_common.h:41:48: warning: 'v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)' is deprecated: Use maybe version [-Wdeprecated-declarations]
       p(obj->Get(Nan::New(\"p\").ToLocalChecked())->Uint32Value()) {}
                                                ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/v8-internal.h:14:0,
                 from /root/.cache/node-gyp/12.14.1/include/node/v8.h:25,
                 from /root/.cache/node-gyp/12.14.1/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:3457:51: note: declared here
   V8_DEPRECATED(\"Use maybe version\", Local<Value> Get(Local<Value> key));
                                                   ^
/root/.cache/node-gyp/12.14.1/include/node/v8config.h:311:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/node-boilerplate/inc/scrypt_async.h:28:0,
                 from ../src/node-boilerplate/inc/scrypt_params_async.h:28,
                 from ../src/node-boilerplate/scrypt_params_async.cc:4:
../src/node-boilerplate/inc/scrypt_common.h:41:63: error: no matching function for call to 'v8::Value::Uint32Value()'
       p(obj->Get(Nan::New(\"p\").ToLocalChecked())->Uint32Value()) {}
                                                               ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/node.h:63:0,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2611:41: note: candidate: v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
                                         ^~~~~~~~~~~
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2611:41: note:   candidate expects 1 argument, 0 provided
In file included from ../src/node-boilerplate/inc/scrypt_params_async.h:28:0,
                 from ../src/node-boilerplate/scrypt_params_async.cc:4:
../src/node-boilerplate/inc/scrypt_async.h: In member function 'virtual void ScryptAsyncWorker::HandleErrorCallback()':
../src/node-boilerplate/inc/scrypt_async.h:53:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/node-boilerplate/scrypt_params_async.cc:1:0:
../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
In file included from ../src/node-boilerplate/scrypt_params_async.cc:4:0:
../src/node-boilerplate/inc/scrypt_params_async.h: In constructor 'ScryptParamsAsyncWorker::ScryptParamsAsyncWorker(Nan::NAN_METHOD_ARGS_TYPE)':
../src/node-boilerplate/inc/scrypt_params_async.h:35:36: error: no matching function for call to 'v8::Value::NumberValue()'
       maxtime(info[0]->NumberValue()),
                                    ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/node.h:63:0,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2608:39: note: candidate: v8::Maybe<double> v8::Value::NumberValue(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT Maybe<double> NumberValue(Local<Context> context) const;
                                       ^~~~~~~~~~~
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2608:39: note:   candidate expects 1 argument, 0 provided
In file included from ../src/node-boilerplate/scrypt_params_async.cc:4:0:
../src/node-boilerplate/inc/scrypt_params_async.h:36:39: error: no matching function for call to 'v8::Value::NumberValue()'
       maxmemfrac(info[1]->NumberValue()),
                                       ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/node.h:63:0,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2608:39: note: candidate: v8::Maybe<double> v8::Value::NumberValue(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT Maybe<double> NumberValue(Local<Context> context) const;
                                       ^~~~~~~~~~~
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2608:39: note:   candidate expects 1 argument, 0 provided
In file included from ../src/node-boilerplate/scrypt_params_async.cc:4:0:
../src/node-boilerplate/inc/scrypt_params_async.h:37:36: error: no matching function for call to 'v8::Value::IntegerValue()'
       maxmem(info[2]->IntegerValue()),
                                    ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/node.h:63:0,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2609:40: note: candidate: v8::Maybe<long int> v8::Value::IntegerValue(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(
                                        ^~~~~~~~~~~~
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2609:40: note:   candidate expects 1 argument, 0 provided
In file included from ../src/node-boilerplate/scrypt_params_async.cc:4:0:
../src/node-boilerplate/inc/scrypt_params_async.h:38:39: error: no matching function for call to 'v8::Value::IntegerValue()'
       osfreemem(info[3]->IntegerValue())
                                       ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/node.h:63:0,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2609:40: note: candidate: v8::Maybe<long int> v8::Value::IntegerValue(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(
                                        ^~~~~~~~~~~~
/root/.cache/node-gyp/12.14.1/include/node/v8.h:2609:40: note:   candidate expects 1 argument, 0 provided
../src/node-boilerplate/scrypt_params_async.cc: In member function 'virtual void ScryptParamsAsyncWorker::HandleOKCallback()':
../src/node-boilerplate/scrypt_params_async.cc:23:67: warning: 'bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)' is deprecated: Use maybe version [-Wdeprecated-declarations]
   obj->Set(Nan::New(\"N\").ToLocalChecked(), Nan::New<Integer>(logN));
                                                                   ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/v8-internal.h:14:0,
                 from /root/.cache/node-gyp/12.14.1/include/node/v8.h:25,
                 from /root/.cache/node-gyp/12.14.1/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:3403:22: note: declared here
                 bool Set(Local<Value> key, Local<Value> value));
                      ^
/root/.cache/node-gyp/12.14.1/include/node/v8config.h:311:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-boilerplate/scrypt_params_async.cc:24:64: warning: 'bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)' is deprecated: Use maybe version [-Wdeprecated-declarations]
   obj->Set(Nan::New(\"r\").ToLocalChecked(), Nan::New<Integer>(r));
                                                                ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/v8-internal.h:14:0,
                 from /root/.cache/node-gyp/12.14.1/include/node/v8.h:25,
                 from /root/.cache/node-gyp/12.14.1/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:3403:22: note: declared here
                 bool Set(Local<Value> key, Local<Value> value));
                      ^
/root/.cache/node-gyp/12.14.1/include/node/v8config.h:311:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-boilerplate/scrypt_params_async.cc:25:64: warning: 'bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)' is deprecated: Use maybe version [-Wdeprecated-declarations]
   obj->Set(Nan::New(\"p\").ToLocalChecked(), Nan::New<Integer>(p));
                                                                ^
In file included from /root/.cache/node-gyp/12.14.1/include/node/v8-internal.h:14:0,
                 from /root/.cache/node-gyp/12.14.1/include/node/v8.h:25,
                 from /root/.cache/node-gyp/12.14.1/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/node-boilerplate/scrypt_params_async.cc:1:
/root/.cache/node-gyp/12.14.1/include/node/v8.h:3403:22: note: declared here
                 bool Set(Local<Value> key, Local<Value> value));
                      ^
/root/.cache/node-gyp/12.14.1/include/node/v8config.h:311:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-boilerplate/scrypt_params_async.cc:32:25: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
   callback->Call(2, argv);
                         ^
In file included from ../src/node-boilerplate/scrypt_params_async.cc:1:0:
../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
scrypt.target.mk:129: recipe for target 'Release/obj.target/scrypt/src/node-boilerplate/scrypt_params_async.o' failed
make: Leaving directory '/workspaces/hack/website/node_modules/scrypt/build'
make: *** [Release/obj.target/scrypt/src/node-boilerplate/scrypt_params_async.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:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:223:5)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Linux 4.19.76-linuxkit
gyp ERR! command \"/usr/local/bin/node\" \"/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js\" \"rebuild\"
gyp ERR! cwd /workspaces/hack/website/node_modules/scrypt
success Saved lockfile.
Done in 120.42s.
root@13f6fdd102a8:/workspaces/hack/website#

It's somewhat overwhelming who tries to contribute to the repository.
This happens because @aragon/os is specified as a dependency, which uses Nodev8 as a runtime.
*Node v10 works

It also happens on the https://github.com/aragon/aragon because of the same reason.
There might be other repositories.

We can see on the CI too. In Install dependencies step:
https://github.com/aragon/aragon/runs/690392490?check_suite_focus=true

@nottakis
Copy link
Contributor Author

I'm still exploring the repositories, so I can't say the best way to fix it, but I made it as a reminder.
If there are any suggestions, I can handle that.

@sohkai
Copy link
Contributor

sohkai commented May 25, 2020

Ah yes, we must have updated packages/etc. for this repo to be compatible with node 12 (lots of older crypto libraries broke with node 12 and scrypt).

In the meantime, if you use nvm or another node package manager, you can downgrade to 11 or 10 and it should work! But yes, definitely something for us to fix :).

I believe building this on node 12 will work, but just scrypt complains. It's partly due to the @aragon/os package containing too much—it shouldn't be bundling the crypto dependencies (truffle-hd-provider, etc.) and that will be fixed soon.

@nottakis
Copy link
Contributor Author

Thanks for the quick response! So it's a popular pitfall:)

Good to hear that it will be fixed!

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

No branches or pull requests

2 participants