Closed mpvader closed 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:
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
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:
screenshot showing the differences from "bad" npm-shrinkwrap.json to good one:
we're behind on various packages.
Also visible to end-users in de signalk-admin ui:
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/