ct-Open-Source / ct-Smart-Home

A ready-to-use Node-RED setup for home automation

Home Page:https://ct.de/smarthome

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rebuild from provided docker-image/Dockerfile fails because of wrong dependencies

DannyBoyKN opened this issue · comments

I wanted to extend the image by inserting the apk package 'raspberrypi' in order to get utilities for reading eg. the temperature of the raspberrypi 4B (eg. vcgencmd).

Before doing so I tried to rebuild from the docker-image/Dockerfile but get plenty of warnings for deprecated npm packages npm WARN deprecated and builds for the USB module, see full build log below.

Is that not the intended way ?
How do I get the correct package/module dependencies solved ?

I can add the package manually by attaching a bash and enter:

>$ su
>$ apk add --no-cache raspberrypi
>$ exit

Then everything is available under /opt/vc/...

Many thanks in advance

$ docker build -t mynodered  ./docker-image/

Sending build context to Docker daemon   7.68kB
Step 1/9 : FROM nodered/node-red:latest-minimal
latest-minimal: Pulling from nodered/node-red
Digest: sha256:28e8c7d46da71cb10107d562547828228ecfabbe75c541cddb4e86d318403a2b
Status: Downloaded newer image for nodered/node-red:latest-minimal
 ---> 7e5c5b05d0b4
Step 2/9 : COPY entrypoint.sh /usr/src/node-red/entrypoint.sh
 ---> fe13e683f15b
Step 3/9 : WORKDIR /usr/src/node-red
 ---> Running in 7171ca8cf0b5
Removing intermediate container 7171ca8cf0b5
 ---> da125b80ead8
Step 4/9 : USER root
 ---> Running in de8b44e4f5aa
Removing intermediate container de8b44e4f5aa
 ---> bd0379cbe54c
Step 5/9 : RUN set -ex 	&& apk add --no-cache 	  avahi-compat-libdns_sd 	  dbus 	  libcap 	  python 	&& apk add --no-cache --virtual dev-packages 	  make 	  g++ 	  avahi-dev 	  eudev 	  eudev-dev 	  bluez-dev 	  build-base 	  linux-headers           raspberrypi 	  udev 	&& setcap cap_net_raw+eip $(eval readlink -f `which node`) 	&& chown messagebus:messagebus /var/run/dbus 	&& chown avahi:avahi /var/run/avahi-daemon 	&& sed -i "s/#enable-dbus=yes/enable-dbus=yes/g" /etc/avahi/avahi-daemon.conf 	&& dbus-uuidgen --ensure 	&& npm install node-red-contrib-fritz node-red-contrib-homekit-bridged node-red-contrib-tado-client node-red-dashboard node-red-node-base64 node-red-node-msgpack node-red-node-random node-red-node-suncalc @rdmtc/node-red-contrib-noble --unsafe-perm 	&& apk del dev-packages 	&& npm dedupe 	&& npm cache clean --force
 ---> Running in 97132ed9b56e
