Hyperledger Fabric 2.0 debug 环境准备

0. 环境


Fabric v2.0.1
go version go1.13.7 darwin/amd64
GoLand 2019.3

1. 转换为 go module


也可不使用 go module 管理依赖,设置 GO111MODULE=off

到目前为止 Fabric 还没有启用 go module 管理依赖,首先将工程转换为 go module 工程。

go mod init 会根据 Gopkg.tomlGopkg.lock 生成依赖并添加到 go.mod 中,期间会访问 google.com 的一些包,go mod init 过程中不会使用 GOPROXY,因此设置HTTP_PROXY ,否则 timeout 的依赖解析不会添加 go.mod 中,后续可能下载不匹配的依赖版本。

cd github.com/hyperledger/fabric
git checkout v2.0.1
HTTP_PROXY=http://127.0.0.1:8010 HTTPS_PROXY=http://127.0.0.1:8010 go mod init

个人理解 GoLand 即使启用了 Vendoring mode 还是会以 go module 为主管理 vendor 目录,可能误更新 vendor 目录。可以通过 git status 检查vendor 是否改动。

编译


make orderer 遇到如下错误:

Building build/bin/orderer
GOBIN=/Users/dian/workspaces/go_workspace/src/github.com/hyperledger/fabric/build/bin go install "" -tags "" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=2.0.1 -X github.com/hyperledger/fabric/common/metadata.CommitSHA=1cfa5da98 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger" github.com/hyperledger/fabric/cmd/orderer
go: downloading golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4
go: extracting golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4
go: gopkg.in/fsnotify/fsnotify.v1@v1.4.7 used for two different module paths (gopkg.in/fsnotify.v1 and gopkg.in/fsnotify/fsnotify.v1)
make: *** [build/bin/orderer] Error 1

解决办法,构建时加上 -mod=vendor 选项,增加GO_BUILD_FLAGS变量修改 Makefile 209行如下:

...
GO_BUILD_FLAGS ?= -mod=vendor
$(BUILD_DIR)/bin/%: GO_LDFLAGS = $(METADATA_VAR:%=-X $(PKGNAME)/common/metadata.%)
$(BUILD_DIR)/bin/%:
	@echo "Building $@"
	@mkdir -p $(@D)
	GOBIN=$(abspath $(@D)) go install "$(GO_BUILD_FLAGS)" -tags "$(GO_TAGS)" -ldflags "$(GO_LDFLAGS)" $(pkgmap.$(@F))
	@touch $@
...

2. Fabric 网络


使用 sampleconfig 搭建 Fabric 开发调试网络

Bash 脚本

MacLinux 环境可通过脚本 快速准备环境。Windows Cygwin 未经测试

脚本使用方式:

  1. 新建一个目录,如 /tmp/fabric
  2. 将下面的 fab.sh 内容拷贝到新建目录下 fab.sh 文件中
  3. 设置执行权限 chmod u+x fab.sh
  4. 快速创建 ./fab.sh new </path/to/fabric source code>
  5. fab.sh 生成 utils.sh 辅助脚本可用于简化操作 source utils.sh ,之后使用其提供的函数
  6. 清理 ./fab.sh clean

fab.sh

#!/bin/bash

echo
echo '    ______      __         _     '
echo '   / ____/___ _/ /_  _____(_)____'
echo '  / /_  / __ `/ __ \/ ___/ / ___/'
echo ' / __/ / /_/ / /_/ / /  / / /__  '
echo '/_/    \__,_/_.___/_/  /_/\___/  '
echo

# Print the usage message
function usage() {
   
  echo "Usage: "
  echo "  $0 new /path/to/fabric-source"
  echo "  $0 clean"
}

function sedi () {
   
    case $(uname -s) in
        *[Dd]arwin* | *BSD* ) sed -i '' "$@";;
        *) sed -i "$@";;
    esac
}

function fabric::generateutils() {
   
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值