LoginSignup
2
2

More than 5 years have passed since last update.

gopkg.in絡みで困ることになる・・・のかもしれない??

Posted at

gopkg.in便利ね

gopkg.in便利なんですが、何かのトラブルの種になっている気配があるので起稿。

詳細については未調査につき、何らかの他の要因によるかもしれません


事象1: version違いのimport

A/alpha.go
package A

import "gopkg.in/foo/bar.v2"
B/bravo.go
package B

import "gopkg.in/foo/bar.v1"

みたいなことが起きる。

  1. 最初は"gopkg.in/foo/bar.v1"で開発していた
  2. 開発メンバーはあまり意識せずgo get ./...で関連パッケージ"gopkg.in/foo/bar.v1"を手に入れている。
  3. 途中で"gopkg.in/foo/bar.v2"を使うように更新した。
  4. 誰かが、A/alpha.go をコピーして、B/bravo.goを作ろう!と考える。
  5. B/bravo.goを保存したタイミングで、goimportが走ってimport先が自動で"gopkg.in/foo/bar.v1"になってしまう。

事象2: CIが怒り出す。

「"github.com/hoge/piyo.xXXXX"なんて無いんですけど!」と怒られる。
一見、事象1のパッケージとは関係なさそうなところで起きる。
$GOPATH/src/github.com/hoge/piyo を見に行くけど、問題なさそう。
go get ./... とすると、やっぱり「"github.com/hoge/piyo.xXXXX"なんて無いんですけど!」と怒られる。

先述の事象1の状態を解消(B/bravo.goのimportを"gopkg.in/foo/bar.v2"に更新)したら、直った。

原因は調査中。

原因の根幹は未解明。

gopkgのバージョン番号がv1,v2という風に昇順な上に、goimportが若い番号のものを自動で割り当ててしまうことに原因がある・・・のかも。
同名のpackageが、違うURLで存在する場合に何らかの問題が起きる???

とりあえず一旦記事に起こしておく。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2