[PLUGIN] GPIO CONTROL: CONTROL GPIO WITH VOLUMIO2 EVENTS

Thank you,
It fails :

Command Result
volumio@volumio:~$ sudo apt-get update
Get:1 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
Get:2 http://archive.raspberrypi.org/debian buster InRelease [32.6 kB]
Hit:3 https://deb.nodesource.com/node_14.x buster InRelease
Get:4 http://archive.raspberrypi.org/debian buster/main armhf Packages [393 kB]
Fetched 441 kB in 1s (313 kB/s)
Reading package lists... Done
volumio@volumio:~$ sudo apt-get -y install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version (12.6).
0 upgraded, 0 newly installed, 0 to remove and 14 not upgraded.
volumio@volumio:~$ npm install --prefix "/data/plugins/system_controller/gpio_control" onoff@^1.1.1

> epoll@1.0.2 install /data/plugins/system_controller/gpio_control/node_modules/epoll
> node-gyp rebuild

make: Entering directory '/data/plugins/system_controller/gpio_control/node_modules/epoll/build'
  CXX(target) Release/obj.target/epoll/src/epoll.o
In file included from ../../nan/nan_converters.h:67,
                 from ../../nan/nan.h:202,
                 from ../src/epoll.cc:15:
../../nan/nan_converters_43_inl.h: In static member function 'static Nan::imp::ToFactoryBase<v8::Boolean>::return_t Nan::imp::ToFactory<v8::Boolean>::convert(v8::Local<v8::Value>)':
../../nan/nan_converters_43_inl.h:18:69: error: no matching function for call to 'v8::Value::ToBoolean(v8::Local<v8::Context>)'
       val->To ## TYPE(v8::Isolate::GetCurrent()->GetCurrentContext())          \
                                                                     ^
../../nan/nan_converters_43_inl.h:22:1: note: in expansion of macro 'X'
 X(Boolean)
 ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2848:18: note: candidate: 'v8::Local<v8::Boolean> v8::Value::ToBoolean(v8::Isolate*) const'
   Local<Boolean> ToBoolean(Isolate* isolate) const;
                  ^~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2848:18: note:   no known conversion for argument 1 from 'v8::Local<v8::Context>' to 'v8::Isolate*'
In file included from ../../nan/nan_converters.h:67,
                 from ../../nan/nan.h:202,
                 from ../src/epoll.cc:15:
../../nan/nan_converters_43_inl.h: In static member function 'static Nan::imp::ValueFactoryBase<bool>::return_t Nan::imp::ToFactory<bool>::convert(v8::Local<v8::Value>)':
../../nan/nan_converters_43_inl.h:37:57: error: no matching function for call to 'v8::Value::BooleanValue(v8::Local<v8::Context>)'
   return val->NAME ## Value(isolate->GetCurrentContext());                     \
                                                         ^
../../nan/nan_converters_43_inl.h:40:1: note: in expansion of macro 'X'
 X(bool, Boolean)
 ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2858:8: note: candidate: 'bool v8::Value::BooleanValue(v8::Isolate*) const'
   bool BooleanValue(Isolate* isolate) const;
        ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2858:8: note:   no known conversion for argument 1 from 'v8::Local<v8::Context>' to 'v8::Isolate*'
In file included from ../../nan/nan_new.h:189,
                 from ../../nan/nan.h:203,
                 from ../src/epoll.cc:15:
../../nan/nan_implementation_12_inl.h: In static member function 'static Nan::imp::FactoryBase<v8::Function>::return_t Nan::imp::Factory<v8::Function>::New(Nan::FunctionCallback, v8::Local<v8::Value>)':
../../nan/nan_implementation_12_inl.h:105:32: error: no matching function for call to 'v8::Function::New(v8::Isolate*&, void (&)(const v8::FunctionCallbackInfo<v8::Value>&), v8::Local<v8::Object>&)'
                           , obj));
                                ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:4445:31: note: candidate: 'static v8::MaybeLocal<v8::Function> v8::Function::New(v8::Local<v8::Context>, v8::FunctionCallback, v8::Local<v8::Value>, int, v8::ConstructorBehavior, v8::SideEffectType)'
   static MaybeLocal<Function> New(
                               ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:4445:31: note:   no known conversion for argument 1 from 'v8::Isolate*' to 'v8::Local<v8::Context>'
In file included from ../../nan/nan_new.h:189,
                 from ../../nan/nan.h:203,
                 from ../src/epoll.cc:15:
../../nan/nan_implementation_12_inl.h: In static member function 'static Nan::imp::FactoryBase<v8::StringObject>::return_t Nan::imp::Factory<v8::StringObject>::New(v8::Local<v8::String>)':
../../nan/nan_implementation_12_inl.h:337:37: error: no matching function for call to 'v8::StringObject::New(v8::Local<v8::String>&)'
   return v8::StringObject::New(value).As<v8::StringObject>();
                                     ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:5854:23: note: candidate: 'static v8::Local<v8::Value> v8::StringObject::New(v8::Isolate*, v8::Local<v8::String>)'
   static Local<Value> New(Isolate* isolate, Local<String> value);
                       ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:5854:23: note:   candidate expects 2 arguments, 1 provided
In file included from ../../nan/nan_new.h:189,
                 from ../../nan/nan.h:203,
                 from ../src/epoll.cc:15:
../../nan/nan_implementation_12_inl.h:337:58: error: expected primary-expression before '>' token
   return v8::StringObject::New(value).As<v8::StringObject>();
                                                          ^
../../nan/nan_implementation_12_inl.h:337:60: error: expected primary-expression before ')' token
   return v8::StringObject::New(value).As<v8::StringObject>();
                                                            ^
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In function 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)':
../../nan/nan.h:840:60: warning: 'v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, func, argc, argv);
                                                            ^
In file included from ../src/epoll.cc:12:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:191:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:108:42: note: in definition of macro 'NODE_DEPRECATED'
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/epoll.cc:15:
../../nan/nan.h:840:60: warning: 'v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, func, argc, argv);
                                                            ^
In file included from ../src/epoll.cc:12:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:191:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:108:42: note: in definition of macro 'NODE_DEPRECATED'
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In function 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)':
../../nan/nan.h:855:62: warning: 'v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, symbol, argc, argv);
                                                              ^
