Patching Source Code Saat Install Aplikasi di Gentoo

Problem Child
LinuxSec
Published in
3 min readMay 8, 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

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.

--

--

Problem Child
LinuxSec

GNU/Linux Enthusiast | Security Researcher | Penetration Tester