Introduction

TensorFlowのビルドで一躍有名になったビルドシステムBazelをインストールします。
といっても、TensorFlowではなく、別のgoogle製OSSのビルドに使いたいだけです。

Windowsでの導入記事が見つからないので自分でやってみます。
きっと会社で使うことになるでしょうし。

Explanation

まずは公式でWindowsへの導入説明を読みます。
Bazelのインストールは下記の3手法があります。

  • バイナリのダウンロード
  • Chocolatey
  • ソースから自分でビルド

今回はバイナリをダウンロードします。

Downalod

Githubでダウンロードできますので入手します。Releaseページから各自の環境に適合したものをダウンロードします。
2017/12/24現在で最新は0.9.0です。

Let’s install

適当なフォルダに展開するだけです。
そして公式ページでは

We recommend putting the binary in a directory that’s on your %PATH%.

つまり、環境変数PATH上のディレクトリに展開することを推奨します。 とのお達し。
このあたりは好みです。
今回は、C:\Program Files\Google\Bazel\bazel-0.9.0-windows-x86_64.exeに展開しました。
同じフォルダに、Bazel.exeというシンボリックリンクがあるとちょっと幸せな感じがします。

Setup!!

残念なことに、これで終わりではないです。
CMakeとかインストーラーで終わりなのに、何この面倒な感じ。
公式におけるインストール後の指示には、

  • Python 2.7またはそれ以降
  • msys2
  • msys2 パッケージ
  • Java JDK 8

が必要だと書いてあります。
げんなりします。

Python

既に私のシステムにはPythonがあるので省略します。
AnacondaなりMinicondaなりでインストールするのが簡単です。
Minicondaでしたら、インストールした際のスクリーンショット付きで記事があります。

msys2

msys2はインストーラーで提供されています。
公式ページからダウンロードでします。
msysはwikiによると、

Windows上で動作するUnixシェル(Bash)やテキスト操作ユーティリティ(gawk, sed, findutil)、ソースコードパッチ用ツール(diffutil), アーカイブツール(tar, bzip2, zlib)を統合したパッケージである。

とのこと。
ようするにPowerShellみたいな別シェルですね(適当)。

注意するのは、インストール先に、

  • 非ASCII文字
  • 空白
  • シンボリックリンク
  • ショートパス (恐らく8.3形式のことかと)

使うな、とありますので指示に従います。面倒だな。


インストール先に使う文字には注意!!


完了!!

msys2のパッケージ追加

追加のパッケージが必要とのことなので、先ほどインストールしたmsys2を起動します。
スタートメニューからMSYS2 64bitを開きます。

で、MSYS2 MSYSをクリックします。選択肢が複数あって、「うっ」って思いました。止めて欲しいね。
シェルが起動したら、

1
pacman -Syuu git curl zip unzip

と入力します。

インストールするか?と聞かれたのでyと入力

が、途中で、

はぁ!?

1
2
警告: terminate MSYS2 without returning to shell and check for updates again
警告: for example close your terminal window instead of calling exit

と出ました。
要約すると、もう一度シェルを立ち上げ直して同じ事をしろ、ってことです。
が、閉じるボタンを押下すると、処理中なのか応答が鈍いですが、

と出るので、OKで停止します。
それでも応答なしとかになったら、タスクマネージャなりAlt+F4で停止させます。
鬱陶しい….

で、再起動後、また同じコマンドを入力したら上手くいきました。
何の苦行だよ….
結構時間がかかりますので、コーヒー飲むなり風呂に入るなりして時間をつぶします。

Java JDK 8

7でもなく9でもなく、8だそうです。何、この厳密なバージョン指定。
BazelにはJDK8が埋め込まれているそうです。なので、普通に起動できたらOKでしょう。
私は起動できたので、何もしませんでした。

起動

コマンドプロンプトから、bazel.exeを起動します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$ C:\Program Files\Google\Bazel>bazel.exe
Extracting Bazel installation...
[bazel release 0.9.0]

Usage: bazel <command> <options> ...

Available commands:
analyze-profile Analyzes build profile data.
build Builds the specified targets.
canonicalize-flags Canonicalizes a list of bazel options.
clean Removes output files and optionally stops the server.
coverage Generates code coverage report for specified test targets.

dump Dumps the internal state of the bazel server process.
fetch Fetches external repositories that are prerequisites to th
e targets.
help Prints help for commands, or the index.
info Displays runtime info about the bazel server.
license Prints the license of this software.
mobile-install Installs targets to mobile devices.
print_action Prints the command line args for compiling a file.
query Executes a dependency graph query.
run Runs the specified target.
shutdown Stops the bazel server.
test Builds and runs the specified test targets.
version Prints version information for bazel.

Getting more help:
bazel help <command>
Prints help and options for <command>.
bazel help startup_options
Options for the JVM hosting bazel.
bazel help target-syntax
Explains the syntax for specifying targets.
bazel help info-keys
Displays a list of keys used by the info command.

動いた感じですね。

Conclusion

まぁ、面倒な感じでした。
PythonやJDK8は既にインストール済みだったので、実質msys2のインストールがメインでしたが。