Go: x/tools/cmd/stringer: não pode importar dependências fornecidas

Criado em 10 ago. 2017  ·  3Comentários  ·  Fonte: golang/go

Por favor, responda a estas perguntas antes de enviar seu problema. Obrigado!

Qual versão do Go você está usando ( go version )?

go versão go1.8.3 linux/amd64

Qual sistema operacional e arquitetura de processador você está usando ( go env )?

Ubuntu Linux, amd64

O que você fez?

Tentativa de executar golang.org/x/tools/cmd/stringer no pacote importando dependências de fornecedores

O que você esperava ver?

A ferramenta funciona como esperado

O que você viu em vez disso?

Enquanto 'go build' e todas as outras ferramentas parecem boas com dependências vendidas em $GOPATH/src/vendor, stringer falha com erros de importação:

$ go build plinth/auth
$ go get golang.org/x/tools/cmd/stringer
$ go generate plinth/auth
stringer: checking package: auth.go:8:2: could not import golang.org/x/net/context (can't find import: vendor/golang.org/x/net/context)
src/plinth/auth/auth.go:37: running "stringer": exit status 1
$ stringer -type Role $GOPATH/src/plinth/auth
stringer: checking package: [...]/src/plinth/auth/auth.go:8:2: could not import golang.org/x/net/context (can't find import: vendor/golang.org/x/net/context)
$ ls $GOPATH/src/vendor/golang.org/x/net/context
context.go  context_test.go  ctxhttp  go17.go  go19.go  pre_go17.go  pre_go19.go  withtimeout_test.go
Tools

Comentários muito úteis

@ChimeraCoder eu desbloqueei #10249.

Todos 3 comentários

Estamos enfrentando esse problema também. Ele só se manifesta no Go 1.8, como pode ser visto aqui: https://travis-ci.org/stripe/veneur/builds/278659663. É reproduzível localmente alterando o Dockerfile na solicitação pull correspondente para usar Go 1.8 em vez de Go 1.9. Isso acontece mesmo que o pacote que não consegue encontrar (neste caso, github.com/gogo/protobuf/proto ) esteja instalado com go install .

O importador de stringer usa o importador Go padrão para 1.8, mas não para 1.9 .

Executar go install no projeto atual (não no pacote que ele não pode importar, mas naquele em que a importação é fornecida) antes de executar o Stringer corrige o problema.

Eu tentei consertar isso em stringer , embora não tenha certeza de por que o comportamento de go/importer mudou entre 1,8 e 1,9 dessa maneira. Alguém poderia me apontar na direção certa aqui?

Esse problema foi corrigido no Go 1.10, mas foi reintroduzido recentemente. Tenho certeza de que o commit que o introduziu foi https://github.com/golang/tools/commit/ffe88906718454e356e61776b54256e873fc133b , que reverte CL 40403.

O commit foi revertido para resolver https://github.com/golang/go/issues/25650 , embora reintroduza https://github.com/golang/go/issues/10249 , que está relacionado.

Não posso comentar sobre esse problema porque ele foi originalmente bloqueado devido à idade - foi reaberto há dois dias, mas ainda é limitado a colaboradores.

@ChimeraCoder eu desbloqueei #10249.

Esta página foi útil?
0 / 5 - 0 avaliações