Go1.12に上げた時のメモ
今の会社のメインで開発しているリポジトリのGoのバージョンを上げた時のメモを残しておこうと思います。検索にヒットして誰かの少しでも役に立てれば幸い
まずはざっくり
Go 1.12 Release Notes - The Go Programming Language
まずはざっくり、リリースノートを眺めて大枠を抑えよう!
基本的には1系なのでGo 1 promise of compatibility in mind.
の元に大体は大丈夫だろうなぁーっとなんとなく思っていた。
Go 1 and the Future of Go Programs - The Go Programming Language
んで、大きめの変更で担当のリポジトリに関係しそうなところはModules
ぐらいだなと思い作業した。
それでもちょっとコケた部分はあった
そんな大してハマった訳ではないが、気になったところをまとめておく
1. clang
コマンドが見つからない問題
Go1.12に上げた後にtestを走らせてみたら下記のようなエラーが出力された。でも結論からいうとGo1.12と関係はないです。自分のマシンの設定の問題でした。
# runtime/cgo pyenv: clang: command not found The `clang' command exists in these Python versions: anaconda3-4.4.0/envs/xxxx
ちなみにその時のgo envの結果は下記
GCCGO="gccgo" CC="clang" CXX="clang++"
特に問題ないはずですよね〜。
なぜか、clangコマンドが見当たらない問題ですが、エラーログからすぐにわかったのですが、自分のマシンでは機械学習関連でPythonを入れています。
しかも、anaconda経由で。
それで.zshrcに下記のようにPython関連の設定を仕込んでいます
export PYENV_ROOT=$HOME/.pyenv export PATH=$PYENV_ROOT/bin:$PATH eval "$(pyenv init -)" export PATH="$PYENV_ROOT/versions/anaconda3-4.4.0/bin/:$PATH"
こいつのおかげでclang
のパスが/Users/xxxx/.pyenv/shims/clang
となっていました。
普通は/usr/bin/clang
になっているはずです。
致し方ないので.zshrcのexport設定をいちいちいじりながら対応しています。
あまり詳しく追いかけていないけど、anacondaじゃなくて、pyenvの方がうまくあっていないのかも...
pyenv,anacondaあたりでmacローカルマシンで機械学習関連をやっているGopherの方は注意です!!
自分は最近Python関連も積極的にいじるようになって、それ用の環境を整えた所がちょっとバッティングしてしまったという感じです。
2. プライベートリポジトリのgo get
何も気にせずにやると下記のようなエラーが出る by circleci
git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /go/pkg/mod/cache/vcs/217ea393f42f5804c253aab4ec165a343ea79430ab82e5d628514a79a78c9a53: exit status 128: ERROR: Repository not found. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
circleciの設定で下記は実施済み
name: "Setting netrc" command: | echo "machine github.com" >> /home/circleci/.netrc echo "login ${GITHUB_ACCESS_TOKEN}" >> /home/circleci/.netrc
でもなぜか効いていない
致し方なく、下記のFAQで書かれているgitconfigでの解決法を試したら解決したのでこちらの方法にした
Frequently Asked Questions (FAQ) - The Go Programming Language
まぁsshでの接続のが早いだろうし、良いか😅