gnu: Add monero.

* gnu/packages/finance.scm (monero): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Theodoros Foradis 2017-09-09 20:47:34 +03:00 committed by Ludovic Courtès
parent e5f3d1183c
commit 8514662b20
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 108 additions and 0 deletions

View File

@ -4,6 +4,7 @@
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -29,11 +30,16 @@
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages boost) #:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages databases) #:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
#:use-module (gnu packages dns)
#:use-module (gnu packages emacs) #:use-module (gnu packages emacs)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff) #:use-module (gnu packages groff)
#:use-module (gnu packages libedit) #:use-module (gnu packages libedit)
#:use-module (gnu packages libevent) #:use-module (gnu packages libevent)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages multiprecision) #:use-module (gnu packages multiprecision)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
@ -44,6 +50,8 @@
#:use-module (gnu packages textutils) #: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)
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
#:use-module (gnu packages gnuzilla)) #:use-module (gnu packages gnuzilla))
(define-public bitcoin-core (define-public bitcoin-core
@ -292,3 +300,103 @@ protocol. It supports Simple Payment Verification (SPV) and deterministic key
generation from a seed. Your secret keys are encrypted and are never sent to generation from a seed. Your secret keys are encrypted and are never sent to
other machines/servers. Electrum does not download the Bitcoin blockchain.") other machines/servers. Electrum does not download the Bitcoin blockchain.")
(license license:expat))) (license license:expat)))
(define-public monero
;; This package bundles easylogging++ and lmdb.
;; The bundled easylogging++ is modified, and the changes will not be upstreamed.
;; The devs deem the lmdb driver too critical a consenus component, to use
;; the system's dynamically linked library.
(package
(name "monero")
(version "0.11.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/monero-project/monero/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(modules '((guix build utils)))
(snippet
'(begin
;; Delete bundled dependencies.
(for-each
delete-file-recursively
'("external/miniupnpc" "external/rapidjson"
"external/unbound"))
#t))
(sha256
(base32
"083w40a553c0r3i18020jcrv5s0b64vx3d8xrn9nwkb2237ighlk"))))
(build-system cmake-build-system)
(native-inputs
`(("doxygen" ,doxygen)
("googletest" ,googletest)
("graphviz" ,graphviz)
("pkg-config" ,pkg-config)))
(inputs
`(("bind" ,isc-bind)
("boost" ,boost)
("expat" ,expat)
("libunwind" ,libunwind)
("lmdb" ,lmdb)
("miniupnpc" ,miniupnpc)
("openssl" ,openssl)
("rapidjson" ,rapidjson)
("unbound" ,unbound)))
(arguments
`(#:out-of-source? #t
#:configure-flags '("-DBUILD_TESTS=ON"
"-DBUILD_GUI_DEPS=ON")
#:phases
(modify-phases %standard-phases
;; tests/core_tests need a valid HOME
(add-before 'configure 'set-home
(lambda _
(setenv "HOME" (getcwd))
#t))
(add-after 'set-home 'fix-wallet-path-for-unit-tests
(lambda _
(substitute* "tests/unit_tests/serialization.cpp"
(("\\.\\./\\.\\./\\.\\./\\.\\./") "../../"))
#t))
(add-after 'fix-wallet-path-for-unit-tests 'change-log-path
(lambda _
(substitute* "contrib/epee/src/mlog.cpp"
(("epee::string_tools::get_current_module_folder\\(\\)")
"\".bitmonero\""))
(substitute* "contrib/epee/src/mlog.cpp"
(("return \\(") "return ((std::string(getenv(\"HOME\"))) / "))
#t))
(replace 'check
(lambda _
(zero?
(system* "make" "ARGS=-E 'unit_tests|libwallet_api_tests'"
"test"))))
;; The excluded unit tests need network access
(add-after 'check 'unit-tests
(lambda _
(let ((excluded-unit-tests
(string-join
'("AddressFromURL.Success"
"AddressFromURL.Failure"
"DNSResolver.IPv4Success"
"DNSResolver.DNSSECSuccess"
"DNSResolver.DNSSECFailure"
"DNSResolver.GetTXTRecord")
":")))
(zero?
(system* "tests/unit_tests/unit_tests"
(string-append "--gtest_filter=-"
excluded-unit-tests))))))
(add-after 'install 'install-blockchain-import-export
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(install-file "bin/monero-blockchain-import" bin)
(install-file "bin/monero-blockchain-export" bin)))))))
(home-page "https://getmonero.org/")
(synopsis "Command-line interface to the Monero currency")
(description
"Monero is a secure, private, untraceable currency. This package provides the
Monero command line client and daemon.")
(license license:bsd-3)))