In file included from ../src/epoll.cc:12:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:184:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:108:42: note: in definition of macro 'NODE_DEPRECATED'
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/epoll.cc:15:
../../nan/nan.h:855:62: warning: 'v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, symbol, argc, argv);
                                                              ^
In file included from ../src/epoll.cc:12:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:184:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:108:42: note: in definition of macro 'NODE_DEPRECATED'
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In function 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)':
../../nan/nan.h:870:62: warning: 'v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, method, argc, argv);
                                                              ^
In file included from ../src/epoll.cc:12:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:177:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:108:42: note: in definition of macro 'NODE_DEPRECATED'
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/epoll.cc:15:
../../nan/nan.h:870:62: warning: 'v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, method, argc, argv);
                                                              ^
In file included from ../src/epoll.cc:12:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:177:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:108:42: note: in definition of macro 'NODE_DEPRECATED'
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In constructor 'Nan::Utf8String::Utf8String(v8::Local<v8::Value>)':
../../nan/nan.h:916:53: error: no matching function for call to 'v8::Value::ToString()'
       v8::Local<v8::String> string = from->ToString();
                                                     ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2810:44: note: candidate: 'v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const'
   V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                            ^~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2810:44: note:   candidate expects 1 argument, 0 provided
In file included from ../src/epoll.cc:15:
../../nan/nan.h:926:74: error: no matching function for call to 'v8::String::WriteUtf8(char*&, int, int, const int&)'
         length_ = string->WriteUtf8(str_, static_cast<int>(len), 0, flags);
                                                                          ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3037:7: note: candidate: 'int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const'
   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
       ^~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3037:7: note:   no known conversion for argument 1 from 'char*' to 'v8::Isolate*'
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In member function 'v8::Local<v8::Value> Nan::Callback::Call_(v8::Isolate*, v8::Local<v8::Object>, int, v8::Local<v8::Value>*) const':
../../nan/nan.h:1484:5: warning: 'v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
     ));
     ^
In file included from ../src/epoll.cc:12:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:191:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:108:42: note: in definition of macro 'NODE_DEPRECATED'
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/epoll.cc:15:
../../nan/nan.h:1484:5: warning: 'v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)' is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
     ));
     ^
In file included from ../src/epoll.cc:12:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:191:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:108:42: note: in definition of macro 'NODE_DEPRECATED'
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In member function 'void Nan::AsyncWorker::SaveToPersistent(const char*, const v8::Local<v8::Value>&)':
../../nan/nan.h:1538:64: error: no matching function for call to 'v8::Object::Set(v8::Local<v8::String>, const v8::Local<v8::Value>&)'
     New(persistentHandle)->Set(New(key).ToLocalChecked(), value);
                                                                ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3670:37: note: candidate: 'v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,
                                     ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3670:37: note:   candidate expects 3 arguments, 2 provided
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3673:37: note: candidate: 'v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,
                                     ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3673:37: note:   candidate expects 3 arguments, 2 provided
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In member function 'void Nan::AsyncWorker::SaveToPersistent(const v8::Local<v8::String>&, const v8::Local<v8::Value>&)':
../../nan/nan.h:1544:42: error: no matching function for call to 'v8::Object::Set(const v8::Local<v8::String>&, const v8::Local<v8::Value>&)'
     New(persistentHandle)->Set(key, value);
                                          ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3670:37: note: candidate: 'v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,
                                     ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3670:37: note:   candidate expects 3 arguments, 2 provided
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3673:37: note: candidate: 'v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,
                                     ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3673:37: note:   candidate expects 3 arguments, 2 provided
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In member function 'void Nan::AsyncWorker::SaveToPersistent(uint32_t, const v8::Local<v8::Value>&)':
../../nan/nan.h:1550:44: error: no matching function for call to 'v8::Object::Set(uint32_t&, const v8::Local<v8::Value>&)'
     New(persistentHandle)->Set(index, value);
                                            ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3670:37: note: candidate: 'v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,
                                     ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3670:37: note:   candidate expects 3 arguments, 2 provided
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3673:37: note: candidate: 'v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,
                                     ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3673:37: note:   candidate expects 3 arguments, 2 provided
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In member function 'v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(const char*) const':
../../nan/nan.h:1556:61: error: no matching function for call to 'v8::Object::Get(v8::Local<v8::String>)'
         New(persistentHandle)->Get(New(key).ToLocalChecked()));
                                                             ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3717:43: note: candidate: 'v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3717:43: note:   candidate expects 2 arguments, 1 provided
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3720:43: note: candidate: 'v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)'
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3720:43: note:   candidate expects 2 arguments, 1 provided
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In member function 'v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(const v8::Local<v8::String>&) const':
../../nan/nan.h:1562:55: error: no matching function for call to 'v8::Object::Get(const v8::Local<v8::String>&)'
     return scope.Escape(New(persistentHandle)->Get(key));
                                                       ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3717:43: note: candidate: 'v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3717:43: note:   candidate expects 2 arguments, 1 provided
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3720:43: note: candidate: 'v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)'
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3720:43: note:   candidate expects 2 arguments, 1 provided
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In member function 'v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(uint32_t) const':
../../nan/nan.h:1567:57: error: no matching function for call to 'v8::Object::Get(uint32_t&)'
     return scope.Escape(New(persistentHandle)->Get(index));
                                                         ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3717:43: note: candidate: 'v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)'
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3717:43: note:   candidate expects 2 arguments, 1 provided
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3720:43: note: candidate: 'v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)'
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:3720:43: note:   candidate expects 2 arguments, 1 provided
In file included from ../src/epoll.cc:15:
../../nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
../../nan/nan.h:1875:62: warning: cast between incompatible function types from 'void (*)(uv_work_t*)' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from /usr/include/c++/8/cassert:44,
                 from /home/volumio/.cache/node-gyp/14.15.4/include/node/node_object_wrap.h:26,
                 from ../src/epoll.cc:13:
../../nan/nan_object_wrap.h: In destructor 'virtual Nan::ObjectWrap::~ObjectWrap()':
../../nan/nan_object_wrap.h:24:25: error: 'class Nan::Persistent<v8::Object>' has no member named 'IsNearDeath'
     assert(persistent().IsNearDeath());
                         ^~~~~~~~~~~
In file included from ../../nan/nan.h:2365,
                 from ../src/epoll.cc:15:
