mattn / gom

Go Manager - bundle for go
1.38k stars 92 forks source link

Can not work in Go1.7 and more? #83

Closed shamaton closed 7 years ago

shamaton commented 8 years ago

Hello. @mattun @h3poteto

Vendoring could not work in my project. I got this package(gom) and built my project today.

I think that this fix may be inappropriate. https://github.com/mattn/gom/pull/81

When did vendoring behavior change? I could not find this release note. If you can, I would like to teach me. https://blog.golang.org/go1.7

Sincerely,

-- detail Using version is 1.7.3

GOPATH setting

GOPATH=/path/to/project:/path/to/project/lib

Error sample

app/app.go:26:2: cannot find package "github.com/labstack/echo" in any of:
    /path/to/project/src/vendor/github.com/labstack/echo (vendor tree)
    /usr/local/go/src/github.com/labstack/echo (from $GOROOT)
    /path/to/project/src/github.com/labstack/echo (from $GOPATH)
    /path/to/project/lib/src/github.com/labstack/echo

--

英語だと説明不足感があるので日本語で補足します。 下記バージョンだと、Go1.7.3の環境においてvendor/でビルドできました。 https://github.com/mattn/gom/commit/393e714d663c35e121a47fec32964c44a630219b

プルリクエスト(#81)のエラーを見ていると、vendor treeに関するエラー表示がないため、 build/install時にvendorへの参照がおこなわれていないのではないかと思います。 (おそらくGOPATHにvendorが含まれている)

確認いただけると、助かります。 よろしくお願いします。

mattn commented 8 years ago

gom は最新版をお使いでしょうか?

shamaton commented 8 years ago

今日まっさらな環境でgo getし、ハッシュも確認しました。 最新版だと思います。

mattn commented 7 years ago

GO15VENDOREXPERIMENT を設定されておられたりしますか?

mattn commented 7 years ago

https://github.com/mattn/gom/commit/c54b80f6c7b9ed05e1abae7e90de5e31cb7bcbf5

修正を入れてみました。go1.7.3 は環境変数すら見ない要にしました。確認頂けますか。

shamaton commented 7 years ago

確認ありがとうございます。 挙動に変更はなくエラーになりました。

GO15VENDOREXPERIMENT を設定されておられたりしますか?

いえ、設定していません。

このissueなのですが、修正を提案しているというよりも、

81

の修正が不要ではないか、という確認でした。

app/app.go:26:2: cannot find package "github.com/labstack/echo" in any of:
    /path/to/project/src/vendor/github.com/labstack/echo (vendor tree)

vendorへの参照が行われている場合、上記のようなエラーが表示されると思うのですが、#81では表示されていません。 vendor/srcを見に行くようになったという根拠はどこから来ているのかご存知でしょうか。

h3poteto commented 7 years ago

確かに……、vendor treeへの参照に関するエラーが出ていないですね。

今まっさらな環境にgo1.7.3を入れなおして、gomを https://github.com/mattn/gom/commit/393e714d663c35e121a47fec32964c44a630219b のものにしてみたところ、やはり以前と同じエラーになります。 相変わらずvendor treeに関するエラーは出ません、これがなぜ出ないのかがわからない……。

mattn commented 7 years ago

原因が分かったと思います。

mattn commented 7 years ago

ちょっと動きを変えました。

基本 vendor の下は src を置かない(ただし bin/pkg はあり)フォルダ構成とし

となる様にしました。

shamaton commented 7 years ago

@mattn ありがとうございます。 参照エラーが解消されました。

@h3poteto

$GOPATH/src/main.go`

のような配置をされている場合は参照されないようです。

h3poteto commented 7 years ago

@shamaton ありがとうございます。 むしろGOPATH配下にプロジェクトソースがないとgoのvendoring機能が動いてくれないようで、そちらの問題でした。 なので,むしろ

$ cd $GOPATH
$ tree src
src
└── vendor_prj
    ├── Gomfile
    ├── main.go
    └── vendor
        ├── github.com
        │   └── spf13
        │       └── pflag
        └── pkg

という配置で参照されるようになりました。

以前、go1.5とgomの組み合わせだった時は、 _vendor ディレクトリを作ってgoのvendoringに頼らずに参照していたため、GOPATHと別の場所にプロジェクトソースを置いていたのが問題でした。 ご迷惑をお掛けしました。 :bowing_man:

mattn commented 7 years ago

closable?

On 11/19/16, h3poteto notifications@github.com wrote:

@shamaton ありがとうございます。 むしろGOPATH配下にプロジェクトソースがないとgoのvendoring機能が動いてくれないようで、そちらの問題でした。 なので,むしろ

$ cd $GOPATH
$ tree src
src
└── vendor_prj
    ├── Gomfile
    ├── main.go
    └── vendor
        ├── github.com
        │   └── spf13
        │       └── pflag
        └── pkg

という配置で参照されるようになりました。

以前、go1.5とgomの組み合わせだった時は、 _vendor ディレクトリを作ってgoのvendoringに頼らずに参照していたため、GOPATHと別の場所にプロジェクトソースを置いていたのが問題でした。 ご迷惑をお掛けしました。 :bowing_man:

You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub: https://github.com/mattn/gom/issues/83#issuecomment-261696886

shamaton commented 7 years ago

@h3poteto いえいえ。 解決したようで何よりです 👍

@mattn
ご対応ありがとうございました!

aep commented 7 years ago

@mattn can't really read japaneese. Is this the same issue? trying to use gom on circleci. the same thing works on my computer.

ubuntu@box495:~/liberator$ gom install
downloading ....
ubuntu@box495:~/liberator$ gom build
api.go:15:5: cannot find package "github.com/aep/go-segments" in any of:
    /usr/local/go/src/gopkg.in/redis.v5 (from $GOROOT)
    /home/ubuntu/liberator/vendor/src/gopkg.in/redis.v5 (from $GOPATH)
    /home/ubuntu/liberator/src/gopkg.in/redis.v5
    /home/ubuntu/.go_workspace/src/gopkg.in/redis.v5
    /usr/local/go_workspace/src/gopkg.in/redis.v5

ubuntu@box495:~/liberator$ ls vendor/
bin  github.com  golang.org  gopkg.in  pkg

ubuntu@box495:~/liberator$ go version
go version go1.7.3 linux/amd64
mattn commented 7 years ago

Did you update gom latest? go get -u github.com/mattn/gom If you set GO15VENDOREXPERIMENT, unset it.

aep commented 7 years ago

@mattn yes (circleci redownloads it every time), and no its not set

h3poteto commented 7 years ago

@aep Go vendoring function works only under $GOPATH.

I guess that your GOPATH is /home/ubuntu/.go_workspace, and your source code is located in /home/ubuntu/liberator. Maybe your source code is not located under GOPATH. So, go vendoring function is not working.

Please copy your source code under $GOPATH, like this https://robots.thoughtbot.com/configure-circleci-for-go.

aep commented 7 years ago

i'm using gom to avoid gopath :( allright, i guess its not possible then