gnu: Add ledger.
* gnu/packages/finance.scm (ledger): New variable. Co-authored-by: Alex Kost <alezost@gmail.com>
This commit is contained in:
		
							parent
							
								
									f17a544756
								
							
						
					
					
						commit
						d3699b311b
					
				
					 1 changed files with 106 additions and 0 deletions
				
			
		| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -23,13 +24,21 @@
 | 
				
			||||||
 #:use-module (guix download)
 | 
					 #:use-module (guix download)
 | 
				
			||||||
 #:use-module (guix build utils)
 | 
					 #:use-module (guix build utils)
 | 
				
			||||||
 #:use-module (guix build-system gnu)
 | 
					 #:use-module (guix build-system gnu)
 | 
				
			||||||
 | 
					 #:use-module (guix build-system cmake)
 | 
				
			||||||
 | 
					 #:use-module (gnu packages base)
 | 
				
			||||||
 #:use-module (gnu packages boost)
 | 
					 #:use-module (gnu packages boost)
 | 
				
			||||||
 #:use-module (gnu packages databases)
 | 
					 #:use-module (gnu packages databases)
 | 
				
			||||||
 | 
					 #:use-module (gnu packages emacs)
 | 
				
			||||||
 | 
					 #:use-module (gnu packages groff)
 | 
				
			||||||
 | 
					 #:use-module (gnu packages libedit)
 | 
				
			||||||
 #:use-module (gnu packages linux)
 | 
					 #:use-module (gnu packages linux)
 | 
				
			||||||
 | 
					 #:use-module (gnu packages multiprecision)
 | 
				
			||||||
 #:use-module (gnu packages pkg-config)
 | 
					 #:use-module (gnu packages pkg-config)
 | 
				
			||||||
 #:use-module (gnu packages protobuf)
 | 
					 #:use-module (gnu packages protobuf)
 | 
				
			||||||
 #:use-module (gnu packages python)
 | 
					 #:use-module (gnu packages python)
 | 
				
			||||||
 #:use-module (gnu packages qt)
 | 
					 #:use-module (gnu packages qt)
 | 
				
			||||||
 | 
					 #:use-module (gnu packages texinfo)
 | 
				
			||||||
 | 
					 #:use-module (gnu packages textutils)
 | 
				
			||||||
 #:use-module (gnu packages tls)
 | 
					 #:use-module (gnu packages tls)
 | 
				
			||||||
 #:use-module (gnu packages upnp))
 | 
					 #:use-module (gnu packages upnp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,3 +90,100 @@ collectively by the network.  Bitcoin Core is the reference implementation
 | 
				
			||||||
of the bitcoin protocol.  This package provides the Bitcoin Core command
 | 
					of the bitcoin protocol.  This package provides the Bitcoin Core command
 | 
				
			||||||
