summary refs log tree commit diff
path: root/gnu/packages/finance.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/finance.scm')
-rw-r--r--gnu/packages/finance.scm252
1 files changed, 155 insertions, 97 deletions
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 182d38c1a9..a79c70d1e0 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,6 +46,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system emacs)
+  #:use-module (guix build-system haskell)
   #:use-module (guix build-system python)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system go)
@@ -72,6 +74,9 @@
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-web)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libevent)
@@ -103,7 +108,7 @@
 (define-public bitcoin-core
   (package
     (name "bitcoin-core")
-    (version "0.19.1")
+    (version "0.20.1")
     (source (origin
               (method url-fetch)
               (uri
@@ -111,11 +116,13 @@
                               version "/bitcoin-" version ".tar.gz"))
               (sha256
                (base32
-                "1h3w7brc18145np920vy7j5ms5hym59hvr40swdjx34fbdaisngj"))
-              (patches (search-patches "bitcoin-core-python-compat.patch"))))
+                "0y5rad68b398arh0abr2wgiwybdw0i5a4dxz9s3fk9fgdbyn5gab"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)
        ("python" ,python)               ; for the tests
        ("util-linux" ,util-linux)       ; provides the hexdump command for tests
        ("qttools" ,qttools)))
@@ -125,7 +132,6 @@
        ("libevent" ,libevent)
        ("miniupnpc" ,miniupnpc)
        ("openssl" ,openssl)
