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

Generate and upload AppImage #173

Closed
wants to merge 1 commit into from

Conversation

probonopd
Copy link

This PR, when merged, will compile this application on Travis CI upon each git push, and upload an AppImage to your GitHub Releases page.

Providing an AppImage would have, among others, these advantages:

  • Applications packaged as an AppImage can run on many distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
  • One app = one file = super simple for users: just download one AppImage file, make it executable, and run
  • No unpacking or installation necessary
  • No root needed
  • No system libraries changed
  • Works out of the box, no installation of runtimes needed
  • Optional desktop integration with appimaged
  • Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
  • Can optionally GPG2-sign your AppImages (inside the file)
  • Works on Live ISOs
  • Can use the same AppImages when dual-booting multiple distributions
  • Can be listed in the AppImageHub central directory of available AppImages
  • Can double as a self-extracting compressed archive with the --appimage-extract parameter
  • No repositories needed. Suitable/optimized for air-gapped (offline) machines

Here is an overview of projects that are already distributing upstream-provided, official AppImages.

PLEASE NOTE: For this to work, you need to enable Travis CI for your repository as described here prior to merging this, if you haven't already done so. Also, You need to set up GITHUB_TOKEN in Travis CI for this to work; please see https://github.com/probonopd/uploadtool.

If you have questions, AppImage developers are on #AppImage on irc.freenode.net.

@probonopd
Copy link
Author

An AppImage is available for testing at https://github.com/probonopd/merkaartor/releases.

@Krakonos
Copy link
Member

Hi!

First of all, thanks for your contribution. I do like the idea, however I'm reluctant to wget and run some files, automatically.

I could probably fix that for the upload script, but I'm not sure how to approach the linuxdeployqt binary.

@probonopd
Copy link
Author

I could probably fix that for the upload script, but I'm not sure how to approach the linuxdeployqt binary

Mirror a local copy?

@Krakonos
Copy link
Member

It crossed my mind, but not in the repository. Is there a stable version of the linuxdeployqt that I could fix and compare a checksum in-repo? That seems to be a good compromise.

@probonopd
Copy link
Author

It's being built as we speak. Should show up at https://github.com/probonopd/linuxdeployqt/releases/tag/6 real soon.

@ghost
Copy link

ghost commented Jun 1, 2021

Any progress?

@Krakonos
Copy link
Member

Krakonos commented Jun 4, 2021

I'm not actively working on this issue/PR. If somebody wants to make it forward, I suggest the following changes:

  1. Start using CMake to drive the build.
  2. Install the tooling via a package manager, or verify by gpg signature/sha256 checksum (or similar).

Honestly, I'm not really stoked about the tooling for appimage and other tools...

@ctrlcctrlv
Copy link

I'm not really stoked about the fact you don't distribute an AppImage, which while perhaps not standard when @probonopd opened this, now is. Honestly I'd say since 2018 the responsibility has shifted from him to you, and not having an AppImage puts you in the difficult-to-install minority.

Just an opinion.

@probonopd
Copy link
Author

Fun fact:
The AppImage I built back at that time still runs, today. But look closely where it runs:

image

Yes, that's helloSystem FreeBSD.

@Krakonos
Copy link
Member

Krakonos commented Apr 8, 2022

@ctrlcctrlv Neither am I. However, the tooling in this PR insists on running on ubuntu bionic. However, ubuntu bionic does not ship reasonably new packages (and I'm not willing to manage the dependencies manually). I did give other tools a try, including flatpak, but wasn't able to put in enough time to make it work. Maybe something changed, as I didn't look into it recently, so I may give it another go. In the meantime, you can try out the snap package mentioned in #230 .

@probonopd
Copy link
Author

probonopd commented Apr 8, 2022

When developing software, it is general best practice to develop for the oldest rather than for the newest systems that your users might still use.

This being said, tools like appimage-builder and go-appimage appimagetool -s deploy are nowadays capable of bundling all libraries so that even binaries compiled on newer developers' systems can run on older users' systems.

@Krakonos
Copy link
Member

Hi! After a bunch of experimenting, I ended up using appimage-builder to implement this functionality. It doesn't require ancient system and if it really bundles everything necessary, it should be good.

The implementation is in PR #280 , sample AppImage is available if you want to give it a try and provide feedback.

@Krakonos Krakonos closed this Feb 27, 2023
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

Successfully merging this pull request may close these issues.

3 participants