GNOME Bugzilla – Bug 796019
Feature Request: Create a binary distribution for Linux (i.e. AppImage)
Last modified: 2018-06-30 00:09:45 UTC
With existence of tools that allow packaging binaries in a self-contained distribution executable, it would be convenient to provide a binary distribution of GnuCash for Linux, to cover all distributions and allow all users access to the most recent available version of GnuCash. Many users only have (much) older versions available in their respective distributions. This leaves them with only the option of compiling the sources themselves, which involves download and installation of various development tools and libraries. All this seems unnecessary at a time when there are technologies like - build service, which can compile the latest sources and create an image file - binary distribution technologies like AppImage, Flatpak, Snap I'm opening the discussion on the topic here and will also post some related links.
As my first experience was with AppImage, I will first focus on that although it does not make much difference which technology is used. As per instructions at https://github.com/AppImage/AppImageKit/wiki/Creating-AppImages, a few options would be suitable for GnuCash: - Use the Open Build Service https://github.com/AppImage/AppImageKit/wiki/Using-Open-Build-Service This might allow automatic building and packaging of GnuCash. More reading and experimenting required. - Convert existing binary packages This option would work only for existing packages. I.e. GnuCash 3.0 is available as RPM for openSuse. Testing would be required after conversion. - Bundle your Travis CI builds as AppImages Is there a Travis CI build for GnuCash? This might also be a handy option for continuous integration, providing the binary packages as a side-effect. - Manually create an AppDir As the name implies.
As suggested by Adrien, there are Flatpak and Snap packages available, but it looks like both are still at 2.6.x https://flathub.org/apps/details/org.gnucash.GnuCash https://snapcraft.io/gnucash-jz It would, hence, be benificial to tie the generation of packages to (some) automatic build process, similar to the daily build for Windows.
Some comparison between available options: https://github.com/AppImage/AppImageKit/wiki/Similar-projects#comparison According to OBS (https://github.com/AppImage/AppImageKit/wiki/Using-Open-Build-Service), AppImage builds there also allow delta updates, which is generally considered an advantage for Flatpak and Snap, in comparison. "OBS automatically embeds update information into AppImages to enable binary delta updates using AppImageUpdate. This means that if in a 100 MB AppImage only 1 MB changed between versions, then the user has to download only 1 MB rather than 100 MB"
Apparently there is also a beta version of app updater: https://github.com/AppImage/AppImageUpdate Which would make things even more convenient for the end-user.
Additionally, OBS seems to support automatic build triggering after changes in a GitHub repository. This would allow full automation. https://github.com/AppImage/AppImageKit/wiki/Using-Open-Build-Service#continuous-builds-with-github-and-obs I'll try to add GnuCash to my list of projects on OBS and see if I can trigger a build and packaging. Note that it is also possible to add the appimage.yml file to the GnuCash sources, allowing the build service to use that as a packaging spec.
ok, I got something running, just fyi: https://build.opensuse.org/package/live_build_log/home:cicko/cicko_gnucash/openSUSE_Tumbleweed/x86_64 If anyone is interested, I can add you to this experimental project. It's a copy of Gnome Apps:gnucash, using the sources for GnuCash 3.1 from GitHub (direct link).
Woohoo, somehow I managed to create the new build using OBS: https://build.opensuse.org/package/binaries/home:cicko/cicko_gnucash/openSUSE_Tumbleweed Now I have the v3.1 RPM built using the sources in gnucash-3.1-1.tar.bz2, which are conveniently linked directly from the project. The next step is to generate AppImage from this rpm or link directly to GnuCash repository. The good thing is that my main problem is resolved since I now have the latest version and it runs fine (it seems).
And here is a correct copy (the package name must remain the same) of the GNOME Apps project: https://build.opensuse.org/package/show/home:cicko:branches:GNOME:Apps/gnucash I've now submitted the build back to the original branch so hopefully it gets included on one of the official repositories.
Alen, You've done a lot of work and gotten yourself a working 3.1, which is great. But what exactly are you looking for us to do with this bug?
Hi, Well the original idea was to generate a binary package / distribution that could be easily downloaded and run by all Linux users. Or, more precisely, have an automatic flow from the GitHub release to some build service and a generation of this package (i.e. AppImage or any other), so that any new stable release gets published automatically and becomes available to everyone without waiting for trickling down through the repositories. My goal was to get an official 3.1 but in the process I've found out that it is fairly easy to establish the above. Now that there is a build in OBS, there is just a little bit of work left in configuring the .yml file as suggested in https://github.com/AppImage/AppImageKit/wiki/Using-Open-Build-Service and getting the final AppImage. I am (still) hoping someone else in the community has more experience with any of the steps involved and can contribute towards this goal. On the other hand, I don't mind learning more and setting these steps up when I have the time. The progress was fairly quick to get the build going. I hope the AppImage part won't be that complex, either.
GnuCash bug tracking has moved to a new Bugzilla host. The new URL for this bug is https://bugs.gnucash.org/show_bug.cgi?id=796019. Please continue processing the bug there and please update any external references or bookmarks.