Dartの開発環境を作ってみる(Mac版)

構築環境

  • Mac OS X 10.6.8
  • Xcode 4.0.2
    この時点では、ドツボにはまるとは思っていませんでした。

1.はじめに

参考

  • XCodeをインストール
    すでに入っていたので飛ばしました。
  • depot_toolsをインストール(参考)
1
$ svn co http://src.chromium.org/svn/trunk/tools/depot_tools
  • depot_toolsのパスを通す

    1
    $ export PATH="$PATH":`pwd`/depot_tools

Xcode4だったのでここも参考にしました。
Xcode4には10.5SDKが含まれていないようなので、10.6SDKを
利用するように設定する必要があるようです。
(こいつに辿りつくまでが大変でした。)
##2.ソースを取得
参考

1
$ gclient config http://dart.googlecode.com/svn/trunk/deps/all.deps

同期処理を実行

1
2
3
4
5
6
7
8
9
10
11
12
13
$ gclient sync
...
...
...
*******************************************************************************
* WARNING: Can't download DumpRenderTree! This is required to test client apps.
* You need to do a one-time configuration step to access Google Storage.
* Please run this command and follow the instructions:
* third_party/gsutil/20110627/gsutil config
*
* NOTE: When prompted you can leave "project-id" blank. Just hit enter.
*******************************************************************************
Error: Command /usr/bin/python dart/tools/get_drt.py runhooks returned non-zero exit status 1 in /Developer/SDKs/dart

案の定エラーが出ました。
ひとまず、WARNINGの言うとおりに gsutil を実行。

1
2
3
4
5
6
7
8
9
$ dart/third_party/gsutil/20110627/gsutil config
This script will create a boto config file at
/Users/administrator/.boto
containing your credentials, based on your responses to the following questions.
Please navigate your browser to the following URL:
https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww...(略)
In your browser you should see a page that requests you to authorize gsutil to access
Google Storage on your behalf. After you approve, an authorization code will be displayed.
Enter the authorization code:

URLにアクセスして、認証コードを取得してね的なメッセージが表示されたので
指定のURL https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww...(略) にアクセス。
GSUtilの認証画面が出てきたので、アクセスを許可。

コードをコピペしてね画面が表示されたので、認証コードの

ところに貼りつけてエンター!

つづいて、プロジェクトIDの入力を求められました。

1
2
3
4
Please navigate your browser to http://code.google.com/apis/console,
then click "Services" on the left side panel and ensure you have Storage
activated, then click "Storage" on the left side panel and find the "x-goog-project-id" on that page.
What is your project-id?

WARNINGの指示通りにブランクでエンター!

1
2
3
4
No default project ID entered. You will need to edit the default_project_id value
in your boto config file before using "gsutil ls gs://" or "mb" commandswith the default API version 2.
Boto config file "/Users/administrator/.boto" created. If you need to use
a proxy to access the Internet please see the instructions in that file.

なんとなくうまくいったっぽいので、再度、同期を実行してみる

1
2
3
4
5
6
$ gclient sync
...
...
...
At revision 9575.
Syncing projects: 100% (8/8), done.

なんとなく成功!
##3.ビルド
参考

とりあえず、説明通りに、以下のコマンドを実行。

1
2
3
4
5
6
7
$ ./tools/build.py --arch=ia32
...
...
...
=== BUILD NATIVE TARGET v8_base OF PROJECT v8 WITH CONFIGURATION Debug_ia32 ===
** BUILD FAILED **
BUILD FAILED

案の定、エラー。
32bit? 64bit? ということで、オプションを変更して実行。

1
2
3
4
5
6
7
8
9
$ ./tools/build.py --arch=x64
...
...
...
== BUILD AGGREGATE TARGET generate_builtin_cc_file OF PROJECT dart-runtime WITH CONFIGURATION Debug_x64 ===
=== BUILD AGGREGATE TARGET generate_snapshot_test_dat_file OF PROJECT dart-runtime WITH CONFIGURATION Debug_x64 ===
=== BUILD NATIVE TARGET v8_base OF PROJECT v8 WITH CONFIGURATION Debug_x64 ===
** BUILD FAILED **
BUILD FAILED

やっぱりエラー。
説明のコメント欄をながめていると、同様のエラーが出ていて、解決方法らしきURLが貼っつけてありました。
Building Google Dart on Mac OS X Lion with XCode 4
記事の説明通りに、build.pyの該当行にオプションを追加。

再度実行したら、成功したようです。

1
2
3
4
5
6
7
$ ./tools/build.py --arch=ia32
...
...
...
=== BUILD AGGREGATE TARGET All OF PROJECT dart WITH CONFIGURATION Debug_ia32 ===
Check dependencies
** BUILD SUCCEEDED **

最後にテストスクリプトを流して終わりです。

1
$./tools/test.py --arch=ia32,dartc,chromium

ここに到達するまでで、ちょっと疲れました。
dartのオプション

1
2
dart [<vm-flags>] <dart-script-file> [<dart-options>]
</dart-options></vm-flags>

dartcのオプション

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
37
38
39
40
41
dartc [<options>] <dart-script> [script-arguments]
Available options:
--batch (-batch) : Batch mode (for unit testing)
--check-only (-check-only) : Do not generate output, only analyze
--disable-type-optimizations : Turn off type optimizations
(for debugging)
--documentation-lib (-documentation-li : Only generate docs for the
b) VAL : given library
--documentation-out (-documentation-ou : Directory to write documentation
t) VAL :
--enable_type_checks : Generate runtime type checks
--fatal-type-errors (-fatal-type-error : Treat type errors as fatal
s) :
--fatal-warnings (-Werror) : Treat non-type warnings as fatal
--generate-documentation (-generate-do : Generate docs from source
cumentation) :
--generate-isolate-stubs (-generate-is : Classes to generate stubs
olate-stubs) VAL : (comma-separated list)
--help (-?, -help) : Prints this help message
--human-readable-output : Write human readable javascript
--ignore-unrecognized-flags : Ignore unrecognized command line flags
--isolate-stub-out (-isolate-stub-out) : File to receive generated stub output
VAL :
--jvm-metrics : Print jvm metrics at end of compile
--jvm-metrics-detail VAL : Display summary (default) or
verbose metrics
--jvm-metrics-format VAL : Output metrics in tabular (default)
or pretty format
--jvm-metrics-type VAL : Comma-separated list to display:
all: (default) all stat types
gc: show garbage collection stats
mem: show memory stats
jit: show jit stats
--metrics : Print compilation metrics
--noincremental (-noincremental) : Disable incremental compilation
--optimize (-optimize) : Produce optimized code
--out FILE : Write generated JavaSccript to a file
--warn_no_such_type : Treat some type checks as warnings
instead of fatal errors
--work (-out) FILE : Directory to receive compiler output
for future incremental builds

ia32の方は、dart、dartcともに動きましたが、x64の方はdartがエラーを吐いて動きませんでした。

インストールをミスったのかもしれませんが、とりあえずia32の方で遊んでみようかと思います。