../../nan/nan_object_wrap.h: In member function 'void Nan::ObjectWrap::MakeWeak()':
../../nan/nan_object_wrap.h:67:18: error: 'class Nan::Persistent<v8::Object>' has no member named 'MarkIndependent'
     persistent().MarkIndependent();
                  ^~~~~~~~~~~~~~~
In file included from /usr/include/c++/8/cassert:44,
                 from /home/volumio/.cache/node-gyp/14.15.4/include/node/node_object_wrap.h:26,
                 from ../src/epoll.cc:13:
../../nan/nan_object_wrap.h: In static member function 'static void Nan::ObjectWrap::WeakCallback(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)':
../../nan/nan_object_wrap.h:124:26: error: 'class Nan::Persistent<v8::Object>' has no member named 'IsNearDeath'
     assert(wrap->handle_.IsNearDeath());
                          ^~~~~~~~~~~
../src/epoll.cc: In static member function 'static void Epoll::Init(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)':
../src/epoll.cc:175:39: error: no matching function for call to 'v8::FunctionTemplate::GetFunction()'
   constructor.Reset(ctor->GetFunction());
                                       ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:6482:46: note: candidate: 'v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)'
   V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
                                              ^~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:6482:46: note:   candidate expects 1 argument, 0 provided
../src/epoll.cc:177:23: error: no matching function for call to 'v8::FunctionTemplate::GetFunction()'
     ctor->GetFunction());
                       ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:6482:46: note: candidate: 'v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)'
   V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
                                              ^~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:6482:46: note:   candidate expects 1 argument, 0 provided
../src/epoll.cc: In static member function 'static Nan::NAN_METHOD_RETURN_TYPE Epoll::Add(Nan::NAN_METHOD_ARGS_TYPE)':
../src/epoll.cc:210:44: error: no matching function for call to 'v8::Value::Int32Value()'
   int err = epoll->Add(info[0]->Int32Value(), info[1]->Int32Value());
                                            ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note: candidate: 'v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const'
   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
                                        ^~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note:   candidate expects 1 argument, 0 provided
../src/epoll.cc:210:67: error: no matching function for call to 'v8::Value::Int32Value()'
   int err = epoll->Add(info[0]->Int32Value(), info[1]->Int32Value());
                                                                   ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note: candidate: 'v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const'
   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
                                        ^~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note:   candidate expects 1 argument, 0 provided
../src/epoll.cc: In static member function 'static Nan::NAN_METHOD_RETURN_TYPE Epoll::Modify(Nan::NAN_METHOD_ARGS_TYPE)':
../src/epoll.cc:230:47: error: no matching function for call to 'v8::Value::Int32Value()'
   int err = epoll->Modify(info[0]->Int32Value(), info[1]->Int32Value());
                                               ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note: candidate: 'v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const'
   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
                                        ^~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note:   candidate expects 1 argument, 0 provided
../src/epoll.cc:230:70: error: no matching function for call to 'v8::Value::Int32Value()'
   int err = epoll->Modify(info[0]->Int32Value(), info[1]->Int32Value());
                                                                      ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note: candidate: 'v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const'
   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
                                        ^~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note:   candidate expects 1 argument, 0 provided
../src/epoll.cc: In static member function 'static Nan::NAN_METHOD_RETURN_TYPE Epoll::Remove(Nan::NAN_METHOD_ARGS_TYPE)':
../src/epoll.cc:247:47: error: no matching function for call to 'v8::Value::Int32Value()'
   int err = epoll->Remove(info[0]->Int32Value());
                                               ^
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note: candidate: 'v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const'
   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
                                        ^~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:2869:40: note:   candidate expects 1 argument, 0 provided
In file included from ../src/epoll.cc:12:
../src/epoll.cc: At global scope:
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:758:43: warning: cast between incompatible function types from 'void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void (*)(v8::Local<v8::Object>)'} to 'node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/home/volumio/.cache/node-gyp/14.15.4/include/node/node.h:792:3: note: in expansion of macro 'NODE_MODULE_X'
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/epoll.cc:381:1: note: in expansion of macro 'NODE_MODULE'
 NODE_MODULE(epoll, Epoll::Init)
 ^~~~~~~~~~~
In file included from ../src/epoll.cc:11:
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]':
/home/volumio/.cache/node-gyp/14.15.4/include/node/node_object_wrap.h:85:78:   required from here
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:10874:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<node::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]':
../../nan/nan_object_wrap.h:66:61:   required from here
/home/volumio/.cache/node-gyp/14.15.4/include/node/v8.h:10874:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
make: *** [epoll.target.mk:111: Release/obj.target/epoll/src/epoll.o] Error 1
make: Leaving directory '/data/plugins/system_controller/gpio_control/node_modules/epoll/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
gyp ERR! System Linux 5.10.90-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /data/plugins/system_controller/gpio_control/node_modules/epoll
gyp ERR! node -v v14.15.4
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
npm WARN gpio_control@0.0.1 No repository field.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! epoll@1.0.2 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the epoll@1.0.2 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/volumio/.npm/_logs/2022-01-28T15_30_47_898Z-debug.log

And

