你正在使用的Go版本是什么( go version
)?
go version go1.12beta2 darwin/amd64
这个问题在最新版本的发布中是否重现?
是的。
你正在使用什么操作系统和处理器架构( go env
)?
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/dottedmag/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/dottedmag/go"
GOPROXY=""
GORACE=""
GOROOT="/Users/dottedmag/tectonic/_deps/go-1.12beta2"
GOTMPDIR=""
GOTOOLDIR="/Users/dottedmag/tectonic/_deps/go-1.12beta2/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/bw/6hyp_vyj68v973qbhlbcvlcr0000gn/T/go-build721712428=/tmp/go-build -gno-record-gcc-switches -fno-common"
你做了什么?
我在一个模块内有一个 GOROOT
(每个仓库的Go安装,用于封闭构建)。我运行 goimports
,它试图解析一个包(比如, reflect
),它从 GOROOT
加载包,它们最终以当前模块内的路径为前缀。
你期望看到什么?
package mypkg
import "reflect"
type x reflect.Type
你看到了什么?
package mypkg
import "my.module/_deps/go-1.12beta2/src/reflect"
type x reflect.Type
如何修复
[补丁被@bcmills删除。请发送PR或CL,以便我们可以验证CLA合规性。]
4条答案
按热度按时间polhcujo1#
是的,这是一个bug。我们不能在问题中接受补丁,但PR或CL是受欢迎的。参见https://golang.org/doc/contribute.html(一个测试也是好的)。
jgwigjjp2#
我想解决这个bug,如果还没有人处理的话。
uubf1zoe3#
绝对的。
我认为修复的理想位置是
internal/gopathwalk/walk.go
;在某个地方,它应该在遍历类型为 RootGOPATH 的根时跳过 $GOROOT。当前的 API,只有扁平的 Roots 列表,可能会让这变得尴尬。将 GOROOT 显式传递给 Walk 可能是有意义的。eagi6jfj4#
我已经有一段时间没看到这个bug了。过时了吗?