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

Integrate AppImage for Linux releases #2913

Closed
Tracked by #29
NaterGator opened this issue Feb 29, 2016 · 24 comments · Fixed by #3136
Closed
Tracked by #29

Integrate AppImage for Linux releases #2913

NaterGator opened this issue Feb 29, 2016 · 24 comments · Fixed by #3136
Assignees
Milestone

Comments

@NaterGator
Copy link
Contributor

Linus' subsurface project uses AppImage and it seems to have his seal of approval. This should help greatly simplify getting users up and running in Linux without worrying about dependencies.

http://appimage.org

@dagar dagar added this to the Release v3.0 milestone Feb 29, 2016
@dagar
Copy link
Member

dagar commented Feb 29, 2016

I can't believe I haven't heard of this.

@probonopd
Copy link
Contributor

Have a look at the AppImage build scripts ("recipes") of other Qt based applications:

By building on a CentOS 6 build host, the resulting binaries are known to run on most modern desktop Linux distributions. Possibly it's easiest to clone the probonopd/AppImages repository and start from there.

I'd be happy to help if you run into any issues.

@probonopd
Copy link
Contributor

How do I build this on a CentOS 6 build host?

@dagar
Copy link
Member

dagar commented Apr 2, 2016

@probonopd are you asking how to build qgroundcontrol on centos 6, or how to get AppImage working?

@probonopd
Copy link
Contributor

I am asking how to build qgroundcontrol on CentOS 6. This would make the AppImage more portable since the binaries currently provided by the project require at least GLIBC 2.14, which older distributions might not have. On the other hand, 2.14 is not that recent so maybe we can just live with it.

@probonopd
Copy link
Contributor

Here is the Recipe that can be used to generate the AppImage for 64-bit Linux.
https://github.com/probonopd/AppImages/blob/master/recipes/qgroundcontrol/Recipe

@probonopd
Copy link
Contributor

And here is the resulting AppImage:
https://bintray.com/probono/AppImages/QGroundControl/view#files

@dagar
Copy link
Member

dagar commented Apr 2, 2016

Nice! It works on my Ubuntu 14.04 machine.

The problem is we'd need to find a continuous integration service that offers CentOS 6. We could build on Ubuntu 12.04, but we had to upgrade because of udev issues.

If you could document how to create the AppImage I'll add it to the builds with s3 and github deployment ASAP.

@probonopd
Copy link
Contributor

@dagar the recipe above shows how to do it.

For other packages I am using CentOS 6.7 Docker images that I run on Travis-CI. This way, I can build on CentOS while still using Travis-CI. But maybe it is OK as it is, as long as you get no complaints from users.

@dagar
Copy link
Member

dagar commented Apr 2, 2016

Ok perfect. I see the script grabs an AppImageAssistant binary. I was thinking we might need to build or install it on travis-ci. Do you mind if we pull your script into the deploy directory and modify it work with the output of a freshly built release? We also need to fix the icon.

@probonopd
Copy link
Contributor

Feel free to go ahead. If you like you can of course build AppImageKit on travis, but you don't have to.

dagar added a commit to dagar/qgroundcontrol that referenced this issue Apr 4, 2016
dagar added a commit to dagar/qgroundcontrol that referenced this issue Apr 5, 2016
dagar added a commit to dagar/qgroundcontrol that referenced this issue Apr 5, 2016
dagar added a commit that referenced this issue Apr 5, 2016
@dagar
Copy link
Member

dagar commented Apr 5, 2016

It should be tested, but the is AppImage is now created in the builds and uploaded to s3. http://qgroundcontrol.s3.amazonaws.com/master/qgroundcontrol.AppImage?dl=0
Tagged releases will be auto added to GitHub releases

Thanks again @probonopd

@probonopd
Copy link
Contributor

On Ubuntu 16.04:

me@host:~$ '/home/me/Downloads/qgroundcontrol.AppImage' 
/tmp/.mount_W7Kwcs/qgroundcontrol: error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory

Please see https://github.com/probonopd/AppImages/blob/master/recipes/qgroundcontrol/Recipe#L9-L24 for how to solve this.

Also, the filename should have the version. See https://github.com/probonopd/AppImages/blob/master/recipes/qgroundcontrol/Recipe#L53-L62 for how to automate this.

@dagar
Copy link
Member

dagar commented Apr 5, 2016

I'm pulling the debs just like your original script. I'm not sure what's wrong with it at the moment.
https://github.com/mavlink/qgroundcontrol/blob/master/deploy/create_linux_appimage.sh#L17

For development builds we're trying to only store and link to the latest good binary for each branch. Is there some reason it's important to have the version in the name for AppImage? We could do it for proper releases.

@probonopd
Copy link
Contributor

Sorry, I forgot to mention that the AppRun script also needs to set LD_LIBRARY_PATH accordingly so that libraries are also picked up from usr/lib/x86_64-linux-gnu, e.g.,

export LD_LIBRARY_PATH="${HERE}/usr/lib/x86_64-linux-gnu":"${HERE}/Qt/libs":$LD_LIBRARY_PATH

As for the names, I just find it convenient to know the version something has. There is no hard technical requirement to include the name (or architecture). But if it can be automated, why not do it?

@dagar
Copy link
Member

dagar commented Apr 5, 2016

@probonopd can you try http://qgroundcontrol.s3.amazonaws.com/master/qgroundcontrol.AppImage?dl=0 again?

Do you know if it's possible to have an icon in Ubuntu unity for an AppImage?

screenshot from 2016-04-05 14 09 15

@probonopd
Copy link
Contributor

You added usr/lib to $LD_LIBRARY_PATH but the library is in usr/lib/x86_64-linux-gnu so it does not find SDL yet... of course it wouldn't hurt to add both paths.

Regarding the icon I am not entirely sure how this works for Unity, it does show icons for most AppImages. Can you attach an icon to your main window and would that change it?

@dagar
Copy link
Member

dagar commented Apr 5, 2016

Ah, I just copied your recipe. Thanks
Trying again...

@probonopd
Copy link
Contributor

Yes, it was a bug in mine... updating the recipe

@dagar
Copy link
Member

dagar commented Apr 5, 2016

Any ideas for the launcher icon?

@probonopd
Copy link
Contributor

Regarding the icon I am not entirely sure how this works for Unity, it does show icons for most AppImages. Can you attach an icon to your main window in Qt and would that change it?

@dagar
Copy link
Member

dagar commented Apr 5, 2016

I think it was just missing the extension in the desktop entry.
1cde874

@probonopd
Copy link
Contributor

Does this result in the icon being displayed?

@dagar
Copy link
Member

dagar commented Apr 5, 2016

Travis-ci builds are especially slow during the day. We'll know shortly.

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

Successfully merging a pull request may close this issue.

3 participants