Closed chapulina closed 5 years ago
I'm having an issue with the rosdep keys; it seems that the version that comes with Ubuntu for nodejs
is not enough:
Polymer CLI requires at least Node v8.0. You have v4.2.6.
See https://www.polymer-project.org/2.0/docs/tools/node-support for details.
npm ERR! Linux 4.15.0-46-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "build"
npm ERR! node v4.2.6
npm ERR! npm v3.5.2
npm ERR! code ELIFECYCLE
npm ERR! rvizweb@0.0.0 build: `bower install --allow-root && polymer build --name www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the rvizweb@0.0.0 build script 'bower install --allow-root && polymer build --name www'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the rvizweb package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! bower install --allow-root && polymer build --name www
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs rvizweb
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls rvizweb
npm ERR! There is likely additional logging output above.
node
version can be updated via npm
using the one installed from rosdeps like this or with apt
like this. I've tried both options and they work (the second one is rather straightforward).
The problem is that we would need to update node
in CMakeLists
which sounds a bit dirty to make it self-contained. We could add npm
as a buildtool dependency and update node
as a pre-requisite (it would still shorten the install instructions a bit). I'll look into alternatives, but so far this is what I found; @chapulina please let me know if you have some other ideas.
EDIT: the node
version can at least be enforced in package.json
; in our case it should be >=8.0.0
.
Ubuntu Bionic ships with nodejs 8.10.0: https://packages.ubuntu.com/bionic/nodejs So releasing into ROS Melodic should be no problem.
There is no need to also release it into ROS Kinetic.
I'm also ok with only releasing into Melodic. We can put this on hold until #25 is done.
Summary on progress on this so far:
rosdistro
(see list here).rvizweb
's dependencies and a library npm
depends on indirectly. In short, rvizweb
depends indirectly on libssl
and npm
on libssl1.0
, which are not compatible (see here). At the bottom level of ROS dependencies, the chain is as follows: class_loader
--> libpoco-dev
--> libssl
. Then, all packages that indirectly depend on class_loader
collide with npm
's libssl1.0
dependency. A more detailed list can be found in the attached file.
Update:
nodejs
version (8.10) that can be fetched in ubuntu:18
by default does not come with npm
in contrast with newer ones. npm
version that can be fetched in ubuntu:18
(3.5) has conflicts with dependencies of many ROS packages according to the description above (namely, libssl
and all libraries and packages that indirectly use it). This means that adding npm
and nodejs
as build tools would cause conflicts with other rvizweb
's dependencies and many other ROS-core packages. Therefore, a binary release that relies on rosdep
and the default rosdep
keys for Melodic to get the dependencies is not possible.
The LTS release mentioned in this link allows getting nodejs:8.15
, which does includes a newer version of npm
(6.4) that doesn't have the problem described above. I'll update the instructions to simplify the source installation process a bit (this doesn't solve the binary release issue).
A binary release shall be postponed until the default versions of nodejs
and npm
for Ubuntu 18 allow it.
It was brought up in https://github.com/osrf/rvizweb/issues/21#issuecomment-474103742 that it would be convenient to release RVizWeb into rosdistro (Kinetic at first, then Melodic once #25 is solved).
I think the first step for that would be to use
npm
/nodejs
from rosdistro instead of installing it separately. There are rosdep keys for that already and here's a package that is using them as an example.