Coba lagi build Swift di Fedora 24


Daripada galau dan risau, mari isi waktu yang menganggur dengan hal yang bermanfaat: compile swift lagi. Kali ini di Fedora 24 yang baru diinstall ulang. Sayangnya, kali ini proses kompilasi tidak semulus paha ceribel.

Langkah yang dicoba sama dengan yang ada di postingan lama ini. Jadi clone proyek swift-fedora, lalu jalankan ./swiftbuild.sh setup lalu update dan build.

Sayangnya negara api sudah menyerang. Setelah sukses menyiapkan bahan-bahan untuk kompilasi kode sumber swift dengan perintah ./swiftbuild.sh setup dan ./swiftbuild.sh update, pada langkah terakhir dan yang paling penting, yakni perintah ./swiftbuild.sh build terjadi masalah.

Error pertama adalah ketika gagal membuat manpage dari berkas swift.pod. Errornya kira-kira seperti ini:

failed when execute pod2man
pod2man: unable to format ~/tmp/swiftbuild/swift/docs/tools/swift.pod

Dari hasil googling, menurut sumber ini, yang harus dilakukan adalah melakukan checkout berkas swift.pod. Karena saya nggak mengerti, saya pilih unduh ulang saja berkas swift.pod dari sumbernya.

Setelah itu edit berkas CMakeLists.txt dengan menambah tanda tagar (#) ke baris MAN_FILE_BASENAME swift. Cara kerennya seperti ini:

~/tmp/swiftbuild $ sed -i 's/MAN_FILE/#MAN_FILE/g' swift/docs/tools/CMakeLists.txt

Setelah itu jalankan kembali ./swiftbuild.sh build. Maka beberapa waktu kemudian (setelah menyiksa laptop yang melakukan kompilasi), akan muncul error mirip seperti ini:

AIL: Swift :: SILGen/collection_subtype_upcast.swift (1661 of 8328)
******************** TEST 'Swift :: SILGen/collection_subtype_upcast.swift' FAILED ********************
Script:
--
/home/hahnfedora/tmp/swiftbuild/build/buildbot_linux/swift-linux-x86_64/bin/swift -frontend -target x86_64-unknown-linux-gnu -enable-experimental-collection-casts -emit-silgen -sdk /home/hahnfedora/tmp/swiftbuild/swift/test/SILGen/Inputs /home/hahnfedora/tmp/swiftbuild/swift/test/SILGen/collection_subtype_upcast.swift | FileCheck /home/hahnfedora/tmp/swiftbuild/swift/test/SILGen/collection_subtype_upcast.swift

...
(masih panjang)

Error lengkapnya bisa dilihat di sini.

Mari coba cara lain:

~/tmp/swiftbuild $ ./swift/utils/build-script -R -j 4

Hore, ternyata tak ada errornya! Nanti di direktori ~/tmp/swiftbuild/build/ ada direktori baru: Ninja-ReleaseAssert. Mari kita coba apakah sudah bisa? Kita coba lihat versinya dulu:

(di direktori ~/tmp/swiftbuild/build/Ninja-ReleaseAssert)
$ cd swift-linux-x86_64/bin
$ ./swift --version
Swift version 3.0-dev (LLVM 71bdc50cc0, Clang 184e4cd567, Swift 0f66af406a)
Target: x86_64-unknown-linux-gnu

Horeee berhasil! Mari kita coba versi interaktifnya.

$ ./swift
LLVM ERROR: Compiler-internal integrated REPL unimplemented for this platform; use the LLDB-enhanced REPL instead.

Loh kok error? Dari hasil googling lagi, menurut thread ini sih masih ada kutunya. Entah masalahnya sama dengan fedora atau tidak. Namun yang pasti, si swift sebenarnya sudah bisa dipakai.

Mari kita buat berkas hello.swift yang isinya cuma begini doang:

print("hello swift di fedora 24 bisa loooh")

Setelah itu mari kita kompilasi dengan perintah ./swiftc hello.swift atau langsung dijalankan dengan perintah swift hello.swift

$ ./swift ~/Dokumen/coding/swift/hello.swift
hello swift di fedora 24 bisa loooh

$ ./swiftc ~/Dokumen/coding/swift/hello.swift
$ ./hello
hello swift di fedora 24 bisa loooh

coba swift di F24

Begitulah. Semoga bermanfaat. Kalau pun tidak, ya lumayanlah ada bahan buat ditulis di blog sepi ini.


Ada komentar?

This site uses Akismet to reduce spam. Learn how your comment data is processed.