~ruther/guix-local

8514662b2028a24d2c378c78db9010fe3d52f3e3 — Theodoros Foradis 8 years ago e5f3d11
gnu: Add monero.

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

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 108 insertions(+), 0 deletions(-)

M gnu/packages/finance.scm
M gnu/packages/finance.scm => gnu/packages/finance.scm +108 -0
@@ 4,6 4,7 @@
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 29,11 30,16 @@
 #:use-module (guix build-system python)
 #:use-module (gnu packages base)
 #:use-module (gnu packages boost)
 #:use-module (gnu packages check)
 #:use-module (gnu packages databases)
 #:use-module (gnu packages documentation)
 #:use-module (gnu packages dns)
 #:use-module (gnu packages emacs)
 #:use-module (gnu packages graphviz)
 #:use-module (gnu packages groff)
 #:use-module (gnu packages libedit)
 #:use-module (gnu packages libevent)
 #:use-module (gnu packages libunwind)
 #:use-module (gnu packages linux)
 #:use-module (gnu packages multiprecision)
 #:use-module (gnu packages pkg-config)


@@ 44,6 50,8 @@
 #:use-module (gnu packages textutils)
 #:use-module (gnu packages tls)
 #:use-module (gnu packages upnp)
 #:use-module (gnu packages web)
 #:use-module (gnu packages xml)
 #:use-module (gnu packages gnuzilla))

(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
other machines/servers.  Electrum does not download the Bitcoin blockchain.")
    (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)))