FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Swiftのビルド環境を仮想マシンとして構築する(Vagrantのボックスを構築)

前回の日記で、Swiftのソースビルドがうまく行かなかった。

msyksphinz.hatenablog.com

github.com

いろいろ調査していると、どうやらディスク容量が足りないのと、メモリ容量が足りないようだった。 最初は1GBのメモリを用意していたが、次に4GBでビルドしてみる。これでもtopをしてみるとメモリを使い切っているようだった。 そこで、一気にメモリを8GBまで増強するようにVagrantfileを指定した。

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    # vb.gui = true

    # Customize the amount of memory on the VM:
    vb.memory = "8192"
  end

これでvagrantの箱を構築した。利用したのはUbuntu15.04だ。

  config.vm.box = "ubuntu-1504"
  config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/vivid/current/vivid-server-cloudimg-amd64-vagrant-disk1.box"

github.com

基本的に、swiftのページに書いてあることをやるだけだ。

$ sudo apt-get install git cmake ninja-build clang uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config

$ 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

これをChefに記述しておいた。さらに、swift/utils/build-scriptを実行する。

# Download source code of Swift
git "/home/vagrant/swift/swift" do
  repository "https://github.com/apple/swift.git"
  user "vagrant"
  group "vagrant"
  action :sync
end
git "/home/vagrant/swift/llvm" do
  repository "https://github.com/apple/swift-llvm.git"
  user "vagrant"
  group "vagrant"
  action :sync
end
...
execute "Execute Swift-Build" do
  cwd "/home/vagrant/swift"
  command " sudo ./swift/utils/build-script"
  user "root"
  group "root"
  action :run
end

これで構築完了できた!ただし、全体のビルドだけで3~4時間はかかった気がする。。。

swiftcを使って、ビルドしてみる。

print("Hello World")

ビルドと実行。

$ swiftc printme.swift -o printme
$ ./printme
Hello World

うまくいった!