+ apk add --no-cache avahi-compat-libdns_sd dbus libcap python
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/armv7/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/community/armv7/APKINDEX.tar.gz
(1/10) Installing dbus-libs (1.12.16-r2)
(2/10) Installing libintl (0.20.1-r2)
(3/10) Installing avahi-libs (0.7-r4)
(4/10) Installing avahi-compat-libdns_sd (0.7-r4)
(5/10) Installing dbus (1.12.16-r2)
Executing dbus-1.12.16-r2.pre-install
(6/10) Installing libbz2 (1.0.8-r1)
(7/10) Installing libffi (3.2.1-r6)
(8/10) Installing gdbm (1.13-r1)
(9/10) Installing sqlite-libs (3.30.1-r1)
(10/10) Installing python2 (2.7.16-r3)
Executing busybox-1.31.1-r9.trigger
OK: 69 MiB in 46 packages
+ apk add --no-cache --virtual dev-packages make g++ avahi-dev eudev eudev-dev bluez-dev build-base linux-headers raspberrypi udev
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/armv7/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/community/armv7/APKINDEX.tar.gz
(1/64) Upgrading musl (1.1.24-r0 -> 1.1.24-r1)
(2/64) Installing make (4.2.1-r2)
(3/64) Installing binutils (2.33.1-r0)
(4/64) Installing gmp (6.1.2-r1)
(5/64) Installing isl (0.18-r0)
(6/64) Installing libgomp (9.2.0-r3)
(7/64) Installing libatomic (9.2.0-r3)
(8/64) Installing mpfr4 (4.0.2-r1)
(9/64) Installing mpc1 (1.1.0-r1)
(10/64) Installing gcc (9.2.0-r3)
(11/64) Installing musl-dev (1.1.24-r1)
(12/64) Installing libc-dev (0.7.2-r0)
(13/64) Installing g++ (9.2.0-r3)
(14/64) Installing gdbm-dev (1.13-r1)
(15/64) Installing avahi-compat-howl (0.7-r4)
(16/64) Installing libblkid (2.34-r1)
(17/64) Installing libmount (2.34-r1)
(18/64) Installing pcre (8.43-r0)
(19/64) Installing glib (2.62.5-r0)
(20/64) Installing avahi-glib (0.7-r4)
(21/64) Installing libdaemon (0.14-r2)
(22/64) Installing avahi (0.7-r4)
Executing avahi-0.7-r4.pre-install
(23/64) Installing xz-libs (5.2.4-r0)
(24/64) Installing python3 (3.8.2-r0)
(25/64) Installing gettext-asprintf (0.20.1-r2)
(26/64) Installing libunistring (0.9.10-r0)
(27/64) Installing gettext-libs (0.20.1-r2)
(28/64) Installing libxml2 (2.9.10-r2)
(29/64) Installing gettext (0.20.1-r2)
(30/64) Installing gettext-dev (0.20.1-r2)
(31/64) Installing bzip2-dev (1.0.8-r1)
(32/64) Installing libxml2-utils (2.9.10-r2)
(33/64) Installing libgpg-error (1.36-r2)
(34/64) Installing libgcrypt (1.8.5-r0)
(35/64) Installing libxslt (1.1.34-r0)
(36/64) Installing docbook-xml (4.5-r6)
Executing docbook-xml-4.5-r6.post-install
(37/64) Installing docbook-xsl (1.79.2-r2)
Executing docbook-xsl-1.79.2-r2.post-install
(38/64) Installing linux-headers (4.19.36-r0)
(39/64) Installing pkgconf (1.6.3-r0)
(40/64) Installing libffi-dev (3.2.1-r6)
(41/64) Installing libpcre16 (8.43-r0)
(42/64) Installing libpcre32 (8.43-r0)
(43/64) Installing libpcrecpp (8.43-r0)
(44/64) Installing pcre-dev (8.43-r0)
(45/64) Installing libuuid (2.34-r1)
(46/64) Installing libfdisk (2.34-r1)
(47/64) Installing libsmartcols (2.34-r1)
(48/64) Installing util-linux-dev (2.34-r1)
(49/64) Installing zlib-dev (1.2.11-r3)
(50/64) Installing glib-dev (2.62.5-r0)
(51/64) Installing avahi-dev (0.7-r4)
(52/64) Installing udev-init-scripts (33-r0)
Executing udev-init-scripts-33-r0.post-install
(53/64) Installing eudev-libs (3.2.9-r1)
(54/64) Installing kmod (26-r0)
(55/64) Installing eudev (3.2.9-r1)
(56/64) Installing eudev-dev (3.2.9-r1)
(57/64) Installing bluez-libs (5.52-r0)
(58/64) Installing bluez-dev (5.52-r0)
(59/64) Installing file (5.37-r1)
(60/64) Installing fortify-headers (1.1-r0)
(61/64) Installing build-base (0.5-r1)
(62/64) Installing raspberrypi-libs (0.20190416-r1)
(63/64) Installing raspberrypi (0.20190416-r1)
(64/64) Installing dev-packages (20200317.141848)
Executing busybox-1.31.1-r9.trigger
Executing dbus-1.12.16-r2.trigger
Executing glib-2.62.5-r0.trigger
No schema files found: doing nothing.
Executing eudev-3.2.9-r1.trigger
OK: 279 MiB in 109 packages
+ which node
+ eval readlink -f /usr/local/bin/node
+ readlink -f /usr/local/bin/node
+ setcap cap_net_raw+eip /usr/local/bin/node
+ chown messagebus:messagebus /var/run/dbus
+ chown avahi:avahi /var/run/avahi-daemon
+ sed -i 's/#enable-dbus=yes/enable-dbus=yes/g' /etc/avahi/avahi-daemon.conf
+ dbus-uuidgen --ensure
+ npm install node-red-contrib-fritz node-red-contrib-homekit-bridged node-red-contrib-tado-client node-red-dashboard node-red-node-base64 node-red-node-msgpack node-red-node-random node-red-node-suncalc @rdmtc/node-red-contrib-noble --unsafe-perm
npm WARN deprecated simple-oauth2@2.5.2: simple-oauth2 v2 is no longer supported. Please upgrade to v3 for further support
npm WARN deprecated wreck@14.2.0: This module has moved and is now available at @hapi/wreck. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
npm WARN deprecated boom@7.3.0: This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
npm WARN deprecated hoek@6.1.3: This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
npm WARN deprecated bourne@1.1.2: This module has moved and is now available at @hapi/bourne. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.

> usb@1.6.2 install /usr/src/node-red/node_modules/usb
> prebuild-install --verbose || node-gyp rebuild

prebuild-install info begin Prebuild-install version 5.3.3
prebuild-install info looking for cached prebuild @ /root/.npm/_prebuilds/9e6864-usb-v1.6.2-node-v64-linuxmusl-arm.tar.gz
prebuild-install http request GET https://github.com/tessel/node-usb/releases/download/v1.6.2/usb-v1.6.2-node-v64-linuxmusl-arm.tar.gz
prebuild-install http 404 https://github.com/tessel/node-usb/releases/download/v1.6.2/usb-v1.6.2-node-v64-linuxmusl-arm.tar.gz
prebuild-install WARN install No prebuilt binaries found (target=10.19.0 runtime=node arch=arm libc=musl platform=linux)
make: Entering directory '/usr/src/node-red/node_modules/usb/build'
  CC(target) Release/obj.target/libusb/libusb/libusb/core.o
  CC(target) Release/obj.target/libusb/libusb/libusb/descriptor.o
  CC(target) Release/obj.target/libusb/libusb/libusb/hotplug.o
  CC(target) Release/obj.target/libusb/libusb/libusb/io.o
  CC(target) Release/obj.target/libusb/libusb/libusb/strerror.o
  CC(target) Release/obj.target/libusb/libusb/libusb/sync.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/poll_posix.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/threads_posix.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_usbfs.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_udev.o
  AR(target) Release/obj.target/usb.a
  COPY Release/usb.a
  CXX(target) Release/obj.target/usb_bindings/src/node_usb.o
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/node_usb.cc:1:
../../nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
../../nan/nan.h:2232: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]
 2232 |     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
      |                                                              ^
In file included from ../src/node_usb.h:14,
                 from ../src/node_usb.cc:1:
../src/node_usb.cc: At global scope:
/root/.cache/node-gyp/10.19.0/include/node/node.h:573:43: warning: cast between incompatible function types from 'void (*)(v8::Local<v8::Object>)' to 'node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type]
  573 |       (node::addon_register_func) (regfunc),                          \
      |                                           ^
/root/.cache/node-gyp/10.19.0/include/node/node.h:607:3: note: in expansion of macro 'NODE_MODULE_X'
  607 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
      |   ^~~~~~~~~~~~~
../src/node_usb.cc:95:1: note: in expansion of macro 'NODE_MODULE'
   95 | NODE_MODULE(usb_bindings, Initialize)
      | ^~~~~~~~~~~
../src/node_usb.cc: In function 'void handleHotplug(std::pair<libusb_device*, libusb_hotplug_event>)':
../src/node_usb.cc:151:58: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
  151 |  Nan::MakeCallback(Nan::New(hotplugThis), "emit", 2, argv);
      |                                                          ^
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/node_usb.cc:1:
../../nan/nan.h:1001:46: note: declared here
 1001 |   NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
      |                                              ^~~~~~~~~~~~
../src/node_usb.cc:151:58: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
  151 |  Nan::MakeCallback(Nan::New(hotplugThis), "emit", 2, argv);
      |                                                          ^
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/node_usb.cc:1:
../../nan/nan.h:1001:46: note: declared here
 1001 |   NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
      |                                              ^~~~~~~~~~~~
In file included from ../src/node_usb.h:12,
                 from ../src/node_usb.cc:1:
/root/.cache/node-gyp/10.19.0/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>&)]':
/root/.cache/node-gyp/10.19.0/include/node/node_object_wrap.h:84:78:   required from here
/root/.cache/node-gyp/10.19.0/include/node/v8.h:9502: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]
 9502 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/.cache/node-gyp/10.19.0/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:65:61:   required from here
/root/.cache/node-gyp/10.19.0/include/node/v8.h:9502: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]
  CXX(target) Release/obj.target/usb_bindings/src/device.o
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/device.cc:1:
../../nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
../../nan/nan.h:2232: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]
 2232 |     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
      |                                                              ^
