ros-overlay
ros-overlay copied to clipboard
ROS without X
All,
Trying to install ROS on a headless robot, so no point in installing GTK or X or cairo or... Just emerging ros-base wants to install all that. I have -X -gtk in my global use flag.
Any idea?
Fred
Hm... I made an image for a raspberry pi 3 that was headless. I'm going to see what all is installed in that image and get back to you.
EDIT: Ok, after ssh'ing to the pi3, I found that I lack X, but have cairo, gtk+, ....
One of the packages pulling these things in is media-gfx/graphviz
, pulled in by ros-kinetic/tf
.
ros-kinetic/tf-1.11.9 (media-gfx/graphviz)
This makes sense, due to the nodes within tf
(unlike tf2
, the tf
nodes are all in the same library).
@tfoote How do you think this should be handled? I'm rather convinced that the tf
package could be a special case in superflore (well, more so than it already is) and that there could be some patches added to support taking the X
depends from specific packages.
@flabrosse Unfortunately, I'm not really able to spend time on this specific issue for the time being, but could give you some direction here if you want to help out with this. I'm sure you're not a distinct case here.
I'd be willing to help, but not right now! For now I'll install as is and come back to it later (although given how "expensive" time is, I suspect I'll forget all about it as soon as installed!).
@flabrosse Just a heads up of a unforeseen use-case of having X compiled in a headless robot. You can open via ssh -X
graphical windows that open on your machine. I've found this useful from machines that lacked the installed packages/messages to interact correctly with a robot.
I see your point. However, doing a fresh install of ros at the moment, and something wants to install xemacs. Why? Surely, it is not ROS' (or one of its dependencies) business to decide which editor I want to use... I tried the USE flag -xemacs, but that made no difference. Suggestions?
@flabrosse I don't know who's triggering xemacs
but I just double checked an installation (over Gentoo Prefix) of ros-kinetic/ros_base
, and then one on ros-kinetic/desktop
and none of them have xemacs installed. Maybe the package that contains the rosed
command depends on 'any' editor, and that's falling back to xemacs in your machine?
Here's another one. I'm trying to install ros-lunar/compressed_image_transport
and that wants ros-lunar/opencv3
(OK) which wants vtk
(why?) which wants qt5
(and a large chunk of qt at that), despite the offscreen use flag. Why?
PS Using a 100 odd days old tree, sorry if this has been fixed. PPS (edit) I could spend some time on that in July but will need to be taught about the superflore thing and all that.
ros-lunar/compressed_image_transport and that wants ros-lunar/opencv3 (OK) which wants vtk (why?) which wants qt5 (and a large chunk of qt at that), despite the offscreen use flag. Why?
I think that's mostly due to the way the package.xml
files work. There's no way (at least that I know of) that allows the developer to mark a particular dependency as optional. @dirk-thomas / @tfoote / @nuclearsandwich has this sort of feature been considered for the package.xml
format?
I think that such a feature might be over complicating things, though. Maybe the play here is to restructure the package itself to be more minimal. In other words, maybe we just create a opencv3_no_x
package which just narrows the selected parts of opencv3
to the ones that are needed by compressed_image_transport
.
The side effect here is that opencv3 gets installed twice, and one would definitely get file collisions (on Gentoo, probably also on other distros).
This is a whole can of worms that is really not trivial to deal with, I think. I'm really interested to hear @dirk-thomas' and @nuclearsandwich's thoughts here.
Is it a linking dependency or only a tools dependency, if you see what I mean? Could there be a opencv3-graphical-tools package that only contains these graphical tools of opencv that would therefore be an addition to a opencv3-base package?
has this sort of feature been considered for the
package.xml
format?
See https://answers.ros.org/question/202852/packagexml-provides/
There's not much that we can do since opencv does not support a more granular installation as we rely on the upstream packaged version of opencv and their core version has the gui elements enabled. On most other systems you still incur the cost of installing the graphical libraries but then don't use them so it only costs you disk space.
We don't have plans to redistrubute or repackage opencv. I would recommend that you look into upgrading the opencv gentoo formula to support the options that you want to use on your system.