aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/hyperledger.scm
blob: c1b8215584b405524920b7b87594d32070c3d265 (about) (plain)
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; 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 hyperledger)
  #:use-module (ice-9 match)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system go)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix licenses)
  #:use-module (gnu packages)
  #:use-module (gnu packages base)
  #:use-module (gnu packages boost)
  #:use-module (gnu packages check)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages docker)
  #:use-module (gnu packages golang)
  #:use-module (gnu packages logging)
  #:use-module (gnu packages machine-learning)
  #:use-module (gnu packages popt)
  #:use-module (gnu packages pretty-print)
  #:use-module (gnu packages protobuf)
  #:use-module (gnu packages rpc)
  #:use-module (gnu packages tbb)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages web))

(define-public hyperledger-fabric
  (package
    (name "hyperledger-fabric")
    (version "1.4.0")
    ;; While the GitHub repository is supposed to be "just a mirror," the Go
    ;; imports refer to it explicitly.
    (home-page "https://github.com/hyperledger/fabric")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url home-page)
                    ;; ‘release-…’ are branches, and move. ‘v…’ are the tags.
                    (commit (string-append "v" version))))
              (sha256
               (base32
                "0nmg24ishwddxm1i2vh5ah5ylmmcg0apnjbgv1hljvhl48k4pzxq"))
              (file-name (git-file-name name version))))
    (build-system go-build-system)
    (native-inputs
     `(("which" ,which)
       ("docker-cli" ,docker-cli)
       ("git" ,git)
       ("curl" ,curl)))
    (arguments
     `(#:import-path "github.com/hyperledger/fabric"
       #:unpack-path "github.com/hyperledger/fabric"
       ;; We don't need to install the source code for end-user applications.
       #:install-source? #f
       ;; TODO: Tests require a running Docker daemon.
       #:tests? #f
       #:phases
       (modify-phases %standard-phases
         (replace 'build
           (lambda _
             ;; Only linux-amd64 and linux-ppc64le seem to be supported at the moment.
             (invoke "make"
                     "-j" (number->string (parallel-job-count))
                     "-C" "src/github.com/hyperledger/fabric"
                     "release/linux-amd64")))
         (add-after 'install 'install-commands
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out"))
                   (src "src/github.com/hyperledger/fabric/"))
               (with-directory-excursion src
                 (copy-recursively
                  "release/linux-amd64/bin"
                  (string-append out "/bin"))
                 (install-file "LICENSE"
                               (string-append out "/share/licenses"))
                 (install-file "README.md"
                               (string-append out "/share/doc"))
                 (copy-recursively "sampleconfig"
                                   (string-append out "/etc/hyperledger/fabric"))))
             #t)))))
    (supported-systems '("x86_64-linux"))
    (synopsis "Platform for distributed ledger solutions")
    (description "Hyperledger Fabric is a platform for distributed ledger
solutions, underpinned by a modular architecture focusing on confidentiality
and resiliency.  It is designed to support pluggable implementations of
different components.")
    (license asl2.0)))

(define-public hyperledger-iroha-ed25519
  (package
    (name "hyperledger-iroha-ed25519")
    (version "2.0.2")
    (home-page "https://github.com/hyperledger/iroha-ed25519")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url home-page)
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0kr1zwah8mhnpfrpk3h6hdafyqdl3ixhs7czdfscqv6vxqfiabc4"))))
    (build-system cmake-build-system)
    (native-inputs
     `(("googletest" ,googletest)))
    (arguments
     `(#:tests? #f      ; Tests don't build because CMake cannot find GTest main.
       #:configure-flags '("-DHUNTER_ENABLED=OFF"
                           "-DBUILD=SHARED"
                           ;; TODO: x86_64 should use amd64-64-24k-pic but it
                           ;; fails to link when built as a shared library.
                           "-DEDIMPL=ref10"
                           "-DHASH=sha3_brainhub")))
    (synopsis "Ed25519 digital signature algorithm")
    (description "This repository aims to provide modularized implementation
of the Ed25519 digital signature algorithm which is is described in
RFC8032 (@url{https://tools.ietf.org/html/rfc8032}).

Originally Ed25519 consists of three modules:

@itemize
@item digital signature algorithm itself
@item SHA512 hash function
@item random number generator, to generate keypairs
@end itemize

This project offers at least two different C implementations for every
module.  Every implementation can be replaced with another one at
link-time.  New implementations can be added as well.")
    (license asl2.0)))

(define-public hyperledger-iroha
  (package
    (name "hyperledger-iroha")
    (version "1.1.1")
    (home-page "https://github.com/hyperledger/iroha")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                     (url home-page)
                     (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "014mbwq059yxwihw0mq8zgns53fsw8ckczi1lw8q9pz3pk86pa9b"))
              (modules '((guix build utils)))
              (snippet
               '(begin
                  ;; https://github.com/hyperledger/iroha/commit/4dc710d2e9a067af866771318f673c7392797e48
                  ;; Backport unversioned fmt dependency, remove next update:
                  (substitute* "libs/logger/logger.hpp"
                    (("fmt::v5") "fmt"))
                  #t))))
    (build-system cmake-build-system)
    (arguments
     `(#:configure-flags
       '("-DTESTING=OFF"    ; The tests fail to link correctly to googletest.
         ;; Don't install the shared libraries of the dependencies:
         "-DENABLE_LIBS_PACKAGING=OFF")
       #:tests? #f
       ;; https://iroha.readthedocs.io/en/latest/build/index.html#running-tests-optional
       #:test-target "."))
    ;; https://github.com/hyperledger/iroha/blob/master/vcpkg/VCPKG_DEPS_LIST
    (native-inputs
     `(("fmt" ,fmt)
       ("googletest" ,googletest)
       ("rapidjson" ,rapidjson)
       ("rxcpp" ,rxcpp)
       ("spdlog" ,spdlog)))
    (inputs
     `(("boost" ,boost)
       ("gflags" ,gflags)
       ("grpc" ,grpc-1.16.1)
       ("hyperledger-iroha-ed25519" ,hyperledger-iroha-ed25519)
       ("postgresql" ,postgresql)
       ("protobuf" ,protobuf)
       ("soci" ,soci)
       ("tbb" ,tbb)))
    (synopsis "Simple, decentralized ledger")
    (description "Iroha is a distributed ledger technology (DLT).  Iroha has
essential functionality for your asset, information and identity management
needs, at the same time being a crash fault-tolerant tool.

Iroha has the following features:

@itemize
@item Creation and management of custom fungible assets, such as currencies,
kilos of gold, etc.
@item Management of user accounts
@item Taxonomy of accounts based on domains in the system
@item The system of rights and verification of user permissions for the
execution of transactions and queries in the system
@item Validation of business rules for transactions and queries in the system
@item Multisignature transactions
@end itemize\n")
    (license asl2.0)))
'>* gnu/packages/make-bootstrap.scm (%linux-libre-headers-stripped): New variable. (%linux-libre-headers-bootstrap-tarball): New variable. Jan Nieuwenhuizen 2019-07-02gnu: bootstrap-tarballs: Don't include the native Mes when cross-compiling....* gnu/packages/make-bootstrap.scm (%bootstrap-tarballs)[inputs]: Check %CURRENT-TARGET-SYSTEM when deciding whether to use the reduced binary seeds. Marius Bakke 2019-07-02gnu: make-bootstrap: Adjust for GCC 7....* gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc)[native-inputs]: Add SEARCH-PATHS to CROSS-GCC, and NATIVE-SEARCH-PATHS to the native GCC. Marius Bakke 2019-07-02gnu: make-bootstrap: Restore cross-compilation workarounds....These workarounds were removed in cf8264364761857ca3550398369a0f20d7b0d512 and 218eb6e611c0a238802bf9cb5742d37cea0bb012, but were needed for %BOOTSTRAP-TARBALLS. * gnu/packages/make-bootstrap.scm (%static-inputs)[coreutils, tar]: Add <#:configure-flags>. Marius Bakke 2019-02-28gnu: make-bootstrap: Adjust for GCC7....This is a follow-up to commit 01e8263febb9634564b4b73af49b81a36567a11b. * gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc): Add the GCC7 'treat-glibc-as-system-header' build phase. Marius Bakke 2018-12-20Merge branch 'master' into core-updatesLudovic Courtès 2018-12-16bootstrap: Merge mes-minimal into mes-minimal-stripped....* gnu/packages/make-bootstrap.scm (%mes-minimal): Remove. (%mes-minimal-stripped): Configure using --mes. Strip installation. Jan Nieuwenhuizen 2018-12-16bootstrap: mes-minimal-stripped: Do not strip bin....* gnu/packages/make-bootstrap.scm (%mes-minimal-stripped): Do not strip bin. Jan Nieuwenhuizen 2018-12-14gnu: glibc-stripped: Empty 'native-inputs' and 'propagated-inputs'....These would needlessly pull in linux-libre-headers when running "guix build bootstrap-tarballs --target=i586-pc-gnu". * gnu/packages/make-bootstrap.scm (%glibc-stripped)[native-inputs] [propagated-inputs]: New fields. Ludovic Courtès 2018-12-12gnu: xz: Move liblzma.a to separate output....* gnu/packages/compression.scm (xz)[arguments, outputs]: New fields. * gnu/packages/make-bootstrap.scm (%static-inputs)[xz]: Don't inherit outputs. Marius Bakke 2018-11-24bootstrap: Force i686-linux for bootstrap-tarballs....* gnu/packages/make-bootstrap.scm (%mescc-tools-static): Force i686-linux for bootstrap-tarballs. (%mes-minimal): Likewise. Remove i686-linux cross-compiler dependency. * gnu/packages/commencement.scm (mes-boot): Support strict i686-linux build on x86_64. Jan Nieuwenhuizen 2018-11-18bootstrap: Update %bootstrap-tarballs....* gnu/packages/make-bootstrap.scm (%bootstrap-tarballs): Update to use %mescc-tools-bootstrap-tarball, %mes-bootstrap-tarball, %linux-libre-headers-bootstrap-tarball. Jan Nieuwenhuizen 2018-11-18bootstrap: Add %mes-minimal....%mes-minimal introduces a Mes for bootstrap that does not depend on graphviz, perl, and texinfo and thus does not build any documentation. This removes ~100 dependencies from bootstrap-tarballs. * gnu/packages/make-bootstrap.scm (%mes-minimal): New variable. (%mes-minmal-stripped): Rename from %mes-stripped. (%mes-bootstrap-tarball): Update. Jan Nieuwenhuizen 2018-11-18bootstrap: Add mescc-tools-static, mescc-tools-static-tarball....* gnu/packages/make-bootstrap.scm (%mescc-tools-static, %mescc-tools-bootstrap-tarball): New variable. Jan Nieuwenhuizen 2018-10-21bootstrap: Add %mes-stripped, %mes-bootstrap-tarball....* gnu/packages/make-bootstrap.scm (%mes-stripped): New variable. (%mes-bootstrap-tarball): New variable. * gnu/packages/mes.scm: Oops, remove stray (gnu packages commencement) module include. Jan Nieuwenhuizen 2018-09-23bootstrap: Replace GNU toolchain seeds with Mes for i686-linux....* gnu/packages/bootstrap.scm (%bootstrap-inputs)[i686-linux]: Replace %bootstrap-gcc, %bootstrap-binutils, %bootstrap-glibc with %mescc-tools-seed, %mes-seed, %srfi-43 and %tinycc-seed. * gnu/packages/make-bootstrap.scm (%bootstrap-tarballs)[i686-linux]: Replace gcc-tarball, binutils-tarball, glibc-tarball with %mescc-tools-seed, %mes-seed, %srfi-43 and %tinycc-seed. * gnu/packages/commencement.scm (%bootstrap-inputs+toolchain)[i686-linux]: Add glibc-mesboot, binutils-mesboot, gcc-wrapper, gcc-mesboot. (file-boot0)[i686-linux]: Disable strip-binaries?, validate-runpath?. (libstdc++-boot0)[i686-linux]: Add libtool install workarourd: copy libstdc++.so.0.0.20 from gcc-mesboot. (gcc-boot0)[i686-linux]: Add libtool install workaround: touch libcc1.so.0.0.0, libcc1plugin.so.0.0.0. (perl-boot0): Disable validate-runpath?. (bison-boot0)[i686-linux]: Do not use ranlib -D. Jan Nieuwenhuizen 2018-09-23gnu: Add linux-libre-headers-bootstrap-tarball....* gnu/packages/make-bootstrap.scm (%linux-libre-headers-stripped): New variable. (%linux-libre-headers-bootstrap-tarball): New variable. Jan Nieuwenhuizen 2018-08-21gnu: bootstrap-tarballs: Adjust to static outputs of zlib and libunistring....* gnu/packages/make-bootstrap.scm (%gcc-static)[inputs]: Add ZLIB:STATIC. (%guile-static)[inputs]: Add LIBUNISTRING:STATIC. Marius Bakke 2018-04-05gnu: make-bootstrap: Inherit tar arguments in %static-inputs....* gnu/packages/make-bootstrap.scm (%static-inputs)[tar]: Use SUBSTITUTE-KEYWORD-ARGUMENTS so #:make-flags are inherited. Marius Bakke