../src/device.cc: In member function 'void Req::submit(Device*, v8::Local<v8::Function>, uv_work_cb, uv_work_cb)':
../src/device.cc:220:70: warning: cast between incompatible function types from 'uv_work_cb' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [-Wcast-function-type]
  220 |   uv_queue_work(uv_default_loop(), &req, backend, (uv_after_work_cb) after);
      |                                                                      ^~~~~
../src/device.cc: In static member function 'static void Req::default_after(uv_work_t*)':
../src/device.cc:237:64: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
  237 |    Nan::MakeCallback(device, Nan::New(baton->callback), 1, argv);
      |                                                                ^
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/device.cc:1:
../../nan/nan.h:959:46: note: declared here
  959 |   NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
      |                                              ^~~~~~~~~~~~
../src/device.cc:237:64: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
  237 |    Nan::MakeCallback(device, Nan::New(baton->callback), 1, argv);
      |                                                                ^
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/device.cc:1:
../../nan/nan.h:959:46: note: declared here
  959 |   NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
      |                                              ^~~~~~~~~~~~
In file included from ../src/node_usb.h:12,
                 from ../src/device.cc:1:
/root/.cache/node-gyp/10.19.0/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>&)]':
/root/.cache/node-gyp/10.19.0/include/node/node_object_wrap.h:84:78:   required from here
/root/.cache/node-gyp/10.19.0/include/node/v8.h:9502: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]
 9502 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/.cache/node-gyp/10.19.0/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:65:61:   required from here
/root/.cache/node-gyp/10.19.0/include/node/v8.h:9502: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]
  CXX(target) Release/obj.target/usb_bindings/src/transfer.o
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/transfer.cc:1:
../../nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
../../nan/nan.h:2232: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]
 2232 |     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
      |                                                              ^
../src/transfer.cc: In function 'void handleCompletion(Transfer*)':
../src/transfer.cc:126:72: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
  126 |   Nan::MakeCallback(self->handle(), Nan::New(self->v8callback), 3, argv);
      |                                                                        ^
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/transfer.cc:1:
../../nan/nan.h:959:46: note: declared here
  959 |   NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
      |                                              ^~~~~~~~~~~~
../src/transfer.cc:126:72: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
  126 |   Nan::MakeCallback(self->handle(), Nan::New(self->v8callback), 3, argv);
      |                                                                        ^
In file included from ../src/helpers.h:3,
                 from ../src/node_usb.h:21,
                 from ../src/transfer.cc:1:
../../nan/nan.h:959:46: note: declared here
  959 |   NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
      |                                              ^~~~~~~~~~~~
In file included from ../src/node_usb.h:12,
                 from ../src/transfer.cc:1:
/root/.cache/node-gyp/10.19.0/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>&)]':
/root/.cache/node-gyp/10.19.0/include/node/node_object_wrap.h:84:78:   required from here
/root/.cache/node-gyp/10.19.0/include/node/v8.h:9502: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]
 9502 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/.cache/node-gyp/10.19.0/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:65:61:   required from here
/root/.cache/node-gyp/10.19.0/include/node/v8.h:9502: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]
  SOLINK_MODULE(target) Release/obj.target/usb_bindings.node
  COPY Release/usb_bindings.node
make: Leaving directory '/usr/src/node-red/node_modules/usb/build'

> @abandonware/bluetooth-hci-socket@0.5.3-5 install /usr/src/node-red/node_modules/@abandonware/bluetooth-hci-socket
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download 
node-pre-gyp WARN Tried to download(404): https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-5/binding-0.5.3-5-node-v64-linux-arm.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for @abandonware/bluetooth-hci-socket@0.5.3-5 and node@10.19.0 (node-v64 ABI, musl) (falling back to source compile with node-gyp) 
make: Entering directory '/usr/src/node-red/node_modules/@abandonware/bluetooth-hci-socket/build'
  CXX(target) Release/obj.target/binding/src/BluetoothHciSocket.o
In file included from ../src/BluetoothHciSocket.cpp:8:
../node_modules/nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
../node_modules/nan/nan.h:2298: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]
 2298 |     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
      |                                                              ^
In file included from /root/.cache/node-gyp/10.19.0/include/node/node_buffer.h:25,
                 from ../src/BluetoothHciSocket.cpp:7:
../src/BluetoothHciSocket.cpp: At global scope:
/root/.cache/node-gyp/10.19.0/include/node/node.h:573: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]
  573 |       (node::addon_register_func) (regfunc),                          \
      |                                           ^
