node-red-(start/stop/restart)など動いて、快適でエディターを弄ろうか、、、と思いましたが、まずはgpioの操作が出来なければ、始まらない!ということで、npm install node-red-contrib-gpioとやると、下のようなエラーが、、、。 ソースのコンパイルにcppの所で失敗しているようなので、これは拙い。
長期戦になりそうです。
rpi gpioってのがあるので、それを使えばよさそうな、気もします。
pi@raspberrypi:~/.node-red $ npm install node-red-contrib-gpio
> serialport@6.0.5 install /home/pi/.node-red/node_modules/firmata/node_modules/serialport
> prebuild-install || node-gyp rebuild
prebuild-install WARN install No prebuilt binaries found (target=12.18.3 runtime=node arch=arm platform=linux)
make: ディレクトリ '/home/pi/.node-red/node_modules/firmata/node_modules/serialport/build' に入ります
CXX(target) Release/obj.target/serialport/src/serialport.o
In file included from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../../../nan/nan.h:2294: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(AsyncExecuteComplete)
^
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:41:48: error: no matching function for call to ‘v8::Value::ToString()’
v8::String::Utf8Value path(info[0]->ToString());
^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2668:44: note: candidate: ‘v8::MaybeLocal v8::Value::ToString(v8::Local) const’
V8_WARN_UNUSED_RESULT MaybeLocal ToString(
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2668:44: note: candidate expects 1 argument, 0 provided
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2684:31: note: candidate: ‘v8::Local v8::Value::ToString(v8::Isolate*) const’
Local ToString(Isolate* isolate) const);
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2684:31: note: candidate expects 1 argument, 0 provided
Local ToString(Isolate* isolate) const);
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
../src/serialport.cpp:48:53: error: no matching function for call to ‘v8::Value::ToObject()’
v8::Local options = info[1]->ToObject();
^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal v8::Value::ToObject(v8::Local) const’
V8_WARN_UNUSED_RESULT MaybeLocal ToObject(
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate expects 1 argument, 0 provided
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate: ‘v8::Local v8::Value::ToObject(v8::Isolate*) const’
Local ToObject(Isolate* isolate) const);
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate expects 1 argument, 0 provided
Local ToObject(Isolate* isolate) const);
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
../src/serialport.cpp:78:69: 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]
uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_AfterOpen);
^~~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterOpen(uv_work_t*)’:
../src/serialport.cpp:95:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
data->callback.Call(2, argv);
^
In file included from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
Call(int argc, v8::Local argv[]) const {
^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:113:53: error: no matching function for call to ‘v8::Value::ToObject()’
v8::Local options = info[1]->ToObject();
^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal v8::Value::ToObject(v8::Local) const’
V8_WARN_UNUSED_RESULT MaybeLocal ToObject(
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate expects 1 argument, 0 provided
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate: ‘v8::Local v8::Value::ToObject(v8::Isolate*) const’
Local ToObject(Isolate* isolate) const);
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate expects 1 argument, 0 provided
Local ToObject(Isolate* isolate) const);
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
../src/serialport.cpp:135:71: 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]
uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EIO_AfterUpdate);
^~~~~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterUpdate(uv_work_t*)’:
../src/serialport.cpp:150:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
data->callback.Call(1, argv);
^
In file included from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
Call(int argc, v8::Local argv[]) const {
^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:175:70: 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]
uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO_AfterClose);
^~~~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterClose(uv_work_t*)’:
../src/serialport.cpp:188:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
data->callback.Call(1, argv);
^
In file included from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
Call(int argc, v8::Local argv[]) const {
^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:215:70: 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]
uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO_AfterFlush);
^~~~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterFlush(uv_work_t*)’:
../src/serialport.cpp:231:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
data->callback.Call(1, argv);
^
In file included from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
Call(int argc, v8::Local argv[]) const {
^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:250:53: error: no matching function for call to ‘v8::Value::ToObject()’
v8::Local options = info[1]->ToObject();
^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal v8::Value::ToObject(v8::Local) const’
V8_WARN_UNUSED_RESULT MaybeLocal ToObject(
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate expects 1 argument, 0 provided
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate: ‘v8::Local v8::Value::ToObject(v8::Isolate*) const’
Local ToObject(Isolate* isolate) const);
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate expects 1 argument, 0 provided
Local ToObject(Isolate* isolate) const);
^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
../src/serialport.cpp:270:68: 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]
uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_AfterSet);
^~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterSet(uv_work_t*)’:
../src/serialport.cpp:285:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
data->callback.Call(1, argv);
^
In file included from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
Call(int argc, v8::Local argv[]) const {
^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Get(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:314:68: 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]
uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_AfterGet);
^~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterGet(uv_work_t*)’:
../src/serialport.cpp:329:96: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
an::New("cts").ToLocalChecked(), Nan::New(data->cts));
^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:3499:22: note: declared here
bool Set(Local key, Local value));
^~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
../src/serialport.cpp:330:96: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
an::New("dsr").ToLocalChecked(), Nan::New(data->dsr));
^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:3499:22: note: declared here
bool Set(Local key, Local value));
^~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
../src/serialport.cpp:331:96: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
an::New("dcd").ToLocalChecked(), Nan::New(data->dcd));
^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:3499:22: note: declared here
bool Set(Local key, Local value));
^~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
../src/serialport.cpp:336:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
data->callback.Call(2, argv);
^
In file included from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
Call(int argc, v8::Local argv[]) const {
^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:362:70: 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]
uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO_AfterDrain);
^~~~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterDrain(uv_work_t*)’:
../src/serialport.cpp:377:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
data->callback.Call(1, argv);
^
In file included from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
Call(int argc, v8::Local argv[]) const {
^~~~
../src/serialport.cpp: At global scope:
../src/serialport.cpp:383:28: warning: unnecessary parentheses in declaration of ‘ToParityEnum’ [-Wparentheses]
SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local& v8str)) {
^
../src/serialport.cpp:402:30: warning: unnecessary parentheses in declaration of ‘ToStopBitEnum’ [-Wparentheses]
SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) {
^
../src/serialport.cpp:413:17: error: variable or field ‘init’ declared void
void init(v8::Handle target) {
^~~~~~
../src/serialport.cpp:413:17: error: ‘Handle’ is not a member of ‘v8’
../src/serialport.cpp:413:34: error: expected primary-expression before ‘>’ token
void init(v8::Handle target) {
^
../src/serialport.cpp:413:36: error: ‘target’ was not declared in this scope
void init(v8::Handle target) {
^~~~~~
../src/serialport.cpp:413:36: note: suggested alternative: ‘tzset’
void init(v8::Handle target) {
^~~~~~
tzset
In file included from ../../../../nan/nan.h:56,
from ../src/./serialport.h:6,
from ../src/serialport.cpp:1:
../src/serialport.cpp:437:25: error: ‘init’ was not declared in this scope
NODE_MODULE(serialport, init);
^~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/node.h:608:36: note: in definition of macro ‘NODE_MODULE_X’
(node::addon_register_func) (regfunc), \
^~~~~~~
../src/serialport.cpp:437:1: note: in expansion of macro ‘NODE_MODULE’
NODE_MODULE(serialport, init);
^~~~~~~~~~~
../src/serialport.cpp:437:25: note: suggested alternative: ‘int’
NODE_MODULE(serialport, init);
^~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/node.h:608:36: note: in definition of macro ‘NODE_MODULE_X’
(node::addon_register_func) (regfunc), \
^~~~~~~
../src/serialport.cpp:437:1: note: in expansion of macro ‘NODE_MODULE’
NODE_MODULE(serialport, init);
^~~~~~~~~~~
make: *** [serialport.target.mk:111: Release/obj.target/serialport/src/serialport.o] エラー 1
make: ディレクトリ '/home/pi/.node-red/node_modules/firmata/node_modules/serialport/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:275:12)
gyp ERR! System Linux 5.4.51-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/.node-red/node_modules/firmata/node_modules/serialport
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
npm WARN node-red-project@0.0.1 No repository field.
npm WARN node-red-project@0.0.1 No license field.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! serialport@6.0.5 install: `prebuild-install || node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the serialport@6.0.5 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/pi/.npm/_logs/2020-07-25T05_37_13_431Z-debug.log
pi@raspberrypi:~/.node-red $