Go: x/tools/cmd/stringer: Herstellerabhängigkeiten können nicht importiert werden

Erstellt am 10. Aug. 2017  ·  3Kommentare  ·  Quelle: golang/go

Bitte beantworten Sie diese Fragen, bevor Sie Ihr Problem einreichen. Danke!

Welche Version von Go verwenden Sie ( go version )?

go-version go1.8.3 linux/amd64

Welches Betriebssystem und welche Prozessorarchitektur verwenden Sie ( go env )?

Ubuntu-Linux, amd64

Was hast du getan?

Es wurde versucht, golang.org/x/tools/cmd/stringer auf einem Paket auszuführen, das Herstellerabhängigkeiten importiert

Was hast du erwartet zu sehen?

Das Tool funktioniert wie erwartet

Was hast du stattdessen gesehen?

Während 'go build' und alle anderen Tools mit den in $GOPATH/src/vendor angebotenen Abhängigkeiten in Ordnung zu sein scheinen, schlägt stringer mit Importfehlern fehl:

$ 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

Hilfreichster Kommentar

@ChimeraCoder Ich habe #10249 freigeschaltet.

Alle 3 Kommentare

Wir beschäftigen uns auch mit diesem Problem. Es manifestiert sich nur unter Go 1.8, wie hier zu sehen ist: https://travis-ci.org/stripe/veneur/builds/278659663. Es ist lokal reproduzierbar, indem das Dockerfile in der entsprechenden Pull-Anforderung geändert wird, um Go 1.8 anstelle von Go 1.9 zu verwenden. Es passiert sogar, wenn das Paket, das es nicht finden kann (in diesem Fall github.com/gogo/protobuf/proto ), mit go install installiert wird.

Der String-Importer verwendet den standardmäßigen Go-Importer für 1.8, aber nicht für 1.9 .

Das Ausführen go install im aktuellen Projekt (nicht in dem Paket, das nicht importiert werden kann, sondern in dem Paket, in dem der Import angeboten wird) vor dem Ausführen von Stringer behebt das Problem.

Ich habe versucht, dies in stringer zu beheben, obwohl ich mir nicht sicher bin, warum sich das Verhalten von go/importer selbst zwischen 1.8 und 1.9 auf diese Weise geändert hat. Könnte mich hier jemand in die richtige Richtung weisen?

Dieses Problem wurde in Go 1.10 behoben, aber es wurde kürzlich wieder eingeführt. Ich bin mir ziemlich sicher, dass das Commit, das es eingeführt hat, https://github.com/golang/tools/commit/ffe88906718454e356e61776b54256e873fc133b war, das CL 40403 zurücksetzt.

Das Commit wurde zurückgesetzt, um https://github.com/golang/go/issues/25650 zu lösen, obwohl es https://github.com/golang/go/issues/10249 wieder einführt, was verwandt ist.

Ich kann mich zu diesem Problem nicht äußern, da es ursprünglich aus Altersgründen gesperrt war - es wurde vor zwei Tagen wieder geöffnet, ist aber immer noch auf Mitarbeiter beschränkt.

@ChimeraCoder Ich habe #10249 freigeschaltet.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen