diff options
Diffstat (limited to 'gnu/packages/finance.scm')
-rw-r--r-- | gnu/packages/finance.scm | 252 |
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 |