;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Pierre Neidhardt ;;; Copyright © 2019 Tobias Geerinckx-Rice ;;; ;;; 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 . (define-module (gnu packages hyperledger) #:use-module (ice-9 match) #:use-module (guix build-system go) #:use-module (guix build-system trivial) #: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 curl) #:use-module (gnu packages docker) #:use-module (gnu packages golang) #:use-module (gnu packages version-control)) (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))) ests/records.scm ("define-record-type* & thunked & this-record") ("define-record-type* & thunked & default & this-record") ("define-record-type* & thunked & inherit & this-record"): New tests. 2019-01-22records: Detect duplicate field initializers.Ludovic Courtès * guix/records.scm (report-duplicate-field-specifier): New procedure. (make-syntactic-constructor): Call it. * tests/records.scm ("define-record-type* & duplicate initializers"): New test. Co-authored-by: Mark H Weaver <mhw@netris.org> 2018-08-31records: Adjust to test changes in 'record-abi-mismatch-error'.Ludovic Courtès Fixes a test failure introduced in de5cbd4a38a33e0412f1c481fe8e01a871dc13e5. * guix/records.scm (abi-check): Refer to TYPE in an unquoted context so we get at the RTD. * tests/records.scm ("ABI checks"): Adjust 'catch' handler to changes in the 'record-abi-mismatch-error' arguments. 2018-05-23records: Insert record type ABI checks in constructors.Ludovic Courtès * guix/records.scm (print-record-abi-mismatch-error): New procedure. <top level>: Add 'set-exception-printer!' call. (current-abi-identifier, abi-check): New procedures. (make-syntactic-constructor): Add #:abi-cookie parameter. Insert calls to 'abi-check'. (define-record-type*)[compute-abi-cookie]: New procedure. Use it and emit a definition of the 'current-abi-identifier' for TYPE. * tests/records.scm ("ABI checks"): New test. 2016-07-14records: Improve reporting of invalid field specifiers.Ludovic Courtès Fixes <http://bugs.gnu.org/23969>. Reported by Vincent Legoll <vincent.legoll@gmail.com>. * guix/records.scm (report-invalid-field-specifier): New procedure. * tests/records.scm ("define-record-type* & wrong field specifier"): New test.