/root/.cache/node-gyp/10.19.0/include/node/node.h:607:3: note: in expansion of macro 'NODE_MODULE_X'
  607 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
      |   ^~~~~~~~~~~~~
../src/BluetoothHciSocket.cpp:578:1: note: in expansion of macro 'NODE_MODULE'
  578 | NODE_MODULE(binding, BluetoothHciSocket::Init);
      | ^~~~~~~~~~~
In file included from /root/.cache/node-gyp/10.19.0/include/node/node.h:63,
                 from /root/.cache/node-gyp/10.19.0/include/node/node_buffer.h:25,
                 from ../src/BluetoothHciSocket.cpp:7:
/root/.cache/node-gyp/10.19.0/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>&)]':
/root/.cache/node-gyp/10.19.0/include/node/node_object_wrap.h:84:78:   required from here
/root/.cache/node-gyp/10.19.0/include/node/v8.h:9502: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]
 9502 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/.cache/node-gyp/10.19.0/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>&)]':
../node_modules/nan/nan_object_wrap.h:65:61:   required from here
/root/.cache/node-gyp/10.19.0/include/node/v8.h:9502: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]
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
  COPY /usr/src/node-red/node_modules/@abandonware/bluetooth-hci-socket/lib/binding/binding.node
  TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/usr/src/node-red/node_modules/@abandonware/bluetooth-hci-socket/build'

> @abandonware/noble@1.9.2-2 install /usr/src/node-red/node_modules/@abandonware/noble
> node-gyp rebuild

make: Entering directory '/usr/src/node-red/node_modules/@abandonware/noble/build'
  SOLINK_MODULE(target) Release/obj.target/noble.node
  COPY Release/noble.node
make: Leaving directory '/usr/src/node-red/node_modules/@abandonware/noble/build'
npm notice created a lockfile as package-lock.json. You should commit this file.
+ node-red-node-random@0.1.4
+ node-red-node-base64@0.2.1
+ node-red-contrib-fritz@1.3.9
+ node-red-dashboard@2.19.4
+ node-red-contrib-tado-client@0.4.0
+ node-red-node-suncalc@0.0.12
+ node-red-node-msgpack@1.2.1
+ node-red-contrib-homekit-bridged@1.0.4
+ @rdmtc/node-red-contrib-noble@0.3.0
added 156 packages from 221 contributors in 64.99s

15 packages are looking for funding
  run `npm fund` for details

