hack icon indicating copy to clipboard operation
hack copied to clipboard

warning Error: running install script for optional dependency scrypt

Open nottakis opened this issue 4 years ago • 3 comments

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 avatar May 25 '20 08:05 nottakis

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.

nottakis avatar May 25 '20 08:05 nottakis

~~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.

sohkai avatar May 25 '20 11:05 sohkai

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

Good to hear that it will be fixed!

nottakis avatar May 25 '20 14:05 nottakis