Bug 380075

Summary: Missing online build system for windows releases
Product: [Applications] kmymoney Reporter: Ralf Habacker <ralf.habacker>
Component: generalAssignee: KMyMoney Devel Mailing List <kmymoney-devel>
Status: RESOLVED FIXED    
Severity: normal CC: flywire0
Priority: NOR    
Version: 4.8.0   
Target Milestone: ---   
Platform: Other   
OS: Microsoft Windows   
Latest Commit: Version Fixed In: 4.8.1,5.0.5
Sentry Crash Report:
Bug Depends on: 380119    
Bug Blocks: 381786, 383044    

Description Ralf Habacker 2017-05-22 07:42:55 UTC
Building linux releases of kmymoney are normally proceeded by distribution special build services like Opensuse build system for suse distributions ( (https://build.opensuse.org/) which support remote and local building of packages.

Taking a look at the solved bugs for 4.8.1 https://bugs.kde.org/buglist.cgi?bug_status=RESOLVED&f1=cf_versionfixedin&f2=cf_versionfixedin&j_top=OR&list_id=1440431&o1=substring&o2=substring&product=kmymoney4&query_format=advanced&resolution=FIXED&v1=4.8.1 it would be nice to have a similar build system for windows to be able to release additional stable KMymoney releases.
Comment 1 Ralf Habacker 2017-05-23 11:44:17 UTC
Building windows releases of kmymoney has been added to the opensuse build service currently located as a personal obs project at https://build.opensuse.org/project/show/home:rhabacker:branches:windows:mingw:win32:kmymoney.

The project currently creates windows setup installers and portable binary releases including language support (see https://build.opensuse.org/package/show/home:rhabacker:branches:windows:mingw:win32:kmymoney/mingw32-kmymoney-installer). For details how this works see [1]

Because obs mainly supports building rpms the installer and portable packages are contained in a rpm file. 

For making releases a script (maintainer/release-windows-windows) has been added to kmymoney git repo. A release contains the portable 7z file and setup installer, the source tarball as 7z file and a 7z file containing debug symbols. The script prepares releasing to sourceforge (files need to be uploaded to sf manual) or KDE download mirror (it uploads binaries to upload.kde.org and opens a ticket for file releasing).

Binary packages could be fetched directly by downloading the files starting with 'mingw32-kmymoney-installer*' and 'mingw32-kmymoney-portable*' from http://download.opensuse.org/repositories/home:/rhabacker:/branches:/windows:/mingw:/win32:/kmymoney/openSUSE_Leap_42.2/noarch/ or 
http://download.opensuse.org/repositories/home:/rhabacker:/branches:/windows:/mingw:/win32:/kmymoney/openSUSE_Leap_42.1/noarch/ and extracted with 7zip (http://www.7-zip.org/).

Technical details
-----------------
[1] The kmymoney package are directly build from the kde git repo (see https://build.opensuse.org/package/view_file/home:rhabacker:branches:windows:mingw:win32:kmymoney/mingw32-kmymoney/_service?expand=1). Updating this file with a git tag or commit id or branch restarts a new rebuild. This creates a new source tarball in the package (for example _service:recompress:tar_scm:kmymoney-4.8.1.d29f4a2.tar.xz) which is used for building. The version mentioned in this filename then needs to be inserted as version into https://build.opensuse.org/package/view_file/home:rhabacker:branches:windows:mingw:win32:kmymoney/mingw32-kmymoney-installer/mingw32-kmymoney-installer.spec?expand=1 to match the installers version (I did not found a way yet to automate this). After the kmymoney package has been build, the mingw32-kmymoney-installer package installs mingw32-kmymoney with all required dependencies from which the the installers are created with the help of Cmake, nsis and 7z.

Notes:
- The currently available release looks already very good except the kBanking plugin, which crashes on several locations inside gwenhywfar and aqbanking and may be excluded from the current release.
- I'm not sure which additional packages are also required to be released along with kmymoney - any hints welcome
Comment 3 Ralf Habacker 2017-06-27 20:12:49 UTC
(In reply to Ralf Habacker from comment #1)
> - The currently available release looks already very good except the
> kBanking plugin, which crashes on several locations inside gwenhywfar and
> aqbanking and may be excluded from the current release.

This has been fixed with bug 380119.
Comment 4 Ralf Habacker 2017-06-30 08:59:45 UTC
Win32 snapshots are available at 
http://download.opensuse.org/repositories/home:/rhabacker:/branches:/windows:/mingw:/win32:/kmymoney/openSUSE_Leap_42.2/noarch/
or 
http://download.opensuse.org/repositories/home:/rhabacker:/branches:/windows:/mingw:/win32:/kmymoney/openSUSE_Leap_42.1/noarch/

Look for file starting with 'mingw32-kmymoney-installer*' and 'mingw32-kmymoney-portable*'.

You need 7zip on windows (http://www.7-zip.de/) or ark in Linux to get the installer or portable package inside these files.
Comment 5 flywire 2017-06-30 10:50:19 UTC
W32 Installer on Win7. Had to skip a daemon error on initial install. Error did not occur again after uninstall and reinstall.
Comment 6 Ralf Habacker 2017-07-25 08:39:36 UTC
(In reply to flywire from comment #5)
> W32 Installer on Win7. Had to skip a daemon error on initial install. Error
> did not occur again after uninstall and reinstall.

Please provide the displayed daemon error
Comment 7 flywire 2017-07-25 10:16:31 UTC
(In reply to Ralf Habacker from comment #6)
> Please provide the displayed daemon error

Sorry, I cleared it too quickly and it didn't occur when I uninstalled and reinstalled.
Comment 8 Ralf Habacker 2017-08-11 09:19:34 UTC
(In reply to Ralf Habacker from comment #1)
> The version mentioned in this filename then needs to be inserted
> as version into 
> https://build.opensuse.org/package/view_file/home:rhabacker:branches:windows:
> mingw:win32:kmymoney/mingw32-kmymoney-installer/mingw32-kmymoney-installer.
> spec?expand=1 to match the installers version (I did not found a way yet to
> automate this). 

I finally fixed this issue by merging in the mingwxx-kmymoney-installer package into mingwxx-kmymoney based on a hint from https://saschpe.wordpress.com/2013/01/10/obs-101-how-to-threat-packages-with-multiple-spec-files/

Now the installer and portable packages are rebuild by default every time the source of the mingwxx-kmymoney package is updated.
Comment 9 Ralf Habacker 2017-09-28 22:35:04 UTC
For the record: 

After tagging the 4.8.1 release final packages has been build and the related obs packages has been merged into the official obs mingw32|64 project at https://build.opensuse.org/project/show/windows:mingw:win32 and  https://build.opensuse.org/project/show/windows:mingw:win64 with the help of Fridrich Strba from SUSE.

The package locations mentioned in comment 2 and comment 4 will be used to provide further snapshots with additional bug fixes.