osrf / rvizweb

RVizWeb: RViz on the browser
285 stars 59 forks source link

Release into rosdistro #27

Closed chapulina closed 5 years ago

chapulina commented 5 years ago

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.

jubeira commented 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.

dirk-thomas commented 5 years ago

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.

chapulina commented 5 years ago

I'm also ok with only releasing into Melodic. We can put this on hold until #25 is done.

jubeira commented 5 years ago

Summary on progress on this so far:

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.

dependency_chain_rvizweb_libssl.txt

jubeira commented 5 years ago

Update:

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.