特定のブランチでSwiftコンパイラをビルドする方法
こんにちは。iOSエンジニアの@kitasukeです。
久しぶりにSwiftコンパイラをビルドするとやり方を忘れるので、メモ用に手順をまとめました。
今回は例として、swift-5.0-branch
, master
ブランチでそれぞれビルドする方法を記載します。 基本的な環境構築については、こちらの記事を参考にしてください。
swift-5.0-branch
基本的にはmaster
ブランチを使うことが多いと思いますが、特定のバージョンに固定して見たい時がたまにあります。
1. 各リポジトリのブランチを更新する
$ cd swift-source/swift
$ ./utils/update-checkout --scheme swift-5.0-branch
上記のように、--scheme
オプションでブランチ名を指定すると、そのブランチに切り替えて最新の内容に更新してくれます。 スクリプトの実行後は、下記のように各リポジトリのブランチが切り替わっているはずです。
$ swift git:(swift-5.0-branch)
2. Toolchainを更新する
使用するSwiftのバージョンがあらかじめ分かっている場合は、2通りのやり方があります。
Toolchainを自分で用意する
まずは、下記のサイトから対応するToolchainをダウンロードします。今回の例だと、Swift 5.0 Developmentからダウンロードします。
次に、そのToolchainをxcode-select
で指定しているXcodeに反映します。Preferences -> Components
のToolchains
タブから選択します。
対応するXcodeを使う
上記の方法の代わりに、使いたいToolchainが入ったXcodeを使う方法もあります。 こちらからダウンロードできます。
$ swift -v $ Apple Swift version 5.0 (swiftlang-1001.0.60.3 clang-1001.0.37.8)
Xcode 10.2 Beta 2は上記のようにSwift 5.0に対応しているので、下記のコマンドでXcode-betaを使うように変更しましょう。
$ sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer
master
swift-5.0-branch
の手順とほぼ同じです。
1. 各リポジトリのブランチを更新する
$ cd swift-source/swift
$ ./utils/update-checkout --scheme master
--scheme
オプションにmaster
を指定して、ブランチが切り替わっていることを確認します。
$ swift git:(master)
2. Toolchainを更新する
master
ブランチを使う場合は、個人的にはToolchainを自分で用意した方が確実だと思います。
Toolchainを自分で用意する
この場合は、Trunk Development (master)からダウンロードしたものを使います。
対応するXcodeを使う
現時点でXcode 10.2 Beta 2でもmaster
ブランチのSwiftコンパイラはビルドできましたが、master
ブランチの方が先に進んでいることが多いと思うのでToolchainを使うのが良いと思います。
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
まとめ
久しぶりにSwiftコンパイラをビルドすると失敗する場合もあります。 原因を特定するために、環境設定を見直すことも役にたつかもしれません。 一回のビルドにかなり時間がかかるので、環境設定にも気をつけてデバッグしましょう。
普段の開発をする際は、Swiftコンパイラ用のToolchainやXcode Betaを元に戻すのを忘れないようにしましょう。