Massive thank you, Jibeer!
I’m working again!
For anyone else with this issue, the fix was to put the following into the configuration
system_packages:
- make
- python3
- g++
- gcc
- linux-headers
npm_packages:
- nan - serialport - node-red-contrib-rfxcom
init_commands: []
There are errors in the log on start-up, but Node-Red is working correctly so far.
Executing busybox-1.31.1-r16.trigger,
: 140 MiB in 52 packages,
(1/1) Installing make (4.3-r0),
(1/12) Installing binutils (2.34-r1),
(2/12) Installing gmp (6.2.0-r0),
(4/12) Installing libgomp (9.3.0-r2),
(3/12) Installing isl (0.18-r0),
(5/12) Installing libatomic (9.3.0-r2),
(6/12) Installing libgphobos (9.3.0-r2),
(8/12) Installing mpc1 (1.1.0-r1),
(9/12) Installing gcc (9.3.0-r2),
(7/12) Installing mpfr4 (4.0.2-r4),
(10/12) Installing musl-dev (1.1.24-r9),
(12/12) Installing g++ (9.3.0-r2),
(11/12) Installing libc-dev (0.7.2-r3),
: 333 MiB in 64 packages,
(1/1) Installing linux-headers (5.4.5-r1),
: 340 MiB in 65 packages,
OK: 28525 distinct packages available,
[11:31:05] INFO: Starting installation of custom NPM/Node-RED packages...,
> @serialport/[email protected] install /opt/node_modules/@serialport/bindings,
> prebuild-install --tag-prefix @serialport/bindings@ || node-gyp rebuild,
prebuild-install WARN install No prebuilt binaries found (target=12.17.0 runtime=node arch=x64 libc=musl platform=linux),
make: Entering directory '/opt/node_modules/@serialport/bindings/build',
CXX(target) Release/obj.target/bindings/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],
2294 | , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete),
../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)':,
| ^,
../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],
78 | uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_AfterOpen);,
| ^~~~~~~~~~~~~,
../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)':,
../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],
135 | uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EIO_AfterUpdate);,
| ^~~~~~~~~~~~~~~,
../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],
175 | uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO_AfterClose);,
| ^~~~~~~~~~~~~~,
../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],
215 | uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO_AfterFlush);,
../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)':,
../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],
270 | uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_AfterSet);,
| ^~~~~~~~~~~~,
../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],
314 | uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_AfterGet);,
../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE GetBaudRate(Nan::NAN_METHOD_ARGS_TYPE)':,
../src/serialport.cpp:363:76: 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],
363 | uv_queue_work(uv_default_loop(), req, EIO_GetBaudRate, (uv_after_work_cb)EIO_AfterGetBaudRate);,
| ^~~~~~~~~~~~~~~~~~~~,
../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)':,
../src/serialport.cpp:409: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],
409 | uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO_AfterDrain);,
../src/serialport.cpp: At global scope:,
../src/serialport.cpp:430:28: warning: unnecessary parentheses in declaration of 'ToParityEnum' [-Wparentheses],
430 | SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local<v8::String>& v8str)) {,
| ^,
../src/serialport.cpp:449:30: warning: unnecessary parentheses in declaration of 'ToStopBitEnum' [-Wparentheses],
449 | SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) {,
| ^,
In file included from ../../../nan/nan.h:56,,
from ../src/./serialport.h:6,,
/root/.cache/node-gyp/12.17.0/include/node/node.h:608: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],
608 | (node::addon_register_func) (regfunc), \,
| ^,
/root/.cache/node-gyp/12.17.0/include/node/node.h:642:3: note: in expansion of macro 'NODE_MODULE_X',
642 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage),
| ^~~~~~~~~~~~~,
../src/serialport.cpp:483:1: note: in expansion of macro 'NODE_MODULE',
483 | NODE_MODULE(serialport, init);,
| ^~~~~~~~~~~,
CXX(target) Release/obj.target/bindings/src/serialport_unix.o,
In file included from ../src/serialport.h:6,,
from ../src/serialport_unix.cpp:2:,
../src/serialport_unix.cpp: In function 'int setup(int, OpenBaton*)':,
../src/serialport_unix.cpp:176:82: warning: '%s' directive output may be truncated writing up to 1023 bytes into a region of size 1005 [-Wformat-truncation=],
176 | snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path);,
| ^~,
../src/serialport_unix.cpp:176:13: note: 'snprintf' output 20 or more bytes (assuming 1043) into a destination of size 1024,
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,
../src/serialport_unix.cpp: In function 'void EIO_Open(uv_work_t*)':,
../src/serialport_unix.cpp:86:84: warning: '%s' directive output may be truncated writing up to 1023 bytes into a region of size 1003 [-Wformat-truncation=],
86 | snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path);,
| ^~,
../src/serialport_unix.cpp:86:13: note: 'snprintf' output 22 or more bytes (assuming 1045) into a destination of size 1024,
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,
CXX(target) Release/obj.target/bindings/src/poller.o,
In file included from ../src/poller.cpp:1:,
CXX(target) Release/obj.target/bindings/src/serialport_linux.o,
SOLINK_MODULE(target) Release/obj.target/bindings.node,
COPY Release/bindings.node,
make: Leaving directory '/opt/node_modules/@serialport/bindings/build',
> node thank-you.js,
> [email protected] postinstall /opt/node_modules/serialport,
Thank you for using serialport!,
If you rely on this package, please consider supporting our open collective:,
> https://opencollective.com/serialport/donate,
+ [email protected],,
1,
+ [email protected],
+ [email protected],
added 18 packages from 14 contributors and audited 1077 packages in 8.016s,
37 packages are looking for funding,
run `npm fund` for details,
found 4 low severity vulnerabilities,
run `npm audit fix` to fix them, or `npm audit` for details,
[cont-init.d] user.sh: exited 0.,
[cont-init.d] done.,
[services.d] starting services,
[services.d] done.,
[11:31:14] INFO: Starting Node-RED...,
> addon-node-red@ start /opt,
> node $NODE_OPTIONS node_modules/node-red/red.js "--settings" "/etc/node-red/config.js",
24 Jul 11:31:14 - [info] ,
===================,
Welcome to Node-RED