1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
| | ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages finance)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages autogen)
#:use-module (gnu packages autotools)
#:use-module (gnu packages boost)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
#:use-module (gnu packages databases)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages tls)
#:use-module (gnu packages upnp))
(define-public bitcoin-core
(package
(name "bitcoin-core")
(version "0.11.2")
(source (origin
(method url-fetch)
(uri
(string-append "https://bitcoin.org/bin/bitcoin-core-"
version "/bitcoin-"
version ".tar.gz"))
(sha256
(base32
"1lwh0vhw1gf3h6zrhynvad9y9qbpmhc8cw1zvj11yzsz5rjbvlm4"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("python" ,python-2) ; for the tests
("util-linux" ,util-linux))) ; provides the hexdump command for tests
(inputs
`(("bdb" ,bdb)
("boost" ,boost)
("miniupnpc" ,miniupnpc)
("openssl" ,openssl)
("protobuf" ,protobuf)
("qt" ,qt)))
(arguments
`(#:configure-flags
(list
;; We use a bdb version newer than 4.8.
"--with-incompatible-bdb"
;; Boost is not found unless specified manually.
(string-append "--with-boost="
(assoc-ref %build-inputs "boost")))
#:phases
(modify-phases %standard-phases
(add-before 'check 'set-home
(lambda _
(setenv "HOME" (getenv "TMPDIR"))))))) ; Tests write to $HOME.
(home-page "https://bitcoin.org/en/")
(synopsis "Bitcoin peer-to-peer client")
(description
"Bitcoin is a digital currency that enables instant payments to anyone
anywhere in the world. It uses peer-to-peer technology to operate without
central authority: managing transactions and issuing money are carried out
collectively by the network. Bitcoin Core is the reference implementation
of the bitcoin protocol. This package provides the Bitcoin Core command
line client and a client based on Qt.")
(license license:expat)))
(define-public stellar-core
(package
(name "stellar-core")
(version "0.4.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/stellar/stellar-core.git")
(commit "v0.4.1")
(recursive? #t)))
(sha256
(base32
"15mm1jk2kk5x34vn9gqwp7ijhsmhm6dwymznz7hqvjj8kjd088fi"))
;; This is a pain in the butt.
;; autogen.sh calls make-mks which does git ls-files, which
;; obviously we can't do.
;; As a workaround, we provide the results of the
;; .mk files generated by this script, but if a new version
;; comes out, you might need to provide new versions
;; of this patch by running autogen and then adding the results
;; manually! Not nice at all.
;; Alternative paths forward might be to de-bundle things
;; or maybe run autogen as part of the git-fetch phase...
;; which seems hard to do.
;; Anyway, you'll need to provide the contents of:
;; - src/src.mk
;; - lib/medida.mk
;; - lib/lib.mk
(patches (list (search-patch
"stellar-core-find-mk-files.patch")))))
(arguments
'(#:phases (modify-phases %standard-phases
(add-before 'configure 'autogen-self-and-submodules
(lambda _
(and (zero? (system* "sh" "autogen.sh"
;; we'll handle submodules manually
"--skip-submodules"))
;; Run autogen on libsodium too.
;; In the future, we might also have to manually
;; run this on other git submodules which are
;; introduced
(begin (chdir "lib/libsodium") #t)
(zero? (system* "sh" "autogen.sh"))
(begin (chdir "../..") #t)))))
;; Tries to run tests with a running postgres server...
;; well, sorry, we can't do that!
#:tests? #f))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("autoconf" ,autoconf)
("automake" ,automake)
("autogen" ,autogen)
;; used by libsodium git submodule
("libtool" ,libtool)))
(inputs
`(("bison" ,bison)
("flex" ,flex)
("postgresql" ,postgresql)))
(home-page "https://www.stellar.org/")
(synopsis "Communicate with the Stellar peer-to-peer network")
(description "Stellar-core is a replicated state machine that
maintains a local copy of a cryptographic ledger and processes
transactions against it, in consensus with a set of peers.
It implements the Stellar Consensus Protocol, a federated consensus
protocol.")
(license license:asl2.0)))
|