+ apk del dev-packages
WARNING: Ignoring APKINDEX.70f61090.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.ca2fea5b.tar.gz: No such file or directory
(1/63) Purging dev-packages (20200317.141848)
(2/63) Purging avahi-dev (0.7-r4)
(3/63) Purging gdbm-dev (1.13-r1)
(4/63) Purging avahi-compat-howl (0.7-r4)
(5/63) Purging avahi-glib (0.7-r4)
(6/63) Purging avahi (0.7-r4)
(7/63) Purging eudev-dev (3.2.9-r1)
(8/63) Purging bluez-dev (5.52-r0)
(9/63) Purging bluez-libs (5.52-r0)
(10/63) Purging build-base (0.5-r1)
(11/63) Purging file (5.37-r1)
(12/63) Purging g++ (9.2.0-r3)
(13/63) Purging gcc (9.2.0-r3)
(14/63) Purging binutils (2.33.1-r0)
(15/63) Purging libatomic (9.2.0-r3)
(16/63) Purging make (4.2.1-r2)
(17/63) Purging libc-dev (0.7.2-r0)
(18/63) Purging musl-dev (1.1.24-r1)
(19/63) Purging fortify-headers (1.1-r0)
(20/63) Purging raspberrypi (0.20190416-r1)
(21/63) Purging isl (0.18-r0)
(22/63) Purging mpc1 (1.1.0-r1)
(23/63) Purging mpfr4 (4.0.2-r1)
(24/63) Purging gmp (6.1.2-r1)
(25/63) Purging glib-dev (2.62.5-r0)
(26/63) Purging python3 (3.8.2-r0)
(27/63) Purging bzip2-dev (1.0.8-r1)
(28/63) Purging docbook-xsl (1.79.2-r2)
Executing docbook-xsl-1.79.2-r2.post-deinstall
(29/63) Purging libxslt (1.1.34-r0)
(30/63) Purging docbook-xml (4.5-r6)
Executing docbook-xml-4.5-r6.post-deinstall
(31/63) Purging libxml2-utils (2.9.10-r2)
(32/63) Purging gettext-dev (0.20.1-r2)
(33/63) Purging gettext-asprintf (0.20.1-r2)
(34/63) Purging gettext (0.20.1-r2)
(35/63) Purging libgomp (9.2.0-r3)
(36/63) Purging util-linux-dev (2.34-r1)
(37/63) Purging libfdisk (2.34-r1)
(38/63) Purging libsmartcols (2.34-r1)
(39/63) Purging libuuid (2.34-r1)
(40/63) Purging eudev (3.2.9-r1)
(41/63) Purging udev-init-scripts (33-r0)
(42/63) Purging eudev-libs (3.2.9-r1)
(43/63) Purging glib (2.62.5-r0)
(44/63) Purging libmount (2.34-r1)
(45/63) Purging libblkid (2.34-r1)
(46/63) Purging pcre-dev (8.43-r0)
(47/63) Purging libpcre16 (8.43-r0)
(48/63) Purging libpcre32 (8.43-r0)
(49/63) Purging libpcrecpp (8.43-r0)
(50/63) Purging pcre (8.43-r0)
(51/63) Purging libdaemon (0.14-r2)
(52/63) Purging kmod (26-r0)
(53/63) Purging libxml2 (2.9.10-r2)
(54/63) Purging xz-libs (5.2.4-r0)
(55/63) Purging gettext-libs (0.20.1-r2)
(56/63) Purging libunistring (0.9.10-r0)
(57/63) Purging libgcrypt (1.8.5-r0)
(58/63) Purging libgpg-error (1.36-r2)
(59/63) Purging libffi-dev (3.2.1-r6)
(60/63) Purging linux-headers (4.19.36-r0)
(61/63) Purging zlib-dev (1.2.11-r3)
(62/63) Purging pkgconf (1.6.3-r0)
(63/63) Purging raspberrypi-libs (0.20190416-r1)
Executing busybox-1.31.1-r9.trigger
Executing dbus-1.12.16-r2.trigger
OK: 69 MiB in 46 packages
+ npm dedupe
audited 1904 packages in 4.535s

15 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

+ npm cache clean --force
npm WARN using --force I sure hope you know what you are doing.
Removing intermediate container 97132ed9b56e
 ---> fc3a5be4b8d3
Step 6/9 : RUN	sed -ie "s/'noble'/'@abandonware\/noble'/" node_modules/@rdmtc/node-red-contrib-noble/noble/node-red-contrib-noble.js
 ---> Running in 323380c4d67f
Removing intermediate container 323380c4d67f
 ---> 4a9086ea5a11
Step 7/9 : VOLUME /data
 ---> Running in d800093feaef
Removing intermediate container d800093feaef
 ---> b78257209e97
Step 8/9 : EXPOSE 1880
 ---> Running in 795c70612ff3
Removing intermediate container 795c70612ff3
 ---> 782eac335132
Step 9/9 : CMD ["/bin/sh", "/usr/src/node-red/entrypoint.sh" ]
 ---> Running in ded43ba252dc
Removing intermediate container ded43ba252dc
 ---> 5342062c9136
Successfully built 5342062c9136
Successfully tagged mynodered:latest

Hi,

this is due to the fact that the noble module has been abandoned. I've found an alternative and this one will be used by the image from now on. Fixing the "abandoment issues" used to require some hacky fixes with sed. This isn't necessary anymore.
The next release is based upon the new build process used by the official Node-Red image and contains a shellscript to build your own container.

Ok, thanks!

Still if I want to use the image and doing some cpu load and temperature visualizations on my RaspberryPi4B I have to add the 'raspberrypi' package by amending the Dockerfile:

FROM ghcr.io/ct-open-source/ctnodered:latest
RUN set -ex && apk add --no-cache raspberrypi

For 'vcgencmd' to work within the container the docker-compose.yml needs also:

services:
  nodered:
...
    devices:
      - /dev/vchiq:/dev/vchiq

Then adding package 'node-red-contrib-vcgencmd' to node-RED some nice Dashboard view like that is possible:
image

One cannot add package 'raspberrypi' to your Dockerfile nor the '/dev/vchiq' device to docker-compose.yml since this are specific to the Raspberry OS, right ?

Sure, I can adjust locally the Dockerfile and rebuild for my needs, but I wanted to keep the image up to date using watchtower, which is not working with my customized docker-compose. Could you show/give some advice on how to do that ?