After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 796019 - Feature Request: Create a binary distribution for Linux (i.e. AppImage)
Feature Request: Create a binary distribution for Linux (i.e. AppImage)
Status: RESOLVED OBSOLETE
Product: GnuCash
Classification: Other
Component: Build system
git-maint
Other Linux
: Normal enhancement
: future
Assigned To: gnucash-core-maint
gnucash-core-maint
Depends on:
Blocks:
 
 
Reported: 2018-05-11 07:54 UTC by Alen Siljak
Modified: 2018-06-30 00:09 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Alen Siljak 2018-05-11 07:54:22 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.
Comment 1 Alen Siljak 2018-05-11 08:00:22 UTC
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.
Comment 2 Alen Siljak 2018-05-11 08:09:28 UTC
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.
Comment 3 Alen Siljak 2018-05-11 09:31:24 UTC
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"
Comment 4 Alen Siljak 2018-05-11 09:33:32 UTC
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.
Comment 5 Alen Siljak 2018-05-11 09:40:26 UTC
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.
Comment 6 Alen Siljak 2018-05-11 10:07:17 UTC
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).
Comment 7 Alen Siljak 2018-05-11 21:05:05 UTC
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).
Comment 8 Alen Siljak 2018-05-11 21:27:43 UTC
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.
Comment 9 John Ralls 2018-05-11 21:39:53 UTC
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?
Comment 10 Alen Siljak 2018-05-12 13:36:22 UTC
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.
Comment 11 John Ralls 2018-06-30 00:09:45 UTC
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.