victronenergy / venus

Victron Energy Unix/Linux OS
https://github.com/victronenergy/venus/wiki
577 stars 72 forks source link

signalk-server: update nodejs packages #1298

Closed mpvader closed 2 months ago

mpvader commented 3 months ago

we're behind on various packages.

Also visible to end-users in de signalk-admin ui:

image

Here is my result of making an npm-shrinkwrap, after doing (1) a clean clone of the signalk-server repo, (2) npm install --production, (3) npm shrinkwrap.

https://github.com/victronenergy/meta-victronenergy/commits/mva/signalk-shrinkwrap-update/

mpvader commented 2 months ago

Using the new npm-shrinkwrap, there are issues. Either Venus OS build succeeds, but when running singalk-server it complains about a missing package, server-api and possibly a few more.

And I've also seen OE complain:

ERROR: signalk-server-2.8.3-r0 do_populate_sysroot: The recipe signalk-server is trying to install files into a shared area when those files already exist. Those files and their manifest location are:
  /media/venusbuilds/venus-dunfell/build/tmp-glibc/sysroots-components/ekrano/signalk-server/usr/lib/node_modules/signalk-server/node_modules/@signalk/server-api
    (not matched to any task)
  /media/venusbuilds/venus-dunfell/build/tmp-glibc/sysroots-components/ekrano/signalk-server/usr/lib/node_modules/signalk-server/node_modules/@signalk/streams
    (not matched to any task)
  /media/venusbuilds/venus-dunfell/build/tmp-glibc/sysroots-components/ekrano/signalk-server/usr/lib/node_modules/signalk-server/node_modules/@signalk/server-admin-ui
    (not matched to any task)
  /media/venusbuilds/venus-dunfell/build/tmp-glibc/sysroots-components/ekrano/signalk-server/usr/lib/node_modules/signalk-server/node_modules/@signalk/resources-provider
    (not matched to any task)
Please verify which recipe should provide the above files.

After looking further into it: building signalk-server with the new shrinkwrap works differently. Some packages are installed in /signalk-server/packages, and then in /signalk-server/node_modules/@signalk/ there are symlinks to that ../packages/ folder.

And one is broken: image

With the previous shrinkwrap file, ie the one now in master, there is no /signalk-server/packages/ folder.

First here is the packages folder you see when using the new shrinkwrap - note how server-api is missing:

$ ls -al /media/venusbuilds/venus-dunfell/build/tmp-glibc/work/ekrano-ve-linux-gnueabi/signalk-server/2.8.3-r0/npm-tmp/packages
total 20
drwxr-xr-x  5 matthijs matthijs 4096 jul 11 14:48 .
drwxr-xr-x 16 matthijs matthijs 4096 jul 11 14:48 ..
drwxr-xr-x  3 matthijs matthijs 4096 jul 11 14:48 resources-provider-plugin
drwxr-xr-x  3 matthijs matthijs 4096 jul 11 14:48 server-admin-ui
drwxr-xr-x  3 matthijs matthijs 4096 jul 11 14:48 streams

Next, here is a listing of building with the prior version of npm shrinkwrap:

matthijs@mva-ubuntu2204:/media/venusbuilds/venus-dunfell/sources/meta-victronenergy$ ls -al /media/venusbuilds/venus-dunfell/build/tmp-glibc/work/ekrano-ve-linux-gnueabi/signalk-server/2.8.3-r0/npm-tmp/
total 504
drwxr-xr-x  15 matthijs matthijs   4096 jul 11 14:52 .
drwxrwxr-x  19 matthijs matthijs   4096 jul 11 14:54 ..
drwxr-xr-x   2 matthijs matthijs   4096 jul 11 14:52 bin
-rw-r--r--   1 matthijs matthijs    106 okt 26  1985 CHANGELOG.md
-rw-r--r--   1 matthijs matthijs    492 okt 26  1985 dependabot.yml
-rw-r--r--   1 matthijs matthijs     27 okt 26  1985 .dockerignore
drwxr-xr-x   4 matthijs matthijs   4096 jul 11 14:52 docs
-rw-r--r--   1 matthijs matthijs    147 okt 26  1985 .editorconfig
-rw-r--r--   1 matthijs matthijs      0 okt 26  1985 empty_file
-rw-r--r--   1 matthijs matthijs    500 okt 26  1985 .eslintrc.js
drwxr-xr-x   2 matthijs matthijs   4096 jul 11 14:52 img
-rw-r--r--   1 matthijs matthijs    666 okt 26  1985 index.js
drwxr-xr-x   2 matthijs matthijs   4096 jul 11 14:52 kubernetes
-rw-r--r--   1 matthijs matthijs   2292 okt 26  1985 kubernetes.md
drwxr-xr-x   6 matthijs matthijs   4096 jul 11 14:52 lib
-rw-r--r--   1 matthijs matthijs  10172 okt 26  1985 LICENSE
drwxr-xr-x 565 matthijs matthijs  24576 jul 11 14:53 node_modules
-rw-r--r--   1 matthijs matthijs 342055 jul 11 14:53 npm-shrinkwrap.json
-rw-r--r--   1 matthijs matthijs      3 okt 26  1985 .nvmrc
-rw-r--r--   1 matthijs matthijs   5772 okt 26  1985 package.json
drwxr-xr-x   2 matthijs matthijs   4096 jul 11 14:52 patches
drwxr-xr-x   3 matthijs matthijs   4096 jul 11 14:52 .pc
-rw-r--r--   1 matthijs matthijs     70 okt 26  1985 .prettierrc.json
-rw-r--r--   1 matthijs matthijs     71 okt 26  1985 Procfile
drwxr-xr-x   5 matthijs matthijs   4096 jul 11 14:52 public
-rw-r--r--   1 matthijs matthijs  15997 okt 26  1985 README.md
-rw-r--r--   1 matthijs matthijs   1200 okt 26  1985 releasing.md
drwxr-xr-x   2 matthijs matthijs   4096 jul 11 14:52 samples
drwxr-xr-x   2 matthijs matthijs   4096 jul 11 14:52 settings
drwxr-xr-x   2 matthijs matthijs   4096 jul 11 14:52 test-server-as-include
-rw-r--r--   1 matthijs matthijs    936 okt 26  1985 tsconfig.json
drwxr-xr-x   2 matthijs matthijs   4096 jul 11 14:52 util
$ ls -al /media/venusbuilds/venus-dunfell/build/tmp-glibc/work/ekrano-ve-linux-gnueabi/signalk-server/2.8.3-r0/npm-tmp/node_modules/@signalk
total 100
drwxr-xr-x  19 matthijs matthijs  4096 jul 11 14:52 .
drwxr-xr-x 565 matthijs matthijs 24576 jul 11 14:53 ..
drwxr-xr-x   6 matthijs matthijs  4096 jul 11 14:52 client
drwxr-xr-x   4 matthijs matthijs  4096 jul 11 14:52 course-provider
drwxr-xr-x   5 matthijs matthijs  4096 jul 11 14:52 freeboard-sk
drwxr-xr-x   4 matthijs matthijs  4096 jul 11 14:52 github-create-release
drwxr-xr-x   5 matthijs matthijs  4096 jul 11 14:52 instrumentpanel
drwxr-xr-x  11 matthijs matthijs  4096 jul 11 14:52 n2k-signalk
drwxr-xr-x   8 matthijs matthijs  4096 jul 11 14:52 nmea0183-signalk
drwxr-xr-x   3 matthijs matthijs  4096 jul 11 14:52 nmea0183-utilities
drwxr-xr-x   4 matthijs matthijs  4096 jul 11 14:52 resources-provider
drwxr-xr-x   3 matthijs matthijs  4096 jul 11 14:52 server-admin-ui
drwxr-xr-x   3 matthijs matthijs  4096 jul 11 14:52 server-api
drwxr-xr-x   2 matthijs matthijs  4096 jul 11 14:52 set-system-time
drwxr-xr-x   8 matthijs matthijs  4096 jul 11 14:52 signalk-schema
drwxr-xr-x   6 matthijs matthijs  4096 jul 11 14:52 signalk-to-nmea0183
drwxr-xr-x   2 matthijs matthijs  4096 jul 11 14:52 streams
drwxr-xr-x   3 matthijs matthijs  4096 jul 11 14:52 udp-nmea-plugin
drwxr-xr-x   4 matthijs matthijs  4096 jul 11 14:52 vesselpositions
mpvader commented 2 months ago

Success!

Solved by making the npm-shrinkwrap file on a signalk-server install that was made from the npmjs registry; rather from starting with cloning it from github.

Which actually is easiest to do just in the OE folder structure, see "recipe" here:

https://github.com/victronenergy/venus/wiki/npm-and-nodejs-packages

Running npm outdated shows all is updated, and also signalk-server runs fine and is all updated:

image
mpvader commented 2 months ago

screenshot showing the differences from "bad" npm-shrinkwrap.json to good one:

image