Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ARM support for Gazebo Images #173

Closed
odidev opened this issue Jul 16, 2018 · 22 comments
Closed

Add ARM support for Gazebo Images #173

odidev opened this issue Jul 16, 2018 · 22 comments

Comments

@odidev
Copy link

odidev commented Jul 16, 2018

Gazebo9 is supported by Debian:Stretch for both AMD64 & ARM64 architecture.
I have done changes at my end in manifest.yaml to support Gazebo for ARM64 architecture.

I would be happy to raise a PR if it suits maintainers.

@odidev
Copy link
Author

odidev commented Jul 16, 2018

PR: #174

This gives changes done for arm64.
Currently, travis-CI check is failing, as it is queuing the PR after #172, which has updated contents of Dockerfile.

@ruffsl
Copy link
Member

ruffsl commented Jul 16, 2018

@odidev , as from a previous comment #171 (comment) , may I inquire your use case or applications that necessitating containerised gazebo on arm? I'm not against this, but I would first like to be informed of the use cases we would then attempt to support.

@odidev
Copy link
Author

odidev commented Jul 17, 2018

@ruffsl : Thanks for taking some time for this issue.

I can't advocate much about this. But yes for sure what I can say is that now paradigm is moving towards ARM architecture and with the market moving a lot towards 64-bit processors, it is high time that there is a good increase in demand for arm64 based applications and projects.
Now with Gazebo being a popular robotic simulator, it is a good time to extend it for ARM64 too.

In this way, the clients who are sceptical just because of the lack of support for this application on ARM64 will also gain the confidence to use this without any issue.

Moreover, what I notice is that Gazebo is already supported by Debian:Stretch, so we just need to add this support for Docker as well :)

@ruffsl
Copy link
Member

ruffsl commented Jul 22, 2018

I was looking at the package index for gazebo, and I'm not seeing any bionic released packages of gazebo9 for arm64v8 or arm32v7 architectures. I am seeing some xenial released packages with arm64v8 and arm32v7 for gazebo8, but no gazebo7. Is there perhaps a official reference of distros/releases/architectures gazebo is targeting support that we can use here?

ping @j-rivero or @nuclearsandwich

@ruffsl ruffsl changed the title Add ARM64 support Add ARM support for Gazebo Images Jul 22, 2018
@mikaelarguedas
Copy link
Contributor

mikaelarguedas commented Jul 22, 2018

Gazebo9 is upstream on ubuntu bionic.

The current release strategy for Gazebo is that minor releases are not built for arm (only i386 and amd64). If a project requires arm packages to be built, we build some, but it is not the default.

It could be done if there is a strong incentive / use case requiring arm packages but currently is not done as it adds a lot of build time on the farm.

Edit: If we want to provide Gazebo ARM images, I think that the best way ATM is to allow having different version numbers per architecture and to use the version available in the official ubuntu repos for the arm platforms (MAJOR.0.0). And to not provide ARM images for the distros that don't have that major upstream.

@odidev
Copy link
Author

odidev commented Jul 23, 2018

Thank you all for taking out some time to look for ARM64 support for Gazebo.
Just to add, Gazebo9 is supported by Debian-Stretch for ARM64v8.

Regards,

@mmarmm
Copy link

mmarmm commented Aug 23, 2018

@mikaelarguedas So could you then do something like others have for the major releases to support arm64v8 on those versions published? Gradle for example:

Tags: 4.9.0-jdk7-alpine, 4.9-jdk7-alpine, jdk7-alpine
Architectures: amd64, arm32v6, arm64v8, i386, ppc64le, s390x
Directory: jdk7-alpine

Tags: 4.9.0-jdk7-slim, 4.9-jdk7-slim, jdk7-slim
Architectures: amd64, arm32v5, arm32v7, i386
Directory: jdk7-slim

Thank you.

@mikaelarguedas
Copy link
Contributor

@mmarmm This looks like a different question as alpine is not targeted by any existing ROS or Gazebo distribution. Could you please open a separate issue clarifying what project you are interested in ? Thanks