2022-01-28T15_30_47_898Z-debug.log
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   '/usr/bin/node',
1 verbose cli   '/usr/bin/npm',
1 verbose cli   'install',
1 verbose cli   '--prefix',
1 verbose cli   '/data/plugins/system_controller/gpio_control',
1 verbose cli   'onoff@^1.1.1'
1 verbose cli ]
2 info using npm@6.14.10
3 info using node@v14.15.4
4 verbose npm-session c834e1ada0a2c31f
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 http fetch GET 304 https://registry.npmjs.org/onoff 1200ms (from cache)
8 silly pacote range manifest for onoff@^1.1.1 fetched in 1268ms
9 timing stage:loadCurrentTree Completed in 2271ms
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 timing stage:loadIdealTree:cloneCurrentTree Completed in 9ms
13 silly install loadShrinkwrap
14 timing stage:loadIdealTree:loadShrinkwrap Completed in 186ms
15 silly install loadAllDepsIntoIdealTree
16 silly resolveWithNewModule onoff@1.2.0 checking installable status
17 http fetch GET 304 https://registry.npmjs.org/epoll 790ms (from cache)
18 silly pacote range manifest for epoll@~1.0.2 fetched in 805ms
19 silly resolveWithNewModule epoll@1.0.2 checking installable status
20 http fetch GET 304 https://registry.npmjs.org/nan 129ms (from cache)
21 silly pacote range manifest for nan@~2.8.0 fetched in 156ms
22 silly resolveWithNewModule nan@2.8.0 checking installable status
23 http fetch GET 304 https://registry.npmjs.org/bindings 187ms (from cache)
24 silly pacote range manifest for bindings@~1.3.0 fetched in 201ms
25 silly resolveWithNewModule bindings@1.3.1 checking installable status
26 timing stage:loadIdealTree:loadAllDepsIntoIdealTree Completed in 1479ms
27 timing stage:loadIdealTree Completed in 1819ms
28 silly currentTree gpio_control@0.0.1
28 silly currentTree +-- after@0.8.2
28 silly currentTree +-- arraybuffer.slice@0.0.6
28 silly currentTree +-- backo2@1.0.2
28 silly currentTree +-- balanced-match@1.0.2
28 silly currentTree +-- base64-arraybuffer@0.1.5
28 silly currentTree +-- better-assert@1.0.2
28 silly currentTree +-- blob@0.0.4
28 silly currentTree +-- brace-expansion@1.1.11
28 silly currentTree +-- callsite@1.0.0
28 silly currentTree +-- child_process@1.0.2
28 silly currentTree +-- component-bind@1.0.0
28 silly currentTree +-- component-emitter@1.2.1
28 silly currentTree +-- component-inherit@0.0.3
28 silly currentTree +-- concat-map@0.0.1
28 silly currentTree +-- debug@2.3.3
28 silly currentTree +-- engine.io-client@1.8.6
28 silly currentTree +-- engine.io-parser@1.3.2
28 silly currentTree +-- fs-extra@0.28.0
28 silly currentTree +-- fs.realpath@1.0.0
28 silly currentTree +-- glob@7.2.0
28 silly currentTree +-- graceful-fs@4.2.9
28 silly currentTree +-- has-binary@0.1.7
28 silly currentTree +-- has-cors@1.1.0
28 silly currentTree +-- imurmurhash@0.1.4
28 silly currentTree +-- indexof@0.0.1
28 silly currentTree +-- inflight@1.0.6
28 silly currentTree +-- inherits@2.0.4
28 silly currentTree +-- isarray@0.0.1
28 silly currentTree +-- json3@3.3.2
28 silly currentTree +-- jsonfile@2.4.0
28 silly currentTree +-- kew@0.7.0
28 silly currentTree +-- klaw@1.3.1
28 silly currentTree +-- minimatch@3.0.4
28 silly currentTree +-- ms@0.7.2
28 silly currentTree +-- multimap@1.0.1
28 silly currentTree +-- object-component@0.0.3
28 silly currentTree +-- once@1.4.0
28 silly currentTree +-- options@0.0.6
28 silly currentTree +-- parsejson@0.0.3
28 silly currentTree +-- parseqs@0.0.5
28 silly currentTree +-- parseuri@0.0.5
28 silly currentTree +-- path-is-absolute@1.0.1
28 silly currentTree +-- rimraf@2.7.1
28 silly currentTree +-- sleep@5.2.4
28 silly currentTree | `-- nan@2.15.0
28 silly currentTree +-- slide@1.1.6
28 silly currentTree +-- socket.io-client@1.7.4
28 silly currentTree +-- socket.io-parser@2.3.1
28 silly currentTree | +-- component-emitter@1.1.2
28 silly currentTree | +-- debug@2.2.0
28 silly currentTree | `-- ms@0.7.1
28 silly currentTree +-- to-array@0.1.4
28 silly currentTree +-- ultron@1.0.2
28 silly currentTree +-- universalify@0.1.2
28 silly currentTree +-- v-conf@1.4.3
28 silly currentTree | +-- fs-extra@3.0.1
28 silly currentTree | `-- jsonfile@3.0.1
28 silly currentTree +-- wrappy@1.0.2
28 silly currentTree +-- write-file-atomic@1.3.1
28 silly currentTree +-- ws@1.1.5
28 silly currentTree +-- wtf-8@1.0.0
28 silly currentTree +-- xmlhttprequest-ssl@1.6.3
28 silly currentTree `-- yeast@0.1.2
29 silly idealTree gpio_control@0.0.1
29 silly idealTree +-- after@0.8.2
29 silly idealTree +-- arraybuffer.slice@0.0.6
29 silly idealTree +-- backo2@1.0.2
29 silly idealTree +-- balanced-match@1.0.2
29 silly idealTree +-- base64-arraybuffer@0.1.5
29 silly idealTree +-- better-assert@1.0.2
29 silly idealTree +-- bindings@1.3.1
29 silly idealTree +-- blob@0.0.4
29 silly idealTree +-- brace-expansion@1.1.11
29 silly idealTree +-- callsite@1.0.0
29 silly idealTree +-- child_process@1.0.2
29 silly idealTree +-- component-bind@1.0.0
29 silly idealTree +-- component-emitter@1.2.1
29 silly idealTree +-- component-inherit@0.0.3
29 silly idealTree +-- concat-map@0.0.1
29 silly idealTree +-- debug@2.3.3
29 silly idealTree +-- engine.io-client@1.8.6
29 silly idealTree +-- engine.io-parser@1.3.2
29 silly idealTree +-- epoll@1.0.2
29 silly idealTree +-- fs-extra@0.28.0
29 silly idealTree +-- fs.realpath@1.0.0
29 silly idealTree +-- glob@7.2.0
29 silly idealTree +-- graceful-fs@4.2.9
29 silly idealTree +-- has-binary@0.1.7
29 silly idealTree +-- has-cors@1.1.0
29 silly idealTree +-- imurmurhash@0.1.4
29 silly idealTree +-- indexof@0.0.1
29 silly idealTree +-- inflight@1.0.6
29 silly idealTree +-- inherits@2.0.4
29 silly idealTree +-- isarray@0.0.1
29 silly idealTree +-- json3@3.3.2
29 silly idealTree +-- jsonfile@2.4.0
29 silly idealTree +-- kew@0.7.0
29 silly idealTree +-- klaw@1.3.1
29 silly idealTree +-- minimatch@3.0.4
29 silly idealTree +-- ms@0.7.2
29 silly idealTree +-- multimap@1.0.1
29 silly idealTree +-- nan@2.8.0
29 silly idealTree +-- object-component@0.0.3
29 silly idealTree +-- once@1.4.0
29 silly idealTree +-- onoff@1.2.0
29 silly idealTree +-- options@0.0.6
29 silly idealTree +-- parsejson@0.0.3
29 silly idealTree +-- parseqs@0.0.5
29 silly idealTree +-- parseuri@0.0.5
29 silly idealTree +-- path-is-absolute@1.0.1
29 silly idealTree +-- rimraf@2.7.1
29 silly idealTree +-- sleep@5.2.4
29 silly idealTree | `-- nan@2.15.0
29 silly idealTree +-- slide@1.1.6
29 silly idealTree +-- socket.io-client@1.7.4
29 silly idealTree +-- socket.io-parser@2.3.1
29 silly idealTree | +-- component-emitter@1.1.2
29 silly idealTree | +-- debug@2.2.0
29 silly idealTree | `-- ms@0.7.1
29 silly idealTree +-- to-array@0.1.4
29 silly idealTree +-- ultron@1.0.2
29 silly idealTree +-- universalify@0.1.2
29 silly idealTree +-- v-conf@1.4.3
29 silly idealTree | +-- fs-extra@3.0.1
29 silly idealTree | `-- jsonfile@3.0.1
29 silly idealTree +-- wrappy@1.0.2
29 silly idealTree +-- write-file-atomic@1.3.1
29 silly idealTree +-- ws@1.1.5
29 silly idealTree +-- wtf-8@1.0.0
29 silly idealTree +-- xmlhttprequest-ssl@1.6.3
29 silly idealTree `-- yeast@0.1.2
30 silly install generateActionsToTake
31 timing stage:generateActionsToTake Completed in 44ms
32 silly diffTrees action count 4
33 silly diffTrees add bindings@1.3.1
34 silly diffTrees add nan@2.8.0
35 silly diffTrees add epoll@1.0.2
36 silly diffTrees add onoff@1.2.0
37 silly decomposeActions action count 32
38 silly decomposeActions fetch bindings@1.3.1
39 silly decomposeActions extract bindings@1.3.1
40 silly decomposeActions preinstall bindings@1.3.1
41 silly decomposeActions build bindings@1.3.1
42 silly decomposeActions install bindings@1.3.1
43 silly decomposeActions postinstall bindings@1.3.1
44 silly decomposeActions finalize bindings@1.3.1
45 silly decomposeActions refresh-package-json bindings@1.3.1
46 silly decomposeActions fetch nan@2.8.0
47 silly decomposeActions extract nan@2.8.0
48 silly decomposeActions preinstall nan@2.8.0
49 silly decomposeActions build nan@2.8.0
50 silly decomposeActions install nan@2.8.0
51 silly decomposeActions postinstall nan@2.8.0
52 silly decomposeActions finalize nan@2.8.0
53 silly decomposeActions refresh-package-json nan@2.8.0
54 silly decomposeActions fetch epoll@1.0.2
55 silly decomposeActions extract epoll@1.0.2
56 silly decomposeActions preinstall epoll@1.0.2
57 silly decomposeActions build epoll@1.0.2
58 silly decomposeActions install epoll@1.0.2
59 silly decomposeActions postinstall epoll@1.0.2
60 silly decomposeActions finalize epoll@1.0.2
61 silly decomposeActions refresh-package-json epoll@1.0.2
62 silly decomposeActions fetch onoff@1.2.0
63 silly decomposeActions extract onoff@1.2.0
64 silly decomposeActions preinstall onoff@1.2.0
65 silly decomposeActions build onoff@1.2.0
66 silly decomposeActions install onoff@1.2.0
67 silly decomposeActions postinstall onoff@1.2.0
68 silly decomposeActions finalize onoff@1.2.0
69 silly decomposeActions refresh-package-json onoff@1.2.0
70 silly install executeActions
71 silly doSerial global-install 32
72 verbose correctMkdir /home/volumio/.npm/_locks correctMkdir not in flight; initializing
73 verbose lock using /home/volumio/.npm/_locks/staging-09e82038d0f733ea.lock for /data/plugins/system_controller/gpio_control/node_modules/.staging
74 silly doParallel extract 4
75 silly extract bindings@1.3.1
76 silly extract nan@2.8.0
77 silly extract epoll@1.0.2
78 silly extract onoff@1.2.0
79 silly tarball trying bindings@~1.3.0 by hash: sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew==
80 silly tarball trying nan@~2.8.0 by hash: sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=
81 silly tarball trying epoll@~1.0.2 by hash: sha512-3t2crZPej4v60YYvXE/pgJ62D4RZBd/UsEXsHd+H3xtDre0vO8aV9O+0ThIPlfZtHJ4vMPhz55fYK1j37rX9Ng==
82 silly tarball trying onoff@^1.1.1 by hash: sha512-o41qBIIs6agXRjryGBIJpq1xour69VDBfROf3IX+wiwutIowPZDcjTRCqFo+HYleiQngO1wfNqHWpjm0l0oYwQ==
83 timing audit submit Completed in 302ms
84 silly extract bindings@~1.3.0 extracted to /data/plugins/system_controller/gpio_control/node_modules/.staging/bindings-e641f0a9 (252ms)
85 http fetch POST 200 https://registry.npmjs.org/-/npm/v1/security/audits/quick 303ms
86 timing audit body Completed in 8ms
87 silly extract epoll@~1.0.2 extracted to /data/plugins/system_controller/gpio_control/node_modules/.staging/epoll-cd31b40b (349ms)
88 silly extract onoff@^1.1.1 extracted to /data/plugins/system_controller/gpio_control/node_modules/.staging/onoff-ea79436a (366ms)
89 silly extract nan@~2.8.0 extracted to /data/plugins/system_controller/gpio_control/node_modules/.staging/nan-8e935b41 (393ms)
90 timing action:extract Completed in 406ms
91 silly doReverseSerial unbuild 32
92 silly doSerial remove 32
93 silly doSerial move 32
94 silly doSerial finalize 32
95 silly finalize /data/plugins/system_controller/gpio_control/node_modules/bindings
96 silly finalize /data/plugins/system_controller/gpio_control/node_modules/nan
97 silly finalize /data/plugins/system_controller/gpio_control/node_modules/epoll
98 silly finalize /data/plugins/system_controller/gpio_control/node_modules/onoff
99 timing action:finalize Completed in 31ms
100 silly doParallel refresh-package-json 4
101 silly refresh-package-json /data/plugins/system_controller/gpio_control/node_modules/bindings
102 silly refresh-package-json /data/plugins/system_controller/gpio_control/node_modules/nan
103 silly refresh-package-json /data/plugins/system_controller/gpio_control/node_modules/epoll
104 silly refresh-package-json /data/plugins/system_controller/gpio_control/node_modules/onoff
105 timing action:refresh-package-json Completed in 66ms
106 silly doParallel preinstall 4
107 silly preinstall bindings@1.3.1
108 info lifecycle bindings@1.3.1~preinstall: bindings@1.3.1
109 silly preinstall nan@2.8.0
110 info lifecycle nan@2.8.0~preinstall: nan@2.8.0
111 silly preinstall epoll@1.0.2
112 info lifecycle epoll@1.0.2~preinstall: epoll@1.0.2
113 silly preinstall onoff@1.2.0
114 info lifecycle onoff@1.2.0~preinstall: onoff@1.2.0
115 timing action:preinstall Completed in 8ms
116 silly doSerial build 32
117 silly build bindings@1.3.1
118 info linkStuff bindings@1.3.1
119 silly linkStuff bindings@1.3.1 has /data/plugins/system_controller/gpio_control/node_modules as its parent node_modules
120 silly build nan@2.8.0
121 info linkStuff nan@2.8.0
122 silly linkStuff nan@2.8.0 has /data/plugins/system_controller/gpio_control/node_modules as its parent node_modules
123 silly build epoll@1.0.2
124 info linkStuff epoll@1.0.2
125 silly linkStuff epoll@1.0.2 has /data/plugins/system_controller/gpio_control/node_modules as its parent node_modules
126 silly build onoff@1.2.0
127 info linkStuff onoff@1.2.0
128 silly linkStuff onoff@1.2.0 has /data/plugins/system_controller/gpio_control/node_modules as its parent node_modules
129 timing action:build Completed in 9ms
130 silly doSerial global-link 32
131 silly doParallel update-linked 0
132 silly doSerial install 32
133 silly install bindings@1.3.1
134 info lifecycle bindings@1.3.1~install: bindings@1.3.1
135 silly install nan@2.8.0
136 info lifecycle nan@2.8.0~install: nan@2.8.0
137 silly install epoll@1.0.2
138 info lifecycle epoll@1.0.2~install: epoll@1.0.2
139 verbose lifecycle epoll@1.0.2~install: unsafe-perm in lifecycle true
140 verbose lifecycle epoll@1.0.2~install: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/data/plugins/system_controller/gpio_control/node_modules/epoll/node_modules/.bin:/data/plugins/system_controller/gpio_control/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
141 verbose lifecycle epoll@1.0.2~install: CWD: /data/plugins/system_controller/gpio_control/node_modules/epoll
142 silly lifecycle epoll@1.0.2~install: Args: [ '-c', 'node-gyp rebuild' ]
143 silly lifecycle epoll@1.0.2~install: Returned: code: 1  signal: null
144 info lifecycle epoll@1.0.2~install: Failed to exec install script
145 timing action:install Completed in 8331ms
146 verbose unlock done using /home/volumio/.npm/_locks/staging-09e82038d0f733ea.lock for /data/plugins/system_controller/gpio_control/node_modules/.staging
147 timing stage:rollbackFailedOptional Completed in 141ms
148 timing stage:runTopLevelLifecycles Completed in 13397ms
149 silly saveTree gpio_control@0.0.1
149 silly saveTree +-- child_process@1.0.2
149 silly saveTree +-- fs-extra@0.28.0
149 silly saveTree | +-- graceful-fs@4.2.9
149 silly saveTree | +-- jsonfile@2.4.0
149 silly saveTree | +-- klaw@1.3.1
149 silly saveTree | +-- path-is-absolute@1.0.1
149 silly saveTree | `-- rimraf@2.7.1
149 silly saveTree |   `-- glob@7.2.0
149 silly saveTree |     +-- fs.realpath@1.0.0
149 silly saveTree |     +-- inflight@1.0.6
149 silly saveTree |     | +-- once@1.4.0
149 silly saveTree |     | | `-- wrappy@1.0.2
149 silly saveTree |     | `-- wrappy@1.0.2
149 silly saveTree |     +-- inherits@2.0.4
149 silly saveTree |     +-- minimatch@3.0.4
149 silly saveTree |     | `-- brace-expansion@1.1.11
149 silly saveTree |     |   +-- balanced-match@1.0.2
149 silly saveTree |     |   `-- concat-map@0.0.1
149 silly saveTree |     `-- once@1.4.0
149 silly saveTree +-- kew@0.7.0
149 silly saveTree +-- onoff@1.2.0
149 silly saveTree | `-- epoll@1.0.2
149 silly saveTree |   +-- bindings@1.3.1
149 silly saveTree |   `-- nan@2.8.0
149 silly saveTree +-- sleep@5.2.4
149 silly saveTree | `-- nan@2.15.0
149 silly saveTree +-- socket.io-client@1.7.4
149 silly saveTree | +-- backo2@1.0.2
149 silly saveTree | +-- component-bind@1.0.0
149 silly saveTree | +-- component-emitter@1.2.1
149 silly saveTree | +-- debug@2.3.3
149 silly saveTree | | `-- ms@0.7.2
149 silly saveTree | +-- engine.io-client@1.8.6
149 silly saveTree | | +-- component-inherit@0.0.3
149 silly saveTree | | +-- engine.io-parser@1.3.2
149 silly saveTree | | | +-- after@0.8.2
149 silly saveTree | | | +-- arraybuffer.slice@0.0.6
149 silly saveTree | | | +-- base64-arraybuffer@0.1.5
149 silly saveTree | | | +-- blob@0.0.4
149 silly saveTree | | | +-- has-binary@0.1.7
149 silly saveTree | | | | `-- isarray@0.0.1
149 silly saveTree | | | `-- wtf-8@1.0.0
149 silly saveTree | | +-- has-cors@1.1.0
149 silly saveTree | | +-- indexof@0.0.1
149 silly saveTree | | +-- parsejson@0.0.3
149 silly saveTree | | | `-- better-assert@1.0.2
149 silly saveTree | | |   `-- callsite@1.0.0
149 silly saveTree | | +-- parseqs@0.0.5
149 silly saveTree | | +-- parseuri@0.0.5
149 silly saveTree | | +-- ws@1.1.5
149 silly saveTree | | | +-- options@0.0.6
149 silly saveTree | | | `-- ultron@1.0.2
149 silly saveTree | | +-- xmlhttprequest-ssl@1.6.3
149 silly saveTree | | `-- yeast@0.1.2
149 silly saveTree | +-- has-binary@0.1.7
149 silly saveTree | +-- indexof@0.0.1
149 silly saveTree | +-- object-component@0.0.3
149 silly saveTree | +-- parseuri@0.0.5
149 silly saveTree | +-- socket.io-parser@2.3.1
149 silly saveTree | | +-- component-emitter@1.1.2
149 silly saveTree | | +-- debug@2.2.0
149 silly saveTree | | | `-- ms@0.7.1
149 silly saveTree | | `-- json3@3.3.2
149 silly saveTree | `-- to-array@0.1.4
149 silly saveTree `-- v-conf@1.4.3
149 silly saveTree   +-- fs-extra@3.0.1
149 silly saveTree   | +-- jsonfile@3.0.1
149 silly saveTree   | `-- universalify@0.1.2
149 silly saveTree   +-- multimap@1.0.1
149 silly saveTree   `-- write-file-atomic@1.3.1
149 silly saveTree     +-- imurmurhash@0.1.4
149 silly saveTree     `-- slide@1.1.6
150 warn gpio_control@0.0.1 No repository field.
151 verbose stack Error: epoll@1.0.2 install: `node-gyp rebuild`
151 verbose stack Exit status 1
151 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
151 verbose stack     at EventEmitter.emit (events.js:315:20)
151 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
151 verbose stack     at ChildProcess.emit (events.js:315:20)
151 verbose stack     at maybeClose (internal/child_process.js:1048:16)
151 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
152 verbose pkgid epoll@1.0.2
153 verbose cwd /home/volumio
154 verbose Linux 5.10.90-v7+
155 verbose argv "/usr/bin/node" "/usr/bin/npm" "install" "--prefix" "/data/plugins/system_controller/gpio_control" "onoff@^1.1.1"
156 verbose node v14.15.4
157 verbose npm  v6.14.10
158 error code ELIFECYCLE
159 error errno 1
160 error epoll@1.0.2 install: `node-gyp rebuild`
160 error Exit status 1
161 error Failed at the epoll@1.0.2 install script.
161 error This is probably not a problem with npm. There is likely additional logging output above.
162 verbose exit [ 1, true ]

