ros-overlay icon indicating copy to clipboard operation
ros-overlay copied to clipboard

ROS without X

Open flabrosse opened this issue 7 years ago • 11 comments

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

flabrosse avatar Nov 13 '17 19:11 flabrosse

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+, ....

allenh1 avatar Nov 13 '17 20:11 allenh1

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.

allenh1 avatar Nov 13 '17 20:11 allenh1

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 avatar Nov 13 '17 21:11 flabrosse

@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.

awesomebytes avatar Dec 14 '18 12:12 awesomebytes

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 avatar Dec 18 '18 10:12 flabrosse

@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?

awesomebytes avatar Dec 18 '18 11:12 awesomebytes

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.

flabrosse avatar May 15 '19 17:05 flabrosse

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.

allenh1 avatar May 15 '19 21:05 allenh1

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?

flabrosse avatar May 16 '19 07:05 flabrosse

has this sort of feature been considered for the package.xml format?

See https://answers.ros.org/question/202852/packagexml-provides/

dirk-thomas avatar May 16 '19 21:05 dirk-thomas

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.

tfoote avatar May 20 '19 23:05 tfoote