softbankrobotics-research / sbre_robot_ros_gentoo_prefix

How to Install ros on Pepper's head or Nao's head with gentoo prefix.
BSD 2-Clause "Simplified" License
6 stars 3 forks source link

Unite efforts? #4

Closed awesomebytes closed 4 years ago

awesomebytes commented 4 years ago

Hello. I've just discovered this repo. Thanks for linking to my projects and mentioning me as the author or the CI for Gentoo Prefix and for ros-overlay on Gentoo Prefix.

I see a lot of work duplicated in this repo and it makes me sad. Maintaining the pipeline of Gentoo Prefix > ROS base > ROS desktop (in 32b and 64b, and for Kinetic and Melodic, that's a lot of combinations!) takes continuous effort. It's usually not much work, but things change or break upstream all the time (such is Gentoo, a rolling release).

I would propose to create a version of this repo that starts from my work and then adds your extras as an additional layer. This would avoid that we both need to fix the same errors, or that you need to re-implemented the fixes I implement.

By what I see in your Dockerfile (just checked the Kinetic one). You are mainly building on top of ros_base.

You could just start your image doing docker pull from: awesomebytes/roogp_ros_kinetic_ros_base awesomebytes/roogp_ros_melodic_ros_base

Or follow from from one of the binary releases, if you prefer, as I do in https://github.com/awesomebytes/pepper_os (mainly to avoid the 127 max layers of Docker).

I would find great if you would provide ready-to-use, as I do, ROS Kinetic/Melodic on Nao & Pepper. It's a matter of setting up a job to package it. You can copy my approach of uploading it to GitHub releases of the repo for free storage on nightly builds. Or, if you have some server to use as a file host, just upload it without splitting (I just need to do it to keep it under 2GB release files). I say this because of experience. During the development months of RoboCup plenty of times I didn't have time to fix the upstream problems, and having pre-compiled versions being built every night allowed for the development to continue. Eventually I'd go back, report bugs upstream, fix stuff... and we are back on the latest SW, yay.

This way, you can focus on maintaining less things (probably just naoqi-* stuff). And when you have time to dedicate to fixes of the general pipeline, we all benefit from it.

There may be discrepancies on how to structure the Dockerfiles, the patches... in general how to work on all of this. I'm open to conversation. Up until now I've been working mostly alone in it, so I just did what seemed quicker and alright.

awesomebytes commented 4 years ago

I thought maybe the best would be to lead by example and I made an implementation on ros_kinetic_32 in a fork:

Edit: maybe easier to visualize in PR form: https://github.com/softbankrobotics-research/sbre_robot_ros_gentoo_prefix/pull/5

In order to adopt this for yourselves you'd just need to change the DockerHub account to yours and register in Azure Pipelines and integrate your repo in it (adding your secrets of DockerHub password and GitHub Token) as I've written in comments in the PR.

Ping me if you need any help!

mcaniot commented 4 years ago

Agreed ! I will take a look on the PR and certainly based on your ros_base to get rid of the Gentoo dependency.

awesomebytes commented 4 years ago

In between writing my PhD thesis breaks I kept running builds until they worked.

Find the following PRs:

As a proof of working, you can find at the releases tab of my fork ready-to-use built images: https://github.com/awesomebytes/sbre_robot_ros_gentoo_prefix/releases They take 1h30-2h~ to build: builds page

Important bits we may want to discuss about:

Future work?

allenh1 commented 4 years ago

I think the best that could be done is that you make a PR to ros-overlay so these are not needed. I'm sure @allenh1 would be very happy about.

:+1:

mcaniot commented 4 years ago

You're right about the "ready to use" versions of the work, we'll provide that with upcoming releases. To get rid of the constant refactoring, we decided to freeze the gentoo prefix pipeline, and build on top of your pre built images:

We might update the tag version at some point, but for now freezing it will allow us to focus on the upper ROS layers. Because of our requirements, we also want to build on top of 'ros_base' instead of desktop, so we'll keep it that way.

awesomebytes commented 4 years ago

Fair enough.

Just be warned that by fixing the tags you may run into issues in some time as dependencies get outdated. I've run into this issue in the past. And it is happening more often with python dependencies in upstream gentoo dropping python 2 support.

I would recommend a hybrid approach, when you setup CI for this, where you have a job with fixed tag version and a :latest tag version. Doing so you could switch the fixed tag to whatever is the latest that hopefully still builds easily.

I'd be curious to know what your requirements are, if it can be shared.

P.S.: here I am pretty much off-topic-ing, but, are you planning to support Python 3 on the Python SDK (naoqi)?

On Mon, Mar 30, 2020, 23:15 Maxime Caniot notifications@github.com wrote:

You're right about the "ready to use" versions of the work, we'll provide that with upcoming releases. To get rid of the constant refactoring, we decided to freeze the gentoo prefix pipeline, and build on top of your pre built images:

-

awesomebytes/roogp_ros_kinetic_ros_base:1464

awesomebytes/roogp_32b_ros_kinetic_ros_base:1465

awesomebytes/roogp_ros_melodic_ros_base:1466

awesomebytes/roogp_32b_ros_melodic_ros_base:1467

We might update the tag version at some point, but for now freezing it will allow us to focus on the upper ROS layers. Because of our requirements, we also want to build on top of 'ros_base' instead of desktop, so we'll keep it that way.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/softbankrobotics-research/sbre_robot_ros_gentoo_prefix/issues/4#issuecomment-605963524, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANEK5HQ53KTA2WQUMYURVLRKCEMVANCNFSM4LEVMPSQ .