Hyperledger fabric公式ソースのコンパイル


開発環境の紹介

  • UBUNTU 16.04 LTS
  • docker
  • docker-compose
  • git
  • go 1.8以上
  • fabricソースディレクトリに入り、
    $GOPATH/src/github.com/hyperledger/fabric

    コンパイル、
    make dist-clean all

    私の環境は間違っています.
    cp: cannot stat 'build/docker/gotools/bin/protoc-gen-go': No such file or directory
    Makefile:263: recipe for target 'build/image/ccenv/payload' failed
    make: *** [build/image/ccenv/payload] Error 1
    
    

    この問題はfabric環境でprotoc-gen-goという実行ファイルが見つからないため,解決策は手動で生成することである.

    コンパイル生成protoc-gen-go

    root@pony-virtual-machine:~/gopath/src/github.com# gopm get -g -d github.com/golang/protobuf/protoc-gen-go
    
    root@pony-virtual-machine:~/gopath/src/github.com/golang# go install github.com/golang/protobuf/protoc-gen-go

    もちろん前提はあなたの環境がgopmコマンドをサポートすることです.
    $GOPATH/binディレクトリの下でprotoc-gen-goを見つけることができて、このファイルをさっき間違ったディレクトリにコピーします
    root@pony-virtual-machine:~/gopath/bin# cp protoc-gen-go /root/gopath/src/github.com/hyperledger/fabric/build/docker/gotools/bin/
    

    ここで分割点
    再コンパイル.コンパイルの時間が少し長いです.最後にコンパイルエラーが発生しました.原因は分かりませんが、後の操作には影響しません.
    the following files are missing SPDX-License-Identifier headers:
    (standard input)
    
    Please replace the Apache license header comment text with:
    SPDX-License-Identifier: Apache-2.0
    Makefile:111: recipe for target 'license' failed
    make: *** [license] Error 1
    

    続行する前に、次のユニットテストでこの2つの実行ファイルが使用されるため、gocovとgocov-xmlもインストールします.

    gocovのインストール

    gopm get -g -d golang.org/x/tools/cover
    gopm get -g -d github.com/axw/gocov/gocov
    go install github.com/axw/gocov/gocov

    gocov-xmlのインストール

    gopm get -g -d github.com/AlekSi/gocov-xml
    go install github.com/AlekSi/gocov-xml

    fabricディレクトリにコピーし、
    root@pony-virtual-machine:~/gopath/bin# cp gocov gocov-xml /root/gopath/src/github.com/hyperledger/fabric/build/docker/gotools/bin/

    ユニットテストの実行

    make unit-test

    過程は貼らない.