line client and a client based on Qt.")
 | 
					line client and a client based on Qt.")
 | 
				
			||||||
    (license license:expat)))
 | 
					    (license license:expat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public ledger
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "ledger")
 | 
				
			||||||
 | 
					    (version "3.1.1")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "https://github.com/ledger/ledger/archive/v"
 | 
				
			||||||
 | 
					                    version ".tar.gz"))
 | 
				
			||||||
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "12jlv3gsjhrja25q9hrwh73cdacd2l3c2yyn8qnijav9mdhnbw4h"))))
 | 
				
			||||||
 | 
					    (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))
 | 
				
			||||||
 | 
					       #:configure-flags
 | 
				
			||||||
 | 
					       `("-DBUILD_DOCS:BOOL=ON"
 | 
				
			||||||
 | 
					         "-DBUILD_WEB_DOCS:BOOL=ON"
 | 
				
			||||||
 | 
					         "-DBUILD_EMACSLISP:BOOL=ON"
 | 
				
			||||||
 | 
					         "-DUSE_PYTHON:BOOL=ON"
 | 
				
			||||||
 | 
					         "-DCMAKE_INSTALL_LIBDIR:PATH=lib"
 | 
				
			||||||
 | 
					         ,(string-append "-DUTFCPP_INCLUDE_DIR:PATH="
 | 
				
			||||||
 | 
					                         (assoc-ref %build-inputs "utfcpp")
 | 
				
			||||||
 | 
					                         "/include"))
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-before 'configure 'install-examples
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (let ((examples (string-append (assoc-ref outputs "out")
 | 
				
			||||||
 | 
					                                            "/share/doc/ledger/examples")))
 | 
				
			||||||
 | 
					               (install-file "test/input/sample.dat" examples)
 | 
				
			||||||
 | 
					               (install-file "test/input/demo.ledger" examples))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'build 'build-doc
 | 
				
			||||||
 | 
					           (lambda _ (zero? (system* "make" "doc"))))
 | 
				
			||||||
 | 
					         (add-before 'check 'check-setup
 | 
				
			||||||
 | 
					           ;; One test fails if it can't set the timezone.
 | 
				
			||||||
 | 
					           (lambda* (#:key inputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (setenv "TZDIR"
 | 
				
			||||||
 | 
					                     (string-append (assoc-ref inputs "tzdata")
 | 
				
			||||||
 | 
					                                    "/share/zoneinfo"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'install 'relocate-elisp
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (let* ((site-dir (string-append (assoc-ref outputs "out")
 | 
				
			||||||
 | 
					                                             "/share/emacs/site-lisp"))
 | 
				
			||||||
 | 
					                    (guix-dir (string-append site-dir "/guix.d"))
 | 
				
			||||||
 | 
					                    (orig-dir (string-append site-dir "/ledger-mode"))
 | 
				
			||||||
 | 
					                    (dest-dir (string-append guix-dir "/ledger-mode")))
 | 
				
			||||||
 | 
					               (mkdir-p guix-dir)
 | 
				
			||||||
 | 
					               (rename-file orig-dir dest-dir)
 | 
				
			||||||
 | 
					               (emacs-generate-autoloads ,name dest-dir))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("boost" ,boost)
 | 
				
			||||||
 | 
					       ("gmp" ,gmp)
 | 
				
			||||||
 | 
					       ("libedit" ,libedit)
 | 
				
			||||||
 | 
					       ("mpfr" ,mpfr)
 | 
				
			||||||
 | 
					       ("python" ,python-2)
 | 
				
			||||||
 | 
					       ("tzdata" ,tzdata)
 | 
				
			||||||
 | 
					       ("utfcpp" ,utfcpp)))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("emacs" ,emacs-no-x)
 | 
				
			||||||
 | 
					       ("groff" ,groff)
 | 
				
			||||||
 | 
					       ("texinfo" ,texinfo)))
 | 
				
			||||||
 | 
					    (home-page "http://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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ledger uses text files for input.  It reads the files and generates
 | 
				
			||||||
 | 
					reports; there is no other database or stored state.  To use Ledger,
 | 
				
			||||||
 | 
					you create a file of your account names and transactions, run from the
 | 
				
			||||||
 | 
					command line with some options to specify input and requested reports, and
 | 
				
			||||||
 | 
					get output.  The output is generally plain text, though you could generate
 | 
				
			||||||
 | 
					a graph or html instead.  Ledger is simple in concept, surprisingly rich
 | 
				
			||||||
 | 
					in ability, and easy to use.")
 | 
				
			||||||
 | 
					    ;; There are some extra licenses in files which do not presently get
 | 
				
			||||||
 | 
					    ;; installed when you build this package.  Different versions of the GPL
 | 
				
			||||||
 | 
					    ;; are used in the contrib and python subdirectories.  The bundled version
 | 
				
			||||||
 | 
					    ;; of utfcpp is under the Boost 1.0 license. Also the file
 | 
				
			||||||
 | 
					    ;; `tools/update_copyright_year` has an Expat license.
 | 
				
			||||||
 | 
					    (license (list license:bsd-3
 | 
				
			||||||
 | 
					                   license:asl2.0     ; src/strptime.cc
 | 
				
			||||||
 | 
					                   (license:non-copyleft
 | 
				
			||||||
 | 
					                    "file://src/wcwidth.cc"
 | 
				
			||||||
 | 
					                    "See src/wcwidth.cc in the distribution.")
 | 
				
			||||||
 | 
					                   license:gpl2+))))  ; lisp/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue