BSD界隈四方山話

第32回 SwiftをFreeBSDでビルドしてみよう

この記事を読むのに必要な時間:およそ 2 分

Swift,オープンソースで登場

先日,Appleがプログラミング言語Swiftをオープンソースソフトウェアとして公開しました。Swift自体は単一のソフトウェアというよりも,コンパイラも含めて複数のソフトウェアおよびプロジェクトから構成されています。これら情報のポータル的なポジションとしてSwift.orgというサイトがオープンしました。

ソースコードはApple|GitHubで公開されています。これまでiOSアプリの開発にはObjective-Cが使われてきましたが,AppleがSwiftを公開してからはSwiftへ注目対象がシフトしています。この動向は今後も続くものと見られます。

SwiftはまだFreeBSDのパッケージにはなっていませんが,それにつながりそうな取り組みがlandonf/swift-freebsd|GitHubではじまりました。Appleのswiftからフォークする形で作成されたもので,FreeBSDでのSwiftのビルド方法などが掲載されています。

SwiftをFreeBSDでビルドする

この取り組みははじまったばかりなので,実際にビルドできるようになるまではいくつかの変更が加えられると思います。ここで掲載しておくのは現在での状況で,将来的には大きく変わっている可能性もあります。あくまで参考ということでまとめておきます。

landonf/swift-freebsd|GitHubにFreeBSDにおけるSwiftのビルド方法が掲載されていますが,今のところこの方法ではビルドできません。

まず最初にビルドに必要になるパッケージをインストールするのですが,いくつかビルドに必要なパッケージが不足していますので,次のようにいくつかパッケージを加えてインストールを行います。

Swiftをビルドするためのパッケージをインストール

pkg install -y bash git cmake ninja clang36 libc++ icu libxml2 sqlite3 swig python27 ncurses pkgconf e2fsprogs-libuuid

次に,Swiftおよび関連するソースコードをgit(1)コマンドを使って取得します。

Swift関連のソースコードを取得

# mkdir -p /home/swift
# cd /home/swift
# git clone https://github.com/apple/swift.git swift
# git clone https://github.com/apple/swift-llvm.git llvm
# git clone https://github.com/apple/swift-clang.git clang
# git clone https://github.com/apple/swift-lldb.git lldb
# git clone https://github.com/apple/swift-cmark.git cmark
# git clone https://github.com/apple/swift-llbuild.git llbuild
# git clone https://github.com/apple/swift-package-manager.git swiftpm
# git clone https://github.com/apple/swift-corelibs-xctest.git
# git clone https://github.com/apple/swift-corelibs-foundation.git

Swiftのビルドにはswift/utils/build-scriptを使います。また,環境変数を設定してコンパイラとしてパッケージ経由でインストールしたClang 3.6が使われるように設定しておきます。

Swiftのビルドを開始

# pwd
/home/swift
# ls
clang                           swift
cmark                           swift-corelibs-foundation
llbuild                         swift-corelibs-xctest
lldb                            swiftpm
llvm
# export HOST_CC=clang36
# export HOST_CXX=clang++36
# ./swift/utils/build-script --clean -R

メモリまたはスワップ領域を十分に用意しておかないと,ビルドの途中で失敗します。-Rオプションを指定するとある程度この問題が緩和できますので,とりあえずビルドスクリプトには-Rをつけてリリース向けのビルドをしておけばよいでしょう。

手元ではこの状態で「/usr/home/swift/swift/lib/Sema/IterativeTypeChecker.cpp:70:19: error: call to implicitly-deleted copy constructor of 'swift::TypeCheckRequest'」のエラーがビルドが止まります。これ以上は調べていないのでなんともいえませんが,ビルドできるようにするまでまだいくらか対処が必要のようです(コンパイル時のオプションを変えるだけで通るような気もしますけども)⁠

Swiftプログラミング

Swiftの移植はそれほど難しいようには見えませんので,需要があれば遠くない段階でパッケージに追加されるように思います。AppleがSwiftをオープンソースソフトウェアとして公開した理由のひとつには,Mac OS XやLinux以外のプラットフォームへも広めてエコシステムを拡大したい狙いがあるでしょうから,マルチプラットフォーム対応が阻害されることは考えにくいでしょう。

また,こうしたオープンソース化の流れには,オープンソース化とマルチプラットフォーム化が進むMicrosoft .NETを意識したものともいえるかもしれません。どのみちlandonf/swift-freebsd|GitHubはしばらく追っておきたい取り組みです。

FreeBSD勉強会 告知

第47回 12月22日(火) 19:00~ ライトニングトーク×FreeBSD忘年会’15!

今やっていることがある,実はこんな感じで運用している,困っていることがあるので助け求むなど,FreeBSDに関することを5分から10分程度にまとめて,その時発表したい方が発表する「ライトニングトーク×FreeBSD忘年会'15!」を開催します。

後藤からは発表の冒頭,5~10分くらいでbhyveを使った仮想環境構築のデモンストレーションを行います。CentOSかOpenBSDあたりをon bhyveで使う方法をご紹介します。ひとりあたりの発表時間は,全体の発表人数を見つつ当割でいきます。時間に余裕があれば現場で飛び込みライトニングトークも大歓迎です。参加申請はこちらから。

第48回 1月28日(木) 19:00~ The Design and Implementation of the FreeBSD Operating System (2nd Edition) 読書会 第12回目 P.129 4.7 Signals~

The Design and Implementation of the FreeBSD Operating System (2nd Edition)の読書会です。読書会12回目の今回はハードカバーでP.129からです。D&I本がどういった本なのか読んでみたいという方,お気軽にご参加ください。参加申請はこちらから。

コメント

コメントの記入