1 Like

I took the version (range) for “onoff” from “package.json” of the Volumio 2 version of the plugin… Probably that version is too old. Try

npm install --prefix "/data/plugins/system_controller/gpio_control" onoff@^6.0.0

It could also be necessary to do the same for the module “sleep”:

npm install --prefix "/data/plugins/system_controller/gpio_control" sleep@6.2.0

Still in error :

Command result
Jan 28 15:58:14 volumio volumio[747]: info: Enabling plugin gpio_control
Jan 28 15:58:14 volumio volumio[747]: info: Loading plugin "gpio_control"...
Jan 28 15:58:14 volumio volumio[747]: error: !!!! WARNING !!!!
Jan 28 15:58:14 volumio volumio[747]: error: The plugin system_controller/gpio_control failed to load, setting it to stopped. Error: Error: Cannot find module 'onoff'
Jan 28 15:58:14 volumio volumio[747]: Require stack:
Jan 28 15:58:14 volumio volumio[747]: - /data/plugins/system_controller/gpio_control/index.js
Jan 28 15:58:14 volumio volumio[747]: - /volumio/app/pluginmanager.js
Jan 28 15:58:14 volumio volumio[747]: - /volumio/app/index.js
Jan 28 15:58:14 volumio volumio[747]: - /volumio/index.js
Jan 28 15:58:14 volumio volumio[747]: error: Stack trace: Error: Cannot find module 'onoff'
Jan 28 15:58:14 volumio volumio[747]: Require stack:
Jan 28 15:58:14 volumio volumio[747]: - /data/plugins/system_controller/gpio_control/index.js
Jan 28 15:58:14 volumio volumio[747]: - /volumio/app/pluginmanager.js
Jan 28 15:58:14 volumio volumio[747]: - /volumio/app/index.js
Jan 28 15:58:14 volumio volumio[747]: - /volumio/index.js
Jan 28 15:58:14 volumio volumio[747]:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
Jan 28 15:58:14 volumio volumio[747]:     at Function.Module._load (internal/modules/cjs/loader.js:725:27)
Jan 28 15:58:14 volumio volumio[747]:     at Module.require (internal/modules/cjs/loader.js:952:19)
Jan 28 15:58:14 volumio volumio[747]:     at require (internal/modules/cjs/helpers.js:88:18)
Jan 28 15:58:14 volumio volumio[747]:     at Object.<anonymous> (/data/plugins/system_controller/gpio_control/index.js:6:12)
Jan 28 15:58:14 volumio volumio[747]:     at Module._compile (internal/modules/cjs/loader.js:1063:30)
Jan 28 15:58:14 volumio volumio[747]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
Jan 28 15:58:14 volumio volumio[747]:     at Module.load (internal/modules/cjs/loader.js:928:32)
Jan 28 15:58:14 volumio volumio[747]:     at Function.Module._load (internal/modules/cjs/loader.js:769:14)
Jan 28 15:58:14 volumio volumio[747]:     at Module.require (internal/modules/cjs/loader.js:952:19)
Jan 28 15:58:14 volumio volumio[747]:     at require (internal/modules/cjs/helpers.js:88:18)
Jan 28 15:58:14 volumio volumio[747]:     at PluginManager.loadCorePlugin (/volumio/app/pluginmanager.js:235:29)
Jan 28 15:58:14 volumio volumio[747]:     at Promise._successFn (/volumio/app/pluginmanager.js:1837:19)
Jan 28 15:58:14 volumio volumio[747]:     at nextTickCallback (/volumio/node_modules/kew/kew.js:47:28)
Jan 28 15:58:14 volumio volumio[747]:     at processTicksAndRejections (internal/process/task_queues.js:75:11)
Jan 28 15:58:14 volumio volumio[747]: error: !!!! WARNING !!!!
Jan 28 15:58:14 volumio volumio[747]: info: Done.

