Open8

Open Source Swift Workshop

とんとんぼとんとんぼ

リポジトリをフォーク後、以下のようにコマンドを行う。

https://github.com/apple/swift/blob/main/docs/HowToGuides/GettingStarted.md

mkdir swift-project
cd swift-project

これをしないと、後で大変(語彙力)

Clone the sources:

SSH経由(推奨):定期的にコントリビュートするつもりなら、SSH 経由でクローンを作成したほうが使い勝手がよいでしょう。SSHキーをGitHubにアップロードしたら、次のようにします:

git clone git@github.com:apple/swift.git swift
cd swift
utils/update-checkout --clone-with-ssh

HTTPS経由:ソースを読み取り専用でチェックアウトしたい場合や、SSHの設定に慣れていない場合は、代わりにHTTPSを使用することができます:

git clone https://github.com/apple/swift.git swift
cd swift
utils/update-checkout --clone

⚠️注意この段階ですでにGitHubでプロジェクトをフォークしている場合は、最初からフォークをクローンしないでください。以下のサブセクションで、フォークをセットアップする方法を説明します。

自分はここでGitHubをフォークしていたので、注意

とんとんぼとんとんぼ

3 swiftの兄弟ディレクトリが存在することを再確認する。

ls ..

llvm-projectやswiftpmなどのディレクトリがリストアップされるはずです。

4.

正しいブランチ/タグをチェックアウトします:ローカル開発用にツールチェーンを構築する場合は、ステップ2でswiftのメインブランチと他のプロジェクトのマッチするブランチをチェックアウトするので、このステップはスキップできます。単発でツールチェーンを構築する場合は、特定のブランチやタグが必要になる可能性が高く、多くの場合、特定のリリースや特定のスナップショットに対応します。すべてのリポジトリのブランチ/タグを更新するには、以下のようにします:

utils/update-checkout --scheme mybranchname
# OR
utils/update-checkout --tag mytagname

↑ここは今、スキップ

とんとんぼとんとんぼ

Build using Ninja

Build the toolchain with optimizations, debuginfo, and assertions, using Ninja:

Ninja を使って、最適化、デバッグインフォ、アサーションを含むツールチェーンをビルドする:

utils/build-script --skip-build-benchmarks \
  --skip-ios --skip-watchos --skip-tvos --swift-darwin-supported-archs "$(uname -m)" \
  --sccache --release-debuginfo --swift-disable-dead-stripping \
  --bootstrapping=hosttools

ここがめちゃくちゃ時間がかかる⏰

とんとんぼとんとんぼ

Using Ninja with Xcode

This workflow enables you to edit, build, run, and debug in Xcode. The following steps assume that you have already built the toolchain with Ninja.

このワークフローにより、Xcodeでの編集、ビルド、実行、デバッグが可能になる。以下のステップは、すでに Ninja でツールチェインをビルドしていることを前提としています。

Note: A seamless LLDB debugging experience requires that your build-script invocation for Ninja is tuned to produce build rules for the debug variant of the component you intend to debug.

NOTE:シームレスなLLDBデバッグを行うには、Ninjaのビルドスクリプトの呼び出しが、デバッグ対象のコンポーネントのデバッグバリアント用のビルドルールを生成するように調整されている必要がある。

Generate the Xcode project with

以下で、Xcodeプロジェクトを生成する

utils/build-script --swift-darwin-supported-archs "$(uname -m)" --xcode --clean
とんとんぼとんとんぼ

Debugging issues

In this section, we briefly describe two common ways of debugging: print debugging and using LLDB.

Depending on the code you're interested in, LLDB may be significantly more effective when using a debug build. Depending on what components you are working on, you could turn off optimizations for only a few things. Here are some example invocations:

このセクションでは、プリント・デバッグとLLDBを使ったデバッグの2つの一般的な方法について簡単に説明する。興味のあるコードによっては、デバッグビルドを使用する場合、LLDBを使用する方がかなり効果的かもしれません。どのようなコンポーネントで作業しているかにもよるが、一部のものだけ最適化をオフにすることもできる。以下にいくつかの起動例を示す:

# optimized Stdlib + debug Swiftc + optimized Clang/LLVM
utils/build-script --release-debuginfo --debug-swift # other flags...

# debug Stdlib + optimized Swiftc + optimized Clang/LLVM
utils/build-script --release-debuginfo --debug-swift-stdlib # other flags...

# optimized Stdlib + debug Swiftc (except typechecker) + optimized Clang/LLVM
utils/build-script --release-debuginfo --debug-swift --force-optimized-typechecker

# Last resort option, it is highly unlikely that you will need this
# debug Stdlib + debug Swiftc + debug Clang/LLVM
utils/build-script --debug # other flags...

今回行うのは以下の通り:

# optimized Stdlib + debug Swiftc + optimized Clang/LLVM
utils/build-script --release-debuginfo --debug-swift # other flags...
とんとんぼとんとんぼ

Runnning tests

テストを実行するには、主に2つの方法がある:

  1. utils/run-test: デフォルトでは、run-test はテストを実行する前にテストの依存関係をビルドする。
# Rebuild all test dependencies and run all tests under test/.
utils/run-test --lit ../llvm-project/llvm/utils/lit/lit.py \
  ../build/Ninja-RelWithDebInfoAssert/swift-macosx-$(uname -m)/test-macosx-$(uname -m)

# Rebuild all test dependencies and run tests containing "MyTest".
utils/run-test --lit ../llvm-project/llvm/utils/lit/lit.py \
  ../build/Ninja-RelWithDebInfoAssert/swift-macosx-$(uname -m)/test-macosx-$(uname -m) \
  --filter="MyTest"
  1. lit.py: lit は依存関係について何も知りません。テストを実行するだけです。
# Run all tests under test/.
../llvm-project/llvm/utils/lit/lit.py -s -vv \
  ../build/Ninja-RelWithDebInfoAssert/swift-macosx-$(uname -m)/test-macosx-$(uname -m)

# Run tests containing "MyTest"
../llvm-project/llvm/utils/lit/lit.py -s -vv \
  ../build/Ninja-RelWithDebInfoAssert/swift-macosx-$(uname -m)/test-macosx-$(uname -m) \
  --filter="MyTest"

今回は、1を実行

とんとんぼとんとんぼ

Editing Code(Fork Repository)

開発用にツールチェーンをビルドしてパッチを提出する場合は、GitHubフォークをセットアップする必要がある。まず、apple/swift リポジトリをフォークします。Web UI の右上付近にある "Fork" ボタンを使ってください。これで、あなたのGitHubユーザー名用のリポジトリusername/swiftが作成されます。次に、このリポジトリをリモートとして追加します: