merkaartor icon indicating copy to clipboard operation
merkaartor copied to clipboard

Generate and upload AppImage

Open probonopd opened this issue 5 years ago • 11 comments

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

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

probonopd avatar Dec 10 '18 21:12 probonopd

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.

Krakonos avatar Jan 25 '19 21:01 Krakonos

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

Mirror a local copy?

probonopd avatar Jan 25 '19 22:01 probonopd

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.

Krakonos avatar Jan 25 '19 22:01 Krakonos

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

probonopd avatar Jan 25 '19 22:01 probonopd

Any progress?

ghost avatar Jun 01 '21 19:06 ghost

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

Krakonos avatar Jun 04 '21 17:06 Krakonos

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.

ctrlcctrlv avatar Apr 05 '22 22:04 ctrlcctrlv

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.

probonopd avatar Apr 08 '22 19:04 probonopd

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

Krakonos avatar Apr 08 '22 19:04 Krakonos

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.

probonopd avatar Apr 08 '22 19:04 probonopd

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 avatar Feb 27 '23 21:02 Krakonos