So the installation of the module went through, I guess.

Please show the result of

ls -al /data/plugins/system_controller/gpio_control/node_modules

`ls -al /data/plugins/system_controller/gpio_control/node_modules`
drwxr-xr-x 65 volumio volumio 3072 Jan 28 15:57 .
drwxr-xr-x  4 volumio volumio 1024 Jan 28 15:56 ..
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 after
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 arraybuffer.slice
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 backo2
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 balanced-match
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 base64-arraybuffer
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 better-assert
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 bindings
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 blob
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 brace-expansion
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 callsite
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 child_process
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 component-bind
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 component-emitter
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 component-inherit
drwxr-xr-x  4 volumio volumio 1024 Jan 28 15:56 concat-map
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 debug
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 engine.io-client
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 engine.io-parser
drwxr-xr-x  6 volumio volumio 1024 Jan 28 15:56 epoll
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 file-uri-to-path
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 fs-extra
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 fs.realpath
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 glob
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 graceful-fs
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 has-binary
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 has-cors
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 imurmurhash
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 indexof
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 inflight
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 inherits
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 isarray
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 json3
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 jsonfile
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 kew
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 klaw
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 lodash.debounce
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 minimatch
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 ms
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 multimap
drwxr-xr-x  4 volumio volumio 1024 Jan 28 15:56 nan
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 object-component
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 once
drwxr-xr-x  4 volumio volumio 1024 Jan 28 15:57 onoff
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 options
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 parsejson
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 parseqs
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 parseuri
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 path-is-absolute
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 rimraf
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 sleep
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 slide
drwxr-xr-x  4 volumio volumio 1024 Jan 28 15:56 socket.io-client
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 socket.io-parser
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 to-array
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 ultron
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 universalify
drwxr-xr-x  4 volumio volumio 1024 Jan 28 15:56 v-conf
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 wrappy
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 write-file-atomic
drwxr-xr-x  3 volumio volumio 1024 Jan 28 15:56 ws
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 wtf-8
drwxr-xr-x  5 volumio volumio 1024 Jan 28 15:56 xmlhttprequest-ssl
drwxr-xr-x  2 volumio volumio 1024 Jan 28 15:56 yeast

Ok, I just tried it and succeeded installing the plugin like this:

  1. Remove the installed plugin, i.e. uninstall it.
  2. Unzip the downloaded .zip package (assuming you are in “/home/volumio”):

miniunzip gpio_control.zip -d gpio_control

  1. Run (not tested if this is strictly necessary)

rm -rf gpio_control/node_modules

rm gpio_control/package-lock.json

  1. Then execute

cd gpio_control

npm install onoff@^6.0.0

npm install sleep@^6.2.0

volumio plugin install

2 Likes

It works ! :laughing:
You have a great knowledge, I don’t know exactly what I’ve done but thank you for your support :slight_smile:
Now I control my backligt screen !

@supercrab : some suggestions for futur GPIO Control releases :

  • add configurable delay for each command (could be useful to switch off a screen some secondes after playing)
  • manage the screensaver event from “Touch Display” plugin
  • allow pwm values (could be useful to dim a screen)

Thanks a lot !

2 Likes

Great plugin supercrab!!

I was wondering if there is a possibility where instead of just leaving a gpio pin high, - I could make a gpio pin go high, delay 1 second and then gpio pin low?

I want to make it act like a digital momentary button press…

Thanks

1 Like

Thanks have noted your suggestions too! :+1:t4::sunglasses:

Thanks for your suggestions will try it when I get some time

Thanks for the tips!! I’m gonna have to pull my finger out and get this plugin and my mod_plugin updated!

`
D’oh I have both onoff and sleep modules in /data/plugins/system_hardware/gpio_control/node_modules but I still get cannot find module 'onoff'

What could be wrong?

I don’t use the plugin, but just tried if installing and starting it on Volumio 3 works.

After installing the “build-essential” package by running

sudo apt-get update
sudo apt-get -y install build-essential

I downloaded “gpio_control.zip” from volumio-plugins/plugins/volumio/armhf/system_controller/gpio_control at gh-pages · volumio/volumio-plugins · GitHub and executed the steps lined out in post #67.

Although this is not the recommended way to install a plugin in Volumio 3 and especially lacks a Volumio 3 compliant “package.json”, it was sufficient to make the plugin start.

1 Like

Thanks for your help!

I don’t use the plugin either - I’m trying to update it to Volumio 3 so other people can use it.

I’ve already installed build-essential. I’ve re-created the plugin from fresh, updated the code and created an updated package.json. I followed the steps and manually updated onoff and sleep as needed in the plugin directory in /data/plugins/system_hardware/gpio_control/node_modules. So the modules are present and valid. It’s really strange why it doesn’t work. :frowning:

I wanted to upgrade the plugin and going to try and add some of the new functionality that people have been asking for. :’(

Don’t update the modules in “/data/plugins/system_hardware/gpio_control/node_modules”, i.e. after installing the plugin, but before installing it in the location where the extracted files from the plugin .zip reside (e.g. “/home/volumio/gpio_control”). That is what my post #67 describes.

I haven’t installed the plugin as such because I’m creating a brand new one from scratch. The plugin refresh procedure should automatically update the modules - I didn’t have this issue in v2. I’ll keep trying though. :muscle:t4:

Got it working somehow. :slight_smile: Combination of running npm i and doing volumio plugin refresh && volumio vrestart

I’ve implemented the delay functionality. Question is how to get this plugin submitted…

Hi @supercrab

I noticed you tried to publish your plugin for Volumio3, but it’s not being merged because the submit process was not performed well

Please have a look to the comments from @mervinio , when the submit is done properly your plugin should be available immediately setting the plugins in test mode

1 Like

Thanks! I tried to do the submit but it failed. The submit process seem is too complicated even for experienced developers like me! I don’t have a pi to develop on an more due to the shortage :frowning: