D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2016年05月

buildersconの #1 開催の目処が少しずつ立ってきた。問題が起きなければ多分12月に一回小さめのカンファレンスを開催する予定。ゲストをこれまでのYAPC系統では見られなかったタイプの人にして、一般公募はこれまでどうようの人達に向けた感じにしたいと漠然と考えている。

DSC_0652


… というわけで、buildersconのチームと話してたら肉が焼きたくなった。特に理由はない。恒例の病気みたいなものです。去年も発作的に肉を焼きました続きを読む
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

moznion.hatenadiary.com


別にDocker使ったっていいんだけど、こっちでもできますよ、ってことで、Dockerもシェルスクリプトも使わない方法の説明。元記事を読んでわかるのは:

1. makeを使ってる
2. GOOS/GOARCHを設定してクロスコンパイルしている(gox等を使っていない)
3. Dockerであげた同一イメージ上で全てのクロスコンパイル結果を吐いている

ということなので、であれば別にローカルの環境でクロスコンパイルしても何の差もなさそう。別の環境をたててクロスコンパイルしたい場合もあるが、それは例えば cgoを使っている os.User 関連のコードをコンパイルするとか、そういう時だしその場合はそれぞれのプラットフォームごとに別のホスト上でコンパイルする必要がある。それをする必要がないなら go 1.5 以降であればもうGOOS/GOARCHを設定するだけで充分。

makeはプラットフォームごとの出力を作るなんてお手の物で、pecoではMakefile内でまず以下のように明示的に現環境でのGOOS/GOARCHを定義して、

peco-make-vars


必要な変数を与えてやれば適当なプラットフォーム用のバイナリを吐いてくれるルールを作ってる

peco-build-rule-main

このルールだけであとはこれを対象GOOS/GOARCHに対して実行するだけ。手動で実行したかったら "make build GOOS=darwin GOARCH=amd64"とかするだけ。でももちろんそんなことを手動で実行したくなりので、それを内包したルールを何個か作る。

以下ではループを使ってもいいんだけど、僕の「なんかまちがったのを設定した場合エラーになってほしい」というこだわりから全て別ルールにしてる

peco-build-rules


あとはこれを依存対象としたルールを作れば勝手に全部ビルドされる。以下の場合は"make all"とすれば全てのバイナリが作成される。もちろん一個だけ実行したい場合は"make build-darwin-amd64"とかを実行してもいい

peco-build-all

こちらからは以上です
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

このページのトップヘ