编译go及go get进度显示

一、首先附上编译完成能显示go get进度的Go包:

centos7直接解压版go:http://pan.baidu.com/s/1mik3cI8

windows7直接解压版go:http://pan.baidu.com/s/1jIaxKEE

 

一、编译之前修改go get进度显示:

因为beego在github.com上的包有点大, 所以 go get github.com/leanote/leanote/app 会很慢, 这个会执行几分钟或更长, 不知道的朋友还以为卡死了. 找了下 go get 没有一个选项可以输出进度的, 于是决定修改golang源码(别以为很有技术含量, 还不是go代码?).

看了下golang的源码 src/cmd/go 下是go命令的源码, 其中, get.go是go get命令的代码, build.go 是go build的代码.

刚开始走了点弯路, 想着改变get.go来显示进度, 无果之后想了下, go get 其实就是调用git , hg, svn的命令从仓库中下载的, 由此思路找到vcs.go(vcs全称为version control system), 果然这里面包含了调用git, hg, svn的命令. 问题迎刃而解:

  1. 修改git clone命令, 添加 --progress选项, 使其输出进度
  2. 修改cmd.Run()执行的地方, 使其将输出定位到标准输出流上

1. 修改git clone命令, 找到如下代码, 在createdCmd修改为 clone --progress {repo} {dir}

其它命令hg, svn...添加进度方法类似

// vcsGit describes how to use Git.var vcsGit = &vcsCmd{
	name: "Git",
	cmd:  "git",

	createCmd:   "clone {repo} {dir}", // 此处修改为 clone --progress {repo} {dir}
	downloadCmd: "pull --ff-only"}

2. 重定向输出流

找到run1()方法, 在 cmd.Stderr = &buf 下添加两行, 如:

var buf bytes.Buffer
	cmd.Stdout = &buf
	cmd.Stderr = &buf
	cmd.Stdout = os.Stdout // 重定向标准输出
	cmd.Stderr = os.Stderr // 重定向标准输出
	err = cmd.Run()

Ok, 搞定, 接下来执行golang源码 src下的 all.bash 重新编译golang, 编译要些时间, 编译完后使用go get 试试:

06182447_WeKS.jpg

看到进度条就不用担心了吧.

之前修改golang源码使其关闭变量未使用, 包未使用的错误 : 

关闭golang的 variable declared but not used 和 package imported but not used

 

二:window7下面编译Go:

06182447_ueb3.jpg

 

复制一份go源码:

06182447_wfFV.jpg

 

设置GOROOT_BOOTSTRAP=C:\Go1.7

06182447_Tzgw.jpg

 

环境变量设置完毕需要重启生效!!!

 

 

06182448_QQq6.jpg

 

06182448_BUMt.jpg

 

下载安装:MinGW - Minimalist GNU for Windows

 

https://sourceforge.net/projects/mingw/

06182448_cHVe.jpg

 

06182448_i5Qu.jpg

 

 

也可以直接下载TDM-GCC MinGW Compiler

06182448_Nzsb.jpg

 

06182448_xEcE.jpg

 

添加到path中:

set PATH=.;C:\TDM-GCC-64\bin\

 

06182448_8byR.jpg

 

06182448_YKMe.jpg

 

 

 

三:Centos7下面编译Go:

linux同理,执行编译脚本为src下的sh all.bash

06182448_NG2g.jpg

 

编译完毕,执行go get:

06182448_S1ZF.jpg

 

 

 

转载于:https://my.oschina.net/tantexian/blog/728849

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值