私はSwift 3.0とGCDをUbuntu 16.04にインストールするのに苦労しています。これは現時点で可能でしょうか?Swift 3 + libdispatchをLinux上にインストールする
swift.orgからSwift 3をダウンロードし、GitHubからswift-corelibs-libdispatchをクローン作成、ビルド、インストールするAnsibleタスクを以下に示します。
libdispatchのインストールはエラーなく完了しますが、動作しません。 Swift replでimport Dispatch
を試してみると、機能「ブロック」が見つからないという不満があります。 Makefilesを確認すると、少なくともフラグ-fblocks
がコンパイラに提供されていることが確認されます。ボックスを設定するための
[email protected]:/tmp/swift-3.0-PREVIEW-3-ubuntu15.10/usr/bin$ ./swift
Welcome to Swift version 3.0 (swift-3.0-PREVIEW-3). Type :help for assistance.
1> 6 * 7
$R0: Int = 42
2> import Dispatch
error: module 'CDispatch' requires feature 'blocks'
error: could not build Objective-C module 'CDispatch'
2>
Vagrantfile:
はここスウィフトREPLからの出力例ですスウィフト3をインストールするための
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.ssh.forward_agent = true
config.vm.box = "bento/ubuntu-16.04"
config.vm.define "swift3" do |dev|
dev.vm.hostname = "swift3.dev"
end
config.vm.network :private_network, ip: "10.0.0.10"
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/main.yml"
end
end
Ansibleタスク:
---
- name: Install Swift 3 requirements
apt: name={{ item }} state=installed
with_items:
- autoconf
- clang
- git
- libblocksruntime-dev
- libbsd-dev
- libcurl4-openssl-dev
- libdispatch-dev
- libkqueue-dev
- libpython2.7-dev
- libtool
- pkg-config
- name: download Swift 3
get_url: url=https://swift.org/builds/swift-3.0-preview-3/ubuntu1510/swift-3.0-PREVIEW-3/swift-3.0-PREVIEW-3-ubuntu15.10.tar.gz
dest=/tmp/swift.tgz mode=0440
- name: unarchive Swift 3
unarchive: dest=/tmp src=/tmp/swift.tgz copy=no creates=/tmp/swift-3.0-PREVIEW-3-ubuntu15.10
- name: clone Swift 3 libdispatch core library
git: repo=https://github.com/apple/swift-corelibs-libdispatch dest=/tmp/swift-corelibs-libdispatch
version=swift-3.0-preview-3-branch force=true
- name: generate Swift 3 libdispatch build files
command: "sh ./autogen.sh"
args:
chdir: /tmp/swift-corelibs-libdispatch
- name: configure Swift 3 libdispatch
command: "sh ./configure --with-blocks-runtime=/usr/lib/x86_64-linux-gnu --with-swift-toolchain=/tmp/swift-3.0-PREVIEW-3-ubuntu15.10/usr --prefix=/tmp/swift-3.0-PREVIEW-3-ubuntu15.10/usr"
args:
chdir: /tmp/swift-corelibs-libdispatch
- name: make Swift 3 libdispatch
command: "make"
args:
chdir: /tmp/swift-corelibs-libdispatch
- name: install Swift 3 libdispatch
command: "make install"
args:
chdir: /tmp/swift-corelibs-libdispatch
- name: grant permissions to use Swift 3
file: dest=/tmp/swift-3.0-PREVIEW-3-ubuntu15.10 mode=a+rX recurse=true
私はSwift 3について何も知らないが、(--no-provision'フラグを使用して)有能なプロビジョニングをスキップし、手動でインストール手順を実行して問題を特定したいエリア。それがうまくいけば、その問題はおそらくプレイブックにあります。それでも問題が解決しない場合、問題はボックスイメージ内のいくつかの欠落した依存関係になる可能性があります。 – Amit