ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°Π΄Π°Π²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
go version
)?Π²Π΅ΡΡΠΈΡ go go1.8.3 linux/amd64
go env
)?Π£Π±ΡΠ½ΡΡ Π»ΠΈΠ½ΡΠΊΡ, amd64
ΠΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΡΡΡΠΈΡΡ golang.org/x/tools/cmd/stringer Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ².
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ
Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Β«go buildΒ» ΠΈ Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠ³Π»ΡΠ΄ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π² $GOPATH/src/vendor, ΡΡΡΠΈΠ½Π³Π΅Ρ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΈΠΌΠΏΠΎΡΡΠ°:
$ 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
ΠΡ ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΡΠΎ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Go 1.8, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π΄Π΅ΡΡ: https://travis-ci.org/stripe/veneur/builds/278659663. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Dockerfile Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π° Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ , ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Go 1.8 Π²ΠΌΠ΅ΡΡΠΎ Go 1.9. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ github.com/gogo/protobuf/proto
), ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Ρ go install
.
ΠΠΌΠΏΠΎΡΡΠ΅Ρ ΡΡΡΠΈΠ½Π³Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠ΅Ρ Go ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ 1.8, Π½ΠΎ Π½Π΅ Π΄Π»Ρ 1.9 .
ΠΠ°ΠΏΡΡΠΊ go install
Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ (Π½Π΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, Π° Π² ΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ) ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ Stringer ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π² stringer
, Ρ
ΠΎΡΡ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ go/importer
ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρ 1.8 ΠΈ 1.9. ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ?
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π° ββΠ² Go 1.10, Π½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ. Π― ΠΏΠΎΡΡΠΈ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» Π΅Π³ΠΎ, Π±ΡΠ» https://github.com/golang/tools/commit/ffe88906718454e356e61776b54256e873fc133b , ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ CL 40403.
ΠΠΎΠΌΠΌΠΈΡ Π±ΡΠ» ΠΎΡΠΌΠ΅Π½Π΅Π½, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ https://github.com/golang/go/issues/25650 , Ρ ΠΎΡΡ ΠΎΠ½ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ https://github.com/golang/go/issues/10249 , ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ.
Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½Π° ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»Π° Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π° ΠΈΠ·-Π·Π° Π²ΠΎΠ·ΡΠ°ΡΡΠ° β ΠΎΠ½Π° Π±ΡΠ»Π° Π²Π½ΠΎΠ²Ρ ΠΎΡΠΊΡΡΡΠ° Π΄Π²Π° Π΄Π½Ρ Π½Π°Π·Π°Π΄, Π½ΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ°Π²ΡΠΎΡΠΎΠ².
@ChimeraCoder Π― ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π» #10249.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@ChimeraCoder Π― ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π» #10249.