Now that KMyMoney 5.0.2 is released, I prepared to upgrade my development system from openSuSE 42.3 to Leap 15.0. This involves creating a drive image comparing the image with the original disk and then running the upgrade procedure. Triggered by a post on planet KDE by fellow KDE developer dfaure I expected some trouble ahead and took extra care to have a good backup.
In the past, I had run the update directly from the iso image which I also did this time just to learn that it fails whatever I tried to do. Apparently, the updater became confused with the disk partition layout I am using. This fortunately all happened just before the disk was touched and I got around to restore my backup image every time.
It’s always helpful to have a second system at hand to do some searching on the internet. Using this box, I started to use the manual zypper method. A first warning was issued, that using the latest Nouveau/Mesa3D combination is not stable and is not recommended to use with Qt applications and the KDE desktop. Well, that’s exactly what I use and want, so I decided to answer the obvious confirmation with no which resulted in the abort of the whole update process and left me at the CLI prompt.
Now what? I don’t want to risk the system but have no choice at that point. So I decided to go for it anyway and see what happens. If anything really goes wrong I can always restore my image and start afresh. Options then could be to remove the Mesa stuff on 42.3 or replace Nouveau with the proprietary NVidia drivers. So on the second trial I answered ‘yes’ and kept my fingers crossed.
After downloading about 3 GB off the net it started to run the installation. Messages were flying by and I noticed some of them were warnings, some of them seemed to be errors (as displayed in another color) and I expected some major problems ahead. In the end, around 3.600 packages were installed and to my surprise, the system came up after the usual reboot without problems. Even my ciphered partition was no problem. No problems on the graphics UI front so I logged into my account. Plasma came up and was running. On to some tests.
WiFi to the home network is working out of the box. This used to be a problem during the last upgrade. Started a VirtualBox VM: comes up, no problems so far. Start the VPN to the home network: no problem. All routes are in place, DNS resolution is working. Cool. Start the VPN to the office: fails. Failure is caused by an old cipher used in the certificate. Guess I have to update that one in the near future then. OK, on to some more endavours.
Start the KMyMoney version which I just built before the upgrade. Does not work. Asks for some old library versions which got replaced with newer ones during the upgrade. ‘No problem, just recompile and you’re done’, I thought. Not really, I needed to rebuild Alkimia as well, as it was causing the trouble. Once done, I was able to build and install KMyMoney: it worked. My personal finance data file (GPG encrypted) opened and all data showed up. Cool, let’s check the online banking feature and ask the banks for new transactions. The next problem: it does not work. All of it is not present in the menus. Ah, probably also needs to be rebuild.
So back to AqBanking (links to a German website) and Gwenhywfar. Once everything was rebuild and installed, I build KMyMoney again because its KBanking plugin was not build due to the absence of AqBanking in the first run. Once compiled I installed it again, et voilà: AqBanking shows up in the settings. Now on to the actual account update but what is that: a crash after I entered the PIN to my account. This never happened before and should certainly not be the case. Starting a debug session and looking at the backtrace after the crash showed the following:
0 __gmpn_divexact_1_fat() at /usr/lib64/libmpir.so.23
1 _nettle_ecc_mod_add() at /usr/lib64/libhogweed.so.4
2 _nettle_ecc_dup_jj() at /usr/lib64/libhogweed.so.4
3 _nettle_ecc_mul_g() at /usr/lib64/libhogweed.so.4
4 nettle_ecdsa_generate_keypair() at /usr/lib64/libhogweed.so.4
5 ??() at /usr/lib64/libgnutls.so.30
6 ??() at /usr/lib64/libgnutls.so.30
7 ??() at /usr/lib64/libgnutls.so.30
8 ??() at /usr/lib64/libgnutls.so.30
9 gnutls_handshake() at /usr/lib64/libgnutls.so.30
10 GWEN_SyncIo_Tls_Connect() at /home/thb/devel/gwenhywfar/src/sio/syncio_tls.c:1144
A bit strange that it fails in the big number math library libmpir where it never failed before. I know what libgnutls is good for, but what is libhogweed? I have never heard of it before.
rpm -qi libhogweed4
Nettle is a cryptographic library that is designed to fit easily in more or
less any context: In crypto toolkits for object-oriented languages (C++,
Python, Pike, …), in applications like LSH or GNUPG, or even in kernel space.
The libhogweed library contains public key algorithms to use with libnettle.
Distribution: openSUSE Leap 15.0
OK, crypto public key algorithms which makes sense. So it uses libmpir. Let’s check if it uses the right one or by accident some leftover version from the previous system install, because libmpir was the one that caused the trouble with Alkimia before. Using ldd one can see
thb@thb-nb:~/devel/kmymoney/build (5.0)$ ldd /usr/lib64/libhogweed.so.4
libnettle.so.6 => /usr/lib64/libnettle.so.6 (0x00007f2454466000)
libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f24541d0000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2453e16000)
No libmpir but there’s libgmp. libmpir should actually be a plug-in replacement to libgmp but maybe that is causing the crash. On openSuSE 42.3 libmpir and libgmp came with the same ABI but that might have changed here.
Next try was then to uninstall libmpir using the package management as it is optional and actually only required for KMyMoney to be build on MS-Windows. Removing libgmp wasn’t an option since RPM wants it for libnettle and apparently libmpir is not working too well with it. Once removed, I rebuild the whole stack of Alkimia, AqBanking, Gwenhywfar and KMyMoney and now online banking is back in full swing.
Oh, and so far no problems on the Mesa/Nouveau graphics side of things. I even fired up FlightGear and it worked.