-       ("protobuf" ,protobuf)
        ("qtbase" ,qtbase)))
     (arguments
      `(#:configure-flags
@@ -149,6 +155,13 @@
              ;; Make Qt deterministic.
              (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
              #t))
+         (add-before 'build 'set-no-git-flag
+           (lambda _
+             ;; Make it clear we are not building from within a git repository
+             ;; (and thus no information regarding this build is available
+             ;; from git).
+             (setenv "BITCOIN_GENBUILD_NO_GIT" "1")
+             #t))
          (add-before 'check 'set-home
            (lambda _
              (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME
@@ -170,6 +183,64 @@ of the bitcoin protocol.  This package provides the Bitcoin Core command
 line client and a client based on Qt.")
     (license license:expat)))
 
+(define-public hledger
+  (package
+    (name "hledger")
+    (version "1.14.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/hledger/hledger-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1si9zqparkdq77yji87lhcsrf11fr3gisqwsv82cabhrhc36x6l4"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-ansi-terminal" ,ghc-ansi-terminal)
+       ("ghc-base-compat-batteries" ,ghc-base-compat-batteries)
+       ("ghc-cmdargs" ,ghc-cmdargs)
+       ("ghc-data-default" ,ghc-data-default)
+       ("ghc-decimal" ,ghc-decimal)
+       ("ghc-diff" ,ghc-diff)
+       ("ghc-easytest" ,ghc-easytest)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-hledger-lib" ,ghc-hledger-lib)
+       ("ghc-lucid" ,ghc-lucid)
+       ("ghc-math-functions" ,ghc-math-functions)
+       ("ghc-megaparsec" ,ghc-megaparsec)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-old-time" ,ghc-old-time)
+       ("ghc-pretty-show" ,ghc-pretty-show)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-shakespeare" ,ghc-shakespeare)
+       ("ghc-split" ,ghc-split)
+       ("ghc-tabular" ,ghc-tabular)
+       ("ghc-temporary" ,ghc-temporary)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-utility-ht" ,ghc-utility-ht)
+       ("ghc-wizards" ,ghc-wizards)))
+    (native-inputs
+     `(("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
+    (home-page "https://hledger.org")
+    (synopsis "Command-line interface for the hledger accounting system")
+    (description
+     "The command-line interface for the hledger accounting system.  Its basic
+function is to read a plain text file describing financial transactions and
+produce useful reports.
+
+hledger is a robust, cross-platform set of tools for tracking money, time, or
+any other commodity, using double-entry accounting and a simple, editable file
+format, with command-line, terminal and web interfaces.  It is a Haskell
+rewrite of Ledger, and one of the leading implementations of Plain Text
+Accounting.")
+    (license license:gpl3)))
+
 (define-public homebank
   (package
     (name "homebank")
@@ -293,67 +364,67 @@ in ability, and easy to use.")
                     "See src/wcwidth.cc in the distribution.")))))
 
 (define-public emacs-ledger-mode
-  ;; There have been no new releases since 2016.
-  (let ((commit "253a20dc62e137ed0ed8e1dd8614ecba116610ea")
-        (revision "1"))
-    (package
-      (name "emacs-ledger-mode")
-      (version (git-version "3.1.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/ledger/ledger-mode")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "06wrgkqpgvk17vibrk2qikdlqn8y63jg86marp1wgmram92mb3jk"))))
-      (build-system cmake-build-system)
-      (arguments
-       `(#:modules ((guix build cmake-build-system)
-                    (guix build utils)
-                    (guix build emacs-utils))
-         #:imported-modules (,@%cmake-build-system-modules
-                             (guix build emacs-utils))
-         #:tests? #f ; there are none
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch-site-dir
-             (lambda _
-               (substitute* "CMakeLists.txt"
-                 (("DESTINATION share/emacs/site-lisp/ledger-mode")
-                  "DESTINATION share/emacs/site-lisp"))
-               #t))
-           (add-before 'build 'patch-path
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((ledger (assoc-ref inputs "ledger")))
-                 (make-file-writable "ledger-exec.el")
-                 (emacs-substitute-variables "ledger-exec.el"
-                   ("ledger-binary-path" (string-append ledger "/bin/ledger"))))
-               #t))
-           (add-after 'build 'build-doc
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((target (string-append (assoc-ref outputs "out")
-                                            "/share/info")))
-                 (mkdir-p target)
-                 (invoke "makeinfo" "-o" target
-                         "../source/doc/ledger-mode.texi"))
-               #t))
-           (add-after 'install 'generate-autoload
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((site-dir (string-append (assoc-ref outputs "out")
-                                               "/share/emacs/site-lisp")))
-                 (emacs-generate-autoloads ,name site-dir))
-               #t)))))
-      (inputs
-       `(("ledger" ,ledger)))
-      (native-inputs
-       `(("emacs-minimal" ,emacs-minimal)
-         ("texinfo" ,texinfo)))
-      (home-page "https://ledger-cli.org/")
-      (synopsis "Command-line double-entry accounting program")
-      (description
-       "Ledger is a powerful, double-entry accounting system that is
+  (package
+    (name "emacs-ledger-mode")
+    (version "4.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ledger/ledger-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1r5rcyxd6d1rqwamzpvqdbkbdf1zbj75aaciqijrklnm59ps244y"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:modules ((guix build cmake-build-system)
+                  (guix build utils)
+                  (guix build emacs-utils))
+       #:imported-modules (,@%cmake-build-system-modules
+                           (guix build emacs-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-site-dir
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("DESTINATION share/emacs/site-lisp/ledger-mode")
+                "DESTINATION share/emacs/site-lisp"))
+             #t))
+         (add-before 'build 'patch-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((ledger (assoc-ref inputs "ledger")))
+               (make-file-writable "ledger-exec.el")
+               (emacs-substitute-variables "ledger-exec.el"
+                 ("ledger-binary-path" (string-append ledger "/bin/ledger"))))
+             #t))
+         (add-after 'build 'build-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((target (string-append (assoc-ref outputs "out")
+                                          "/share/info")))
+               (mkdir-p target)
+               (invoke "makeinfo" "-o" target
+                       "../source/doc/ledger-mode.texi"))
+             #t))
+         (add-after 'install 'generate-autoload
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((site-dir (string-append (assoc-ref outputs "out")
+                                             "/share/emacs/site-lisp")))
+               (emacs-generate-autoloads ,name site-dir))
+             #t))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "../source/test"
+               (invoke "make" "test-batch")))))))
+    (inputs
+     `(("ledger" ,ledger)))
+    (native-inputs
+     `(("emacs-minimal" ,emacs-minimal)
+       ("texinfo" ,texinfo)))
+    (home-page "https://ledger-cli.org/")
+    (synopsis "Command-line double-entry accounting program")
+    (description
+     "Ledger is a powerful, double-entry accounting system that is
 accessed from the UNIX command-line.  This may put off some users, since
 there is no flashy UI, but for those who want unparalleled reporting
 access to their data there are few alternatives.
@@ -367,7 +438,7 @@ a graph or html instead.  Ledger is simple in concept, surprisingly rich
 in ability, and easy to use.
 
 This package provides the Emacs mode.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public geierlein
   (package
@@ -480,7 +551,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
 (define-public electron-cash
   (package
     (name "electron-cash")
-    (version "4.1.1")
+    (version "4.2.2")
     (source
      (origin
        (method git-fetch)
@@ -489,7 +560,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1fllz2s20lg4hrppzmnlgjy9mrq7gaq66l2apb3vz1avzvsjw3gm"))))
+        (base32 "1zk40zbf67wid2s5wg1fknb71409wg0qlvznk44q571v9risrdy7"))))
     (build-system python-build-system)
     (inputs
      `(("libevent" ,libevent)
@@ -524,20 +595,17 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
          (add-after 'unpack 'create-output-directories
            (lambda* (#:key outputs #:allow-other-keys)
              ;; setup.py installs to ~/.local/share if this doesn't exist.
-             (mkdir-p (string-append (assoc-ref outputs "out") "/share"))
-             #t))
+             (mkdir-p (string-append (assoc-ref outputs "out") "/share"))))
          (add-after 'unpack 'use-libsecp256k1-input
            (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "lib/secp256k1.py"
+             (substitute* "electroncash/secp256k1.py"
                (("library_paths = .* 'libsecp256k1.so.0'.")
                 (string-append "library_paths = ('"
                                (assoc-ref inputs "libsecp256k1")
-                               "/lib/libsecp256k1.so.0'")))
-             #t))
+                               "/lib/libsecp256k1.so.0'")))))
          (add-after 'install 'wrap-qt
            (lambda* (#:key outputs #:allow-other-keys)
-             (wrap-qt-program (assoc-ref outputs "out") "electron-cash")
-             #t)))))
+             (wrap-qt-program (assoc-ref outputs "out") "electron-cash"))))))
     (home-page "https://electroncash.org/")
     (synopsis "Bitcoin Cash wallet")
     (description
@@ -555,7 +623,7 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
   ;; the system's dynamically linked library.
   (package
     (name "monero")
-    (version "0.17.1.0")
+    (version "0.17.1.5")
     (source
      (origin
        (method git-fetch)
@@ -575,7 +643,7 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
               "external/unbound"))
            #t))
        (sha256
-        (base32 "1cngniv7sndy8r0fcfgk737640k53q3kwd36g891p5igcb985qdw"))))
+        (base32 "0yy9n2qng02j314h8fh5n0mcy6vpdks0yk4d8ifn8hj03f3g2c8b"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -665,7 +733,7 @@ the Monero command line client and daemon.")
 (define-public monero-gui
   (package
     (name "monero-gui")
-    (version "0.17.1.0")
+    (version "0.17.1.5")
     (source
      (origin
        (method git-fetch)
@@ -674,7 +742,7 @@ the Monero command line client and daemon.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07r78ipv4g3i6z822kq380vi3qwlb958rccsy6lyybkhj9y0rx84"))))
+        (base32 "0qlcqli0wvrjfy89mbgh1hpmk60dxgn5sws93h8lhgyfwx557iw0"))))
     (build-system qt-build-system)
     (native-inputs
      `(,@(package-native-inputs monero)
@@ -686,8 +754,6 @@ the Monero command line client and daemon.")
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
        ("qtgraphicaleffects" ,qtgraphicaleffects)
-       ("qtlocation" ,qtlocation)
-       ("qtmultimedia" ,qtmultimedia)
        ("qtquickcontrols" ,qtquickcontrols)
        ("qtquickcontrols2",qtquickcontrols2)
        ("qtsvg" ,qtsvg)
@@ -698,8 +764,7 @@ the Monero command line client and daemon.")
        (list "-DARCH=default"
              "-DENABLE_PASS_STRENGTH_METER=ON"
              (string-append "-DReadline_ROOT_DIR="
-                            (assoc-ref %build-inputs "readline"))
-             "-DCMAKE_BUILD_TYPE=Release")
+                            (assoc-ref %build-inputs "readline")))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'extract-monero-sources
@@ -708,19 +773,14 @@ the Monero command line client and daemon.")
            (lambda* (#:key inputs #:allow-other-keys)
              (invoke "tar" "-xv" "--strip-components=1"
                      "-C" "monero"
-                     "-f" (assoc-ref inputs "monero-source"))
-             #t))
+                     "-f" (assoc-ref inputs "monero-source"))))
          (add-after 'extract-monero-sources 'fix-build
            (lambda _
-             (substitute* "monero/src/version.cpp.in"
-               (("@VERSION_IS_RELEASE@")
-                "false"))
              (substitute* "src/version.js.in"
                (("@VERSION_TAG_GUI@")
                 ,version))
              (substitute* "src/zxcvbn-c/makefile"
-               (("\\?=") "="))
-             #t))
+               (("\\?=") "="))))
          (add-before 'configure 'generate-zxcvbn-c-header
            (lambda _
              (invoke "make" "-C" "src/zxcvbn-c" "dict-src.h")))
@@ -728,8 +788,7 @@ the Monero command line client and daemon.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
                (mkdir-p bin)
-               (install-file "../build/bin/monero-wallet-gui" bin))
-             #t))
+               (install-file "../build/bin/monero-wallet-gui" bin))))
          (add-after 'qt-wrap 'install-monerod-link
            ;; The monerod program must be available so that monero-wallet-gui
            ;; can start a Monero daemon if necessary.
@@ -737,8 +796,7 @@ the Monero command line client and daemon.")
              (symlink (string-append (assoc-ref inputs "monero")
                                      "/bin/monerod")
                       (string-append (assoc-ref outputs "out")
-                                     "/bin/monerod"))
-             #t)))))
+                                     "/bin/monerod")))))))
     (home-page "https://web.getmonero.org/")
     (synopsis "Graphical user interface for the Monero currency")
     (description
@@ -1034,13 +1092,13 @@ Luhn and family of ISO/IEC 7064 check digit algorithms. ")
 (define-public python-duniterpy
   (package
     (name "python-duniterpy")
-    (version "0.60.0")
+    (version "0.60.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "duniterpy" version))
        (sha256
-        (base32 "0djn6ykmqbp8l2xbg6z8r7rkz9ijgygp2pr0gc6i7dsrlsqmjh32"))))
+        (base32 "1cwda5mk05zmpar7fpk9m4bziyz2s5pd0922h22fns5hw7vfsybh"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: Tests fail with: "TypeError: block_uid() missing 1 required