Go: x/tools/cmd/stringer: no se pueden importar dependencias de proveedores

Creado en 10 ago. 2017  ·  3Comentarios  ·  Fuente: golang/go

Responda estas preguntas antes de enviar su problema. ¡Gracias!

¿Qué versión de Go estás usando ( go version )?

ir a la versión go1.8.3 linux/amd64

¿Qué sistema operativo y arquitectura de procesador está utilizando ( go env )?

UbuntuLinux, amd64

¿Qué hiciste?

Se intentó ejecutar golang.org/x/tools/cmd/stringer en las dependencias de proveedores de importación de paquetes

¿Qué esperabas ver?

La herramienta funciona como se esperaba.

¿Qué viste en su lugar?

Si bien 'ir a compilar' y todas las demás herramientas parecen estar bien con las dependencias que se venden en $GOPATH/src/vendor, Stringer falla con errores de importación:

$ 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

Comentario más útil

@ChimeraCoder Desbloqueé el #10249.

Todos 3 comentarios

También nos encontramos con este problema. Solo se manifiesta en Go 1.8, como se puede ver aquí: https://travis-ci.org/stripe/veneur/builds/278659663. Es reproducible localmente cambiando el Dockerfile en la solicitud de extracción correspondiente para usar Go 1.8 en lugar de Go 1.9. Ocurre incluso si el paquete que no puede encontrar (en este caso, github.com/gogo/protobuf/proto ) está instalado con go install .

El importador de stringer usa el importador Go predeterminado para 1.8, pero no para 1.9 .

Ejecutar go install en el proyecto actual (no en el paquete que no puede importar, sino en el que se vende la importación) antes de ejecutar Stringer soluciona el problema.

Traté de intentar arreglar esto en stringer , aunque no estoy seguro de por qué el comportamiento de go/importer cambió entre 1.8 y 1.9 de esta manera. ¿Podría alguien señalarme en la dirección correcta aquí?

Este problema se solucionó en Go 1.10, pero se reintrodujo recientemente. Estoy bastante seguro de que la confirmación que lo introdujo fue https://github.com/golang/tools/commit/ffe88906718454e356e61776b54256e873fc133b , que revierte CL 40403.

La confirmación se revirtió para resolver https://github.com/golang/go/issues/25650 , aunque vuelve a introducir https://github.com/golang/go/issues/10249 , que está relacionado.

No puedo comentar sobre ese problema porque originalmente estaba bloqueado debido a la antigüedad; se reabrió hace dos días, pero aún está limitado a los colaboradores.

@ChimeraCoder Desbloqueé el #10249.

¿Fue útil esta página
0 / 5 - 0 calificaciones