nixpkgs/pkgs/applications/office/kmymoney/default.nix
aszlig 93042b7376
kmymoney: init at 5.0.1
I tried to use -DENABLE_SQLCIPHER and also passed the right directories
to the Qt 5 source of the QSQLiteDriver but CMake then failed to run
qt4_automoc, by which I'd imply that SQLCipher is not maintained
anymore (after all KMyMoney using qgpgme as well, which doesn't require
sources).

Another odd thing is that CMake reports that the weboob plugin is
disabled, but after inspecting it turns out that the reporting is just
wrong. This is already fixed upstream but not yet released in
KDE/kmymoney@8b086cf921.

In addition of running the upstream test suite I have manually tested a
few things in a VM by using the following Nix expression:

  (import <nixpkgs/nixos> {
    configuration = { pkgs, ... }: {
      environment.systemPackages = with pkgs; [
        kmymoney aqbanking gwenhywfar libchipcard python2Packages.weboob
        kgpg
      ];
      users.users.test.isNormalUser = true;
      virtualisation.diskSize = 4096;
      virtualisation.memorySize = 2048;
      services.xserver = {
        enable = true;
        inherit ((import <nixpkgs/nixos> {}).config.services.xserver) layout;
        displayManager.sddm.enable = true;
        displayManager.sddm.autoLogin.enable = true;
        displayManager.sddm.autoLogin.user = "test";
        desktopManager.default = "plasma5";
        desktopManager.plasma5.enable = true;
      };
    };
  }).vm

The things I have tested in particular are:

  * Basic startup
  * Completing the wizard
  * Add some test transactions
  * GPG encryption
  * Generation of charts and reports
  * Rough check whether OFX integration lists supported financial
    institutions.
  * Small check of AqBanking implementation, whether accounts and users
    can be configured, but didn't test actual connectivity with a
    financial institution.
  * Check of Weboob integration with a test PayPal backend, however also
    just with a dummy account and without actually connecting to PayPal.

One of the upstream tests "reports-chart-test" seems to fail even though
generating charts and reports are working when testing manually. It also
seems that this is the case on other distributions, for example Gentoo
has disabled that test as well:

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5169cec68fa6fd67841

Note that I didn't add myself as a maintainer because I'm not personally
using KMyMoney but just packaged it for someone else. I hope this is
useful for other people, so that maybe someday[TM] there will be a
proper maintainer.

Signed-off-by: aszlig <aszlig@nix.build>
Cc: @ttuegel
2018-04-28 12:41:43 +02:00

71 lines
2.3 KiB
Nix

{ stdenv, lib, fetchurl, doxygen, extra-cmake-modules, graphviz, kdoctools
, akonadi, alkimia, aqbanking, gmp, gwenhywfar, kactivities, karchive
, kcmutils, kcontacts, kdewebkit, kdiagram, kholidays, kidentitymanagement
, kitemmodels, libical, libofx, qgpgme
# Needed for running tests:
, qtbase, xvfb_run
# For weboob, which only supports Python 2.x:
, python2Packages
}:
stdenv.mkDerivation rec {
name = "kmymoney-${version}";
version = "5.0.1";
src = fetchurl {
url = "mirror://kde/stable/kmymoney/${version}/src/${name}.tar.xz";
sha256 = "1c9apnvc07y17pzy4vygry1dai5ass2z7j354lrcppa85b18yvnx";
};
# Hidden dependency that wasn't included in CMakeLists.txt:
NIX_CFLAGS_COMPILE = "-I${kitemmodels.dev}/include/KF5";
enableParallelBuilding = true;
nativeBuildInputs = [
doxygen extra-cmake-modules graphviz kdoctools python2Packages.wrapPython
];
buildInputs = [
akonadi alkimia aqbanking gmp gwenhywfar kactivities karchive kcmutils
kcontacts kdewebkit kdiagram kholidays kidentitymanagement kitemmodels
libical libofx qgpgme
# Put it into buildInputs so that CMake can find it, even though we patch
# it into the interface later.
python2Packages.weboob
];
weboobPythonPath = [ python2Packages.weboob ];
postInstall = ''
buildPythonPath "$weboobPythonPath"
patchPythonScript "$out/share/kmymoney/weboob/kmymoneyweboob.py"
# Within the embedded Python interpreter, sys.argv is unavailable, so let's
# assign it to a dummy value so that the assignment of sys.argv[0] injected
# by patchPythonScript doesn't fail:
sed -i -e '1i import sys; sys.argv = [""]' \
"$out/share/kmymoney/weboob/kmymoneyweboob.py"
'';
doInstallCheck = stdenv.hostPlatform == stdenv.buildPlatform;
installCheckPhase = let
pluginPath = "${qtbase.bin}/${qtbase.qtPluginPrefix}";
in lib.optionalString doInstallCheck ''
QT_PLUGIN_PATH=${lib.escapeShellArg pluginPath} CTEST_OUTPUT_ON_FAILURE=1 \
${xvfb_run}/bin/xvfb-run -s '-screen 0 1024x768x24' make test \
ARGS="-E '(reports-chart-test)'" # Test fails, so exclude it for now.
'';
meta = {
description = "Personal finance manager for KDE";
homepage = https://kmymoney.org/;
platforms = lib.platforms.linux;
license = lib.licenses.gpl2Plus;
};
}