特定のブランチでSwiftコンパイラをビルドする方法

Yusuke Kita
5 min readFeb 19, 2019

--

こんにちは。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 -> ComponentsToolchainsタブから選択します。

対応する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を元に戻すのを忘れないようにしましょう。

References

--

--