Merge pull request #39647 (Add KMyMoney)

This adds KMyMoney, a finance manager for KDE plus a few required
dependencies.

I ran the upstream test suite as well as the following manual tests:

  * 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.

On top of that, the application already is being used by the person
requesting me to package this, so I'd guess it works well enough.

I'm merging this without the review from @ttuegel because it only adds
packages and doesn't change anything fundamental about the KDE
ecosystem.

The only change here is to add C++ support to "mpir", where the
maintainer (@7c6f434c) has approved the change.
This commit is contained in:
aszlig 2018-05-05 23:46:29 +02:00
commit 8cf420e62f
No known key found for this signature in database
GPG Key ID: 684089CE67EBB691
6 changed files with 122 additions and 0 deletions

@ -0,0 +1,70 @@
{ 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;
};
}

@ -0,0 +1,31 @@
{ mkDerivation, fetchurl, lib
, extra-cmake-modules, doxygen, graphviz, qtbase, mpir
}:
mkDerivation rec {
name = "alkimia-${version}";
version = "7.0.1";
src = fetchurl {
url = "mirror://kde/stable/alkimia/${version}/src/${name}.tar.xz";
sha256 = "1fri76465058fgsyrmdrc3hj1javz4g10mfzqp5rsj7qncjr1i22";
};
nativeBuildInputs = [ extra-cmake-modules doxygen graphviz ];
buildInputs = [ qtbase ];
propagatedBuildInputs = [ mpir ];
meta = {
description = "Library used by KDE finance applications";
longDescription = ''
Alkimia is the infrastructure for common storage and business
logic that will be used by all financial applications in KDE.
The target is to share financial related information over
application bounderies.
'';
license = lib.licenses.lgpl21Plus;
platforms = qtbase.meta.platforms;
};
}

@ -155,6 +155,7 @@ let
kded = callPackage ./kded.nix {};
kdesignerplugin = callPackage ./kdesignerplugin.nix {};
kdesu = callPackage ./kdesu.nix {};
kdewebkit = callPackage ./kdewebkit.nix {};
kemoticons = callPackage ./kemoticons.nix {};
kglobalaccel = callPackage ./kglobalaccel.nix {};
kiconthemes = callPackage ./kiconthemes {};

@ -0,0 +1,11 @@
{ mkDerivation, extra-cmake-modules
, kconfig, kcoreaddons, kio, kparts, qtwebkit
}:
mkDerivation {
name = "kdewebkit";
nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [ kconfig kcoreaddons kio kparts ];
propagatedBuildInputs = [ qtwebkit ];
outputs = [ "out" "dev" ];
}

@ -11,6 +11,8 @@ stdenv.mkDerivation rec {
sha256 = "1fvmhrqdjs925hzr2i8bszm50h00gwsh17p2kn2pi51zrxck9xjj";
};
configureFlags = [ "--enable-cxx" ];
meta = {
inherit version;
description = ''A highly optimised library for bignum arithmetic forked from GMP'';

@ -11229,6 +11229,8 @@ with pkgs;
accounts-qt = callPackage ../development/libraries/accounts-qt { };
alkimia = callPackage ../development/libraries/alkimia { };
fcitx-qt5 = callPackage ../tools/inputmethods/fcitx/fcitx-qt5.nix { };
qgpgme = callPackage ../development/libraries/gpgme { };
@ -16533,6 +16535,11 @@ with pkgs;
kmplayer = libsForQt5.callPackage ../applications/video/kmplayer { };
kmymoney = libsForQt5.callPackage ../applications/office/kmymoney {
inherit (kdeApplications) kidentitymanagement;
inherit (kdeFrameworks) kdewebkit;
};
kodestudio = callPackage ../applications/editors/kodestudio { };
konversation = libsForQt5.callPackage ../applications/networking/irc/konversation { };