LoginSignup
0
0

More than 5 years have passed since last update.

depでのパッケージ管理で、インストール時にc/c++が必要な場合に発生する可能性があるエラーについて

Last updated at Posted at 2019-02-12

概要

depを使ってvendor内に必要パッケージをインストールするが、その過程でC/C++の開発環境を使ったパッケージがあると、それらはインストールされないので、go testなどでテストを実行する過程でエラーが発生した。

$ go test 
# .../vendor/github.com/karalabe/hid
.../vendor/github.com/karalabe/hid/hid_enabled.go:38:11: fatal error: 'hidapi/mac/hid.c' file not found
        #include "hidapi/mac/hid.c"
                 ^~~~~~~~~~~~~~~~~~
1 error generated.
FAIL    ... [build failed]

解決策

vendorの中のパッケージを消して、githubから直接git cloneするのが対症療法としては一番速い。と思ったものの、 Gopkg.tomlでの記述を工夫すれば同じく解決した。

デフォルトでは、depの仕様により、次のオプションはtrueになっている。

オプション名 機能 初期値
unused-packages 未使用パッケージを除外 true
go-tests テストコードを除外 true
non-go Go言語コード以外のファイルを除外 true

したがって、Goに関係のない(未使用 or test)部分は、自動的にvendorの中身から排除される仕組みになっている。
しかし、今回のように、Goとは関係ないが、インストールするときに依存しているパッケージも含まれている場合は、Gopkg.tomlで次のように記述すれば良い。


[[prune.project]]
    name = "github.com/karalabe/hid"
    unused-packages = false
0
0
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
0
0