@mmarmm
Copy link

mmarmm commented Aug 23, 2018

@mikaelarguedas "... If we want to provide Gazebo ARM images, I think that the best way ATM is to allow having different version numbers per architecture ...", that's what I was responding to, apologies I wasn't clear. I'm suggesting adding arm64v8 builds for only the major release, not for all since the minor releases pose a burden.

@mikaelarguedas
Copy link
Contributor

Thanks @mmarmm for clarifying!

The issue we are facing is that we currently use the same dockerfile for all architectures. So there is no easy way to "adding arm64v8 builds for only the major release, not for all" as we do want all (including minor) releases for amd64.

It looks like what you are suggesting is another set of Dockerfiles for specific architectures, is that correct? (similar to prototype in #115)

The alternative is to provide logic within the dockerfiles to install different packages depending on the arch and what's available in the repos for that arch (#112 (comment))

The various otpions are discussed in more detail on #112

@tianon
Copy link

tianon commented Aug 23, 2018

I'm really, really confused here. Why is gazebo8 on amd64 version 8.6.0-1~xenial but on arm64 it's 8.0.0-1~xenial? How does that work? What's the reasoning behind that decision? IMO that's really weird, and worth investigating and/or reconciling.

Regarding a separate Dockerfile per architecture, please don't unless you absolutely must (as in, there are architecture-specific binaries/tarballs/artifacts that get checked into Git and need to be COPY'd into the image) -- there's not really any reason I can see for these to be separate Dockerfiles, and I'd be happy to help work on logic like what I mocked up in #112 (comment) to get this working officially (even if we need separate major version tags for different architectures, which is still making my brain hurt).

@mikaelarguedas
Copy link
Contributor

Why is gazebo8 on amd64 version 8.6.0-1~xenial but on arm64 it's 8.0.0-1~xenial? How does that work? What's the reasoning behind that decision? IMO that's really weird, and worth investigating and/or reconciling.

It seems that the main reason behind it was that originally Gazebo was shipped only for amd64. An initial release was made on arm to support the platforms targeted by specific ROS distributions but new arm packages are built on an on-demand basis and not by default for minor releases.
We discussed internally the ability to provide debs for all architectures and we will, for future minor releases, provide debs for all distros/arches officially targeted, resolving the version inconsistency.

cc @j-rivero

@j-rivero
Copy link
Contributor

We discussed internally the ability to provide debs for all architectures and we will, for future minor releases, provide debs for all distros/arches officially targeted, resolving the version inconsistency.

cc @j-rivero

We are adding support to our internal release process to produce the whole family of arches for Ubuntu and Debian stretch. That should happen in the next weeks.

@lag-linaro
Copy link

We are adding support to our internal release process to produce the whole family of arches for Ubuntu and Debian stretch. That should happen in the next weeks.

@j-rivero the prospect of this is very exciting.

Could I bother you for an update on your progress please?

@j-rivero
Copy link
Contributor

Could I bother you for an update on your progress please?

Sure, no problem. The code is ready, should be reviewed and merged. From that point on, all the releases should try to build ARM and Debian Stretch.

@odidev
Copy link
Author

odidev commented Oct 16, 2018

That is an awesome update @j-rivero .
Really appreciate the work 😃 👍

@lag-linaro
Copy link

@j-rivero you sir, are a star. 👍

@odidev
Copy link
Author

odidev commented Oct 17, 2018

Hi @j-rivero

After the changes get merged, it will require a modification at:
https://github.com/docker-library/official-images/blob/master/library/gazebo as well to enable support for multiple architectures.

Can you raise a Pull Request for it as well, after merge confirmation?

Regards,

@lag-linaro
Copy link

Please see #203

@ruffsl
Copy link
Member

ruffsl commented Nov 16, 2018

Update: please now see #205

@lag-linaro
Copy link

Thanks @ruffsl. Reviewed.

@lag-linaro
Copy link

Wonderful. Thanks @ruffsl.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants