Malam ini saya iseng membuat PKGBUILD untuk AUR yang berasal dari kode sumber versi git. Selama ini ketika membangun sebuah paket dari kode sumber versi git saya mengubah variabel
pkgver
secara manual. Versi paket yang dipakai adalah tanggal saat membangun paket tersebut bukan revisi terakhir kode sumber.
Jika revisi kode sumber terakhir adalah 1 tahun yang lalu dan sekarang saya membangun paket maka hasilnya adalah nama_paket-20130916-1-x86_64.pkg.tar.xz
. Kalau dilihat dari nama paketnya berarti versi software (kode sumbernya) dirilis pada tanggal 16 September 2013. Padahal pada kenyataannya kode sumber terakhir itu 16 September 2012. Ini tidak wangun sama sekali, dan terjadi 378 alias penipuan :-P. Sekarang dimisalkan saja, jika pengembang software tersebut sangat aktif dan dalam seminggu pengembang tersebut bisa commit beberapa kali apa ya wangun saya mengubah versi secara manual setiap membangun paket? Ya sebenarnya wangun-wangun saja sih, tapi tidak efisien.
Biar lebih efisien saat membangun paket perlu ditambahkan fungsi pkgver()
pada PKGBUILD. Fungsi pkgver()
ini berfungsi memperbarui nilai variabel pkgver
secara otomatis saat membangun paket dengan makepkg
. Fungsi ini akan dijalankan setelah kode sumber versi git di-pull/clone. Dengan fungsi ini proses membangun paket lebih efisien, karena tidak perlu mengubah nilai dari variable pkgver
secara manual serta hasil paket yang dibangun lebih wangun dan tidak 378.
Saat membangun paket AUR malam ini saya menentukan versi berdasar tanggal terakhir revisi dan commit hash. Format versinya adalah <tanggal>_<commit hash>
. Untuk mengambil tanggal commit terakhir saya gunakan perintah git log -1 --date=short --format="%cd" | tr -d '-'
. Sedangkan untuk mengambil commit hash terakhir saya gunakan perintah git log -1 --format="%h"
. Fungsi pkgver()
pada PKGBUILD secara lengkap adalah seperti berikut:
--- pkgver() { cd "${_gitname}" echo "$(git log -1 --format="%cd" --date=short | tr -d '-')_$(git log -1 --format="%h")" } ---
Matur nuwun buat om @lynxluna yang sudah memberitahu saya mengenai perintah git log
ini *sun klomoh*
Referensi: The pkgver() function.
=-=-=-=-=
Powered by Blogilo