Sambil menunggu KDE 4.4 selesai dipasang, saya memutuskan untuk mengisi blog ini. Ada sekitar 220+ paket yang perlu dipasang. Komputer kerja saya (Core2 Duo 2GB) pun terasa lambat. Entah saat ini sudah paket ke berapa. Sudah selesai ganti-ganti tema blog, menyampah di jejaring sosial, dan menjalani blog-blog orang, ternyata kompilasi masih saja berjalan.

Sebelum ada yang marah-marah, perlu saya beritahukan kalau saya adalah seorang pengguna Debian. Jadi, kalau saya membandingkan dengan Debian/Ubuntu, itu semata-mata demi petualang-petualang lain yang mungkin juga sama dengan saya.

Berbicara tentang kompilasi, dulu saya pernah memasang Linux From Scratch (LFS). Waktu yang dibutuhkan sekitar sebulan lebih. Dari LFS ke BLFS paket GNOME, saya membutuhkan waktu beberapa minggu. Proses yang lama itu termasuk untuk mengunduh paket-paket kode sumber. Instalasi kala itu sangat lama, terutama ketika membuat bootstrapping.

Apakah bootstrapping?

Bootstrapping adalah sebuah fase untuk menciptakan lingkungan perantara sebelum benar-benar memasang sistem. Fase ini diperlukan agar sistem yang kita buat itu dikompilasi dengan ABI (Application Binary Interface) yang sama. Untuk menjaga konsistensi, pustaka dasar seperti GCC dan GLIBC harus dikompilasi oleh pustaka dengan versi yang sama. Selain itu, harus dipastikan bahwa setiap pustaka dasar itu menaut kepada dirinya sendiri, bukan pustaka induk mau pun pustaka lingkungan perantara. Itu sebabnya, GCC dikompilasi sekitar 3 kali dan proses kompilasi itu diulang lagi kemudian.

Jika Anda seorang bintang porno (istilah Gentoo untuk orang-orang yang suka hardcore, benar-benar membangun dari dasar), proses penciptaan lingkungan perantara ini dinamakan Stage 1 dan Stage 2. Untungnya, Gentoo tidak membiarkan saya kembali ke zaman pra sejarah tersebut. Gentoo sudah membuat sebuah lingkungan hasil bootstrapping-nya sendiri yang diberi nama Stage 3.  Stage 3 adalah sebuah lingkungan dasar yang bisa dibuka dan dipasang langsung ke sebuah partisi kosong. Semacam debootstrap pada Debian.

Kalau di Debian/Ubuntu, saya akan lakukan seperti ini:

$ debootstrap lucid /mnt/target http://kambing.ui.ac.id/ubuntu

Sedangkan kalau di Gentoo:

$ tar xvfj /tmp/stage3-latest.tar.bz2 -C /mnt/target

Saya masih mereka-reka sistem pemaketan Gentoo. Yang saya baca, mereka menggunakan Portage. Portage menggunakan Ebuild. Intinya, sebuah skrip untuk mengunduh dan memasang paket. Yang saya suka, mereka mengizinkan kita untuk mengatur sendiri parameter-parameter yang diperlukan. Kebetulan, sewaktu zaman jahiliyah dulu, saya suka memain-mainkan parameter GCC. 

Untuk kompilasi, saya pasang berikut di berkas

 /etc/make.conf
saya:

CFLAGS="-march=core2 -msse3 -mtune=native -O2 -pipe"

CXXFLAGS="${CFLAGS}"

Saya tidak tahu, apakah penggunaan SSE 4.1 didukung oleh GCC 4.4? Ada, sih, parameternya dengan menggunakan

-msse4.1
. Tapi, saya masih belum yakin kalau itu didukung penuh. Saya juga tertarik untuk mencoba LLVM, tapi belum sempat belajar. Saya juga mau coba pakai EGLIBC bukan GLIBC. Ugh, banyak juga, yah, keinginan….

Berhubung Core2 Duo punya dua inti, buat 2 kompilasi paralel:

MAKEOPTS="-j2"

Pasang server terdekat (benar-benar dekat, tinggal nyerosot sebentar):

SYNC="rsync://kambing.ui.ac.id/gentoo-portage"

DIST_MIRRORS="http://kambing.ui.ac.id/gentoo"

Lalu tinggal jalankan

emerge
seperti di dalam buku panduan Gentoo. Untuk beberapa entri mendatang saya akan membahas petualangan di dunia kompilasi saya. Jadi, mohon maaf jika bahasa semakin kotor. Saya akan menyelipkan entri yang ringan juga agar blog ini tidak berat.

Bacaan dan bahan menarik yang saya mau buat:

undocumented features

No Description

http://www.linuxfromscratch.org/pipermail/hints/2002-June/000969.html