Patching Source Code Saat Install Aplikasi di Gentoo

Sabtu, 08 Mei 2021

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

Dan errornya adalah:

........
>>> 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."
...........
Berikut screenshotnya:

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.

Artikel Terkait Gentoo