Swift 3.0 介紹

作者:Joe祷愉,原文鏈接,原文日期:2016-02-16
譯者:Cee叫惊;校對:numbbbbb寞肖;定稿:小鍋

Swift 3.0
Swift 3.0

如果你在尋找 Swift 2.2 的 Ubuntu 包哲身,可以參考我們的這篇指南辩涝。

Swift 3.0

Swift 2.2 已經(jīng)從 master 分支移到了 swift-2.2 分支。現(xiàn)在勘天,Swift 3.0 版本在倉庫的 master 分支上開發(fā)怔揩。克隆編譯完整的 Swift 3.0 源代碼的方法已經(jīng)和之前截然不同了脯丝。比起之前需要克隆逐個倉庫商膊,現(xiàn)在你只需要:

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

Swift 倉庫中的 update-checkout 腳本能夠幫你克隆編譯 Swift 源代碼所需的所有倉庫內(nèi)容,并將其打包成 .tar.gz 壓縮文件宠进。

使用 "build and package" 預(yù)設(shè)不僅可以編譯所有必要的目標(biāo)文件晕拆,還能將它們打包成 .tar.gz 壓縮文件。使用名為 package.sh 的腳本就能完成上述任務(wù)(在 package-swift 庫中):

bash
#!/bin/bash
pushd `dirname $0` > /dev/null
WHERE_I_AM=`pwd`
popd > /dev/null
INSTALL_DIR=${WHERE_I_AM}/install
PACKAGE=${WHERE_I_AM}/swift.tar.gz
LSB_RELEASE=`lsb_release -rs  | tr -d .`
rm -rf $INSTALL_DIR $PACKAGE
./swift/utils/build-script --preset=buildbot_linux_${LSB_RELEASE} install_destdir=${INSTALL_DIR} installable_package=${PACKAGE}

腳本中最關(guān)鍵的一步就是檢測 Ubuntu 的發(fā)行版本(lsb_release -rs材蹬,譯者注:LSB实幕,Linux Standard Base),并且使用 buildbot_linux_${LSB_RELEASE} 預(yù)設(shè)來編譯并把所有內(nèi)容打包到 ${PACKAGE} .tar.gz 文件中堤器。

apt-get

從 Apple 庫中下載一個 .tar.gz 是個不錯的選擇茬缩,但是更好的解決方案是在 Ubuntu 發(fā)行版中直接使用 apt-get 指令。為了讓編譯 Swift 在 Linux 中更加容易上手吼旧,我們?yōu)槟銣?zhǔn)備了包含最新的 Swift 包的 Ubuntu 倉庫。

目前我們同時提供 swift-3.0swift-2.2 兩個版本未舟,但是它們并兼容圈暗。舉個例子,兩個 swift 版本都會安裝到 /usr/bin 下裕膀。我們計劃把這兩個包安裝到不同的地方员串,不過可能要到 2016 年中我們才有時間來處理這個問題。

盡管這種方法有些約束和限制昼扛,不過沒關(guān)系寸齐,下面我們看看如何安裝 Swift 3.0欲诺!

1. 添加 Repository key

bash
wget -qO- http://dev.iachieved.it/iachievedit.gpg.key | sudo apt-key add -

2. 將特定的倉庫添加到 sources.list

Ubuntu 14.04

bash
echo "deb http://iachievedit-repos.s3.amazonaws.com/ trusty main" | sudo tee --append /etc/apt/sources.list

Ubuntu 15.10

bash
echo "deb http://iachievedit-repos.s3.amazonaws.com/ wily main" | sudo tee --append /etc/apt/sources.list

3. 運(yùn)行 apt-get update

bash
sudo apt-get update

4. 安裝 swift-3.0 吧!

bash
apt-get install swift-3.0

5. 試一試

bash
git clone https://github.com/apple/example-package-dealer
cd example-packager-dealer
swift build
Compiling Swift Module 'FisherYates' (1 sources)
Linking Library:  .build/debug/FisherYates.a
Compiling Swift Module 'PlayingCard' (3 sources)
Linking Library:  .build/debug/PlayingCard.a
Compiling Swift Module 'DeckOfPlayingCards' (1 sources)
Linking Library:  .build/debug/DeckOfPlayingCards.a
Compiling Swift Module 'Dealer' (1 sources)
Linking Executable:  .build/debug/Dealer

運(yùn)行起來渺鹦!

bash
.build/debug/Dealer

FAQ

Q. Apple 官方會編譯這些二進(jìn)制文件嗎扰法?
A. 不會,這些都是我在我的個人服務(wù)器上編譯的毅厚,可以參考這篇指南塞颁。

Q. 所編譯項(xiàng)目的 git 版本如何查看?
A. 你可以使用 apt-cache show swift-3.0 來查看此信息吸耿。例如:

bash
# apt-cache show swift-3.0
Package: swift-3.0
Status: install ok installed
Priority: optional
Section: development
Installed-Size: 281773
Maintainer: iachievedit (support@iachieved.it)
Architecture: amd64
Version: 1:3.0-0ubuntu2
Depends: clang (>= 3.6), libicu-dev
Conflicts: swift-2.2
Description: Open Source Swift
 This is a packaged version of Open Source Swift 3.0 built from
 the following git revisions of the Apple Github repositories:
       Clang:  c18bb21a04
        LLVM:  0d07a5d3d5
       Swift:  8aa4dadf92
  Foundation:  dc4fa2d80b
Description-md5: 08508c39657c159d064917af87d8d411
Homepage: http://dev.iachieved.it/iachievedit/swift

每次編譯的源代碼中的樹形關(guān)系不受影響祠锣。

Q. 在上傳二進(jìn)制文件前你有做過測試嗎?
A. Swift 編譯的時候會對二進(jìn)制文件進(jìn)行測試咽安,我在編譯自己的應(yīng)用之前也做了一些基本的測試伴网。不過現(xiàn)在沒有復(fù)雜的測試用例套件。

Q. 準(zhǔn)備定期編譯嗎妆棒?
A. 不澡腾,并不準(zhǔn)備。雖然我想和 Apple 保持同步募逞,但是最初的想法只是為了做一下實(shí)驗(yàn)蛋铆,讓我能夠在 Linux 上寫 Swift 程序。

Q. 內(nèi)容會安裝到哪兒放接?
A. 都會安裝到 /usr/ 下刺啦,就和安裝 clanggcc 一樣纠脾。

Q. 如何理解包版本號的意義玛瘸?
A. 我一開始也考慮到了這個問題:我們需要一個合適的包版本號。把 3.0-0ubuntu2~trusty1 分解一下苟蹈,各部分的含義:

  • 3.0 指所打包的 Swift 的版本
  • -0ubuntu2 表示為 Ubuntu 打包的第二個版本糊渊,0 代表這個包在上游的 Debian 源上沒有依賴的包
  • -trusty1 代表這個包是給 Trusty Tahr 準(zhǔn)備的(譯者注:Trusty Tahr 即 Ubuntu 14.04)

Wiley(譯者注:Wiley Werewolf 即 Ubuntu 15.10)上的包版本號并不會包含類似于 ~wiley1 這樣的內(nèi)容,因?yàn)閺?Trusty 升級到 Wiley 后慧脱,它能夠正確更新 swift-3.0 的包渺绒。

這應(yīng)該沒什么問題,不過你發(fā)現(xiàn)任何問題可以發(fā)郵件到 support@iachieved.it菱鸥。

原理是什么宗兼?

我參考了這個超棒的指南在 Amazon S3 上搭建了一個 Debian 包資源庫。我試著搭建一個 Launchpad PPA(譯者注:PPA氮采,Personal Package Archives殷绍,參考這里),但是老實(shí)說鹊漠,為了將所有元數(shù)據(jù)放入同一個包內(nèi)實(shí)在是非常艱難主到。我敢肯定我需要托管所有必要的庫的內(nèi)容茶行,但是這看上去又有些矯枉過正了。不過那些開發(fā) fpm 的家伙們可能有一些解決辦法吧登钥。

那些用來打包編譯并且上傳到資源庫的腳步可以在 GitHub 上找到畔师。安裝 Swift 3.0 的話請參考 swift-3.0 分支。

本文由 SwiftGG 翻譯組翻譯怔鳖,已經(jīng)獲得作者翻譯授權(quán)茉唉,最新文章請訪問 http://swift.gg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末结执,一起剝皮案震驚了整個濱河市度陆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌献幔,老刑警劉巖懂傀,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蜡感,居然都是意外死亡蹬蚁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門郑兴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犀斋,“玉大人,你說我怎么就攤上這事情连∵创猓” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵却舀,是天一觀的道長虫几。 經(jīng)常有香客問我,道長挽拔,這世上最難降的妖魔是什么辆脸? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮螃诅,結(jié)果婚禮上啡氢,老公的妹妹穿的比我還像新娘。我一直安慰自己术裸,他們只是感情好空执,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著穗椅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奶栖。 梳的紋絲不亂的頭發(fā)上匹表,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天门坷,我揣著相機(jī)與錄音,去河邊找鬼袍镀。 笑死默蚌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苇羡。 我是一名探鬼主播绸吸,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼设江!你這毒婦竟也來了锦茁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤叉存,失蹤者是張志新(化名)和其女友劉穎码俩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歼捏,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稿存,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞳秽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓣履。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖练俐,靈堂內(nèi)的尸體忽然破棺而出袖迎,到底是詐尸還是另有隱情,我是刑警寧澤痰洒,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布瓢棒,位于F島的核電站,受9級特大地震影響丘喻,放射性物質(zhì)發(fā)生泄漏脯宿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一泉粉、第九天 我趴在偏房一處隱蔽的房頂上張望连霉。 院中可真熱鬧,春花似錦嗡靡、人聲如沸跺撼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歉井。三九已至,卻和暖如春哈误,著一層夾襖步出監(jiān)牢的瞬間哩至,已是汗流浹背躏嚎。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留菩貌,地道東北人卢佣。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像箭阶,于是被迫代替她去往敵國和親虚茶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容