Patching Source Code Saat Install Aplikasi di Gentoo
Patching Source Code Saat Install Aplikasi di Gentoo. Oke ini adalah tutorial sederhana bagaimana cara melakukan patching ketika terdapat kesalahan di source code saat kita ingin menginstall aplikasi.
Seperti yang saya alami, saya menemukan error dan gagal compile ketika ingin menginstall paket serf-1.3.9.
sudo emerge — ask net-libs/serf
Errornya sebagai berikut:
........
>>> Compiling source in /var/tmp/portage/net-libs/serf-1.3.9/work/serf-1.3.9 ...
scons -j4 PREFIX=/usr LIBDIR=/usr/lib64 APR=SYSROOT='' /usr/bin/apr-1-config APU=SYSROOT='' /usr/bin/apu-1-config BUILD_STATIC=no AR=x86_64-pc-linux-gnu-ar RANLIB=x86_64-pc-linux-gnu-ranlib CC=x86_64-pc-linux-gnu-gcc CPPFLAGS= CFLAGS=-march=broadwell -O2 -pipe LINKFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed
scons: Reading SConscript files ...
File "/var/tmp/portage/net-libs/serf-1.3.9/work/serf-1.3.9/SConstruct", line 189
print 'Warning: Used unknown variables:', ', '.join(unknown.keys())
^
SyntaxError: invalid syntax
* ERROR: net-libs/serf-1.3.9::net-kit failed (compile phase):
* escons failed.
*
* Call stack:
* ebuild.sh, line 93: Called src_compile
* environment, line 2501: Called escons
* environment, line 984: Called die
* The specific snippet of code:
* die "escons failed."
...........
Oke, dari pesan errornya kita tau yang bermasalah kemungkinan adalah file SConstruct, yangmana source codenya bisa kita lihat di path /var/tmp/portage/net-libs/serf-1.3.9/work/serf-1.3.9/SConstruct. Setelah googling saya paham kenapa kesalahan tersebut terjadi, dan sekarang saatnya kita patch.
Masuk ke direktori source codenya.
cd /var/tmp/portage/net-libs/serf-1.3.9/work/serf-1.3.9/
lalu buat salinan file SConstruct yang akan kita benahi.
cp SConstruct SConstruct-fixed
Selanjutnya ubah kode di file SConstruct-fixed. Intinya modifikasi kode didalamnya sehingga tidak ada error kembali.
nano SConstruct-fixed
Jika sudah, kita generate file patchnya. Masih di direktori yang sama, jalankan command diff.
diff -Naur SConstruct SConstruct-fixed > fixed.patch
Selanjutnya kita buat direktori untuk meletakkan file patchnya. Lokasinya ada di /etc/portage/patches/[kategori]/[nama paket]. Karena serf-1.3.9 ada di kategori net-libs, maka direktori fullnya adalah
/etc/portage/patches/net-libs/serf-1.3.9/
Kita pindahkan file fixed.patch kesana.
Cek patch menggunakan ebuild.
Sekarang kita test install lagi.
sudo emerge — ask net-libs/serf
Sukses.
Oke mungkin sekian tutorial singkat kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.
Disalin dari LinuxSec dengan judul yang sama: Patching Source Code Saat Install Aplikasi di Gentoo.