Bermain dengan Maleo di OpenSuse

Halo selamat sabtu malam yang dingin dampak dari hujan yang terjadi sepanjang hari. Sambil menunggu kelanjutan laga klasik Persib versus PSM Makassar mari kita isi blog ini dengan sesuatu yang bermanfaat. Semoga.

Berhubung Persib main dengan klub asal Sulawesi, maka kali ini kita bahas tentang Maleo.

Apa itu Maleo? Menurut Wikipedia berbahasa Indonesia, maleo adalah:

Maleo Senkawor atau Maleo, yang dalam nama ilmiahnya Macrocephalon maleo adalah sejenis burung gosong berukuran sedang, dengan panjang sekitar 55cm, dan merupakan satu-satunya burung di dalam genus tunggal Macrocephalon.

Tapi kita tidak akan membahas mengenai perburungan. Tapi membahas maleo yang lain. Dari berkas README-nya, maleo didefinisikan sebagai berikut:

This is a html5 application runner. It is built using Gtk+ Webkit port in Vala programming language. To use it, jut feed the application with the absolute path containing the config.xml. The runner is powered by Seed runtime, or you can use Node.js.

Kasarnya, dengan maleo, kita bisa menjalankan sebuah aplikasi berbasis html5 dengan mudah. Nah, aplikasi keren ini merupakan salah satu dari sekian banyak aplikasi khas BlankOn.

Sayangnya, sampai saat ini belum ada berkas biner yang bisa langsung dipakai di OpenSuse. Artinya apa? Ya, kita harus kompilasi sendiri. Duh serasa zaman masih pakai slackware, apa-apa harus kompilasi manual 😀

Sebenarnya, langkah kompilasi sudah ditulis sama pak Estu di blognya. Tapi supaya demi kekinian dan agar uang sewa blog ini tak sia-sia, kita tulis ulang saja di sini. Mari kita mulai.

Langkah pertama sebelum kompilasi adalah menyiapkan bahan bakunya dulu. Silakan unduh berkas maleo di repo BlankOn.

$ git clone git@github.com:BlankOn/maleo.git

Setelah itu, pasang bahan baku pendukungnya kalau belum ada. Dari blognya pak Estu, yang harus dipasang adalah berkas berikut:

$ sudo zypper in -t pattern devel_basis
$ sudo zypper in git gnome-common webkit2gtk3-devel libffi-devel-gcc5 gobject-introspection-devel gnome-js-common sqlite3-devel dbus-1-glib-devel mpfr-devel

Cukup banyak ya? Untuk langkah yang kedua, itu dibutuhkan saat mengompilasi aplikasi seed. Nanti dibahas di bawah.

Kalau sudah beres, masuk ke direktori maleo dan lakukan perintah aclocal, autoconf, dan automake untuk membangun berkas configure. Kalau mau cepat, jalankan saja perintah ./autogen.sh.

$ ./autogen.sh

Kalau baik-baik saja, harusnya nanti tidak muncul error. Tapi di saya ternyata muncul error seperti berikut.

./configure: line 12372: ./po/POTFILES.in: No such file or directory
./configure: line 12375: syntax error near unexpected token `0.35.0'
./configure: line 12375: `IT_PROG_INTLTOOL(0.35.0)'

Ternyata saya belum punya program intltool. Baiklah mari pasang dulu pakai aplikasi mejik di opensuse: sudo zypper in intltool. Kalau sudah jalankan kembali configure. Jangan lupa titik dan garis miringnya ya.

$ configure.ac:10: error: required file './ltmain.sh' not found

Lah error lagi. Ternyata butuh program libtoolize, jadi silakan pasang dulu jika belum ada pakai zypper. Kalau sudah kembali jalankan configure.

$ configure.ac:3: error: required file 'config.h.in' not found

Masih error ternyata. Kali ini kurang librari autoheader. Jadi silakan pasang dulu aplikasinya. Btw, sepertinya error ini terjadi karena saya tak jalankan perintah yang paling atas, yakni memasang aplikasi pendukung untuk kompilasi: sudo zypper in -t pattern devel_basis. Mungkin :D.

Oke, librari pendukungnya sudah siap. Lakukan lagi ./configure atau ./autogen.sh sampai bosan ya.

checking for maleo... no
configure: error: Package requirements (glib-2.0 >= 2.12.0 gtk+-3.0 >= 3.0.8 webkitgtk-3.0 >= 1.3.0 seed >= 3.2.0 libxml-2.0 >= 2.9.1) were not met:

No package 'gtk+-3.0' found
No package 'webkitgtk-3.0' found
No package 'seed' found

Loh kok masih error? Ya sudah silakan pasang ketiga program di atas. Di openSuse, yang bisa dipasang cuma dua, yakni gtk+-3.0 dan webkitgtk-3.0. Caranya, pasang dua aplikasi ini:

$ sudo zypper in gtk3-devel libwebkitgtk3-devel

Nah khusus yang terakhir, ternyata saya tak menemukan paket seed di repo punya si bunglon. Makanya kita harus kompilasi manual. Tapi kita gunakan repo milik pak Diorahman, sesuai saran pak Estu.

git clone https://github.com/rockybars/seed.git

Masuk ke direktori seed dan lakukan kompilasi di sana. Oiya, baca dulu commit yang dilakukan pak Dio ya, karena ada dua baris yang diganti di berkas configure.ac. Kalau sudah disamakan, silakan jalankan perintah mejiknya:

$ ./autogen.sh
$ make
$ sudo make install

Baik, seed sudah dipasang. Harusnya proses ./configure (atau./autogen.sh) tidak ada masalah lagi ya.

config.status: error: po/Makefile.in.in was not created by intltoolize

Sayangnya tidak, karena ternyata masih ada errornya. Ini apa lagi? Padahal dicek di direktori, jelas berkas Makefile.in.in ada loh.

Ternyata eh ternyata, dari hasil riset eh googling, ada semacam konflik kepentingan di dua aplikasi, gettext dan intltool. Berdasarkan laman ini dan ini, katanya ada yang harus diubah di berkas configure.ac. Entah benar atau tidak, baris berikut saya kasih tagar (#) alias dikomentari.

...
GETTEXT_PACKAGE=maleo
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
AC_SUBST(GETTEXT_PACKAGE)
AM_GLIB_GNU_GETTEXT
#IT_PROG_INTLTOOL([0.35.0])	<---- ini dikomentari pakai tagar alias hashtag
...

Nah kali ini proses configure seharusnya tidak ada masalah lagi.

Kalau sudah selesai, mari lanjutkan ke perintah berikutnya, make dan sudo make install. Tapi saya ingin buat berkas rpm, jadi kita gunakan perintah su -c checkinstall.

Kalau belum ada programnya, silakan cari di software.opensuse.org. Lalu lakukan perintah ini:

$ make
$ su -c checkinstall

Ada tiga langkah dalam pembuatan berkas biner ini. Langkah pertama adalah pembuatan berkas doc.

The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs?  [y]: y <== direktorinya dibikin

Langkah kedua, pemilihan berkas yang mau dibikin. Ada tiga pilihan, berkas Slackware (tgz), Debian (deb) atau RPM. Karena maunya bikin RPM, pilih R saja.

Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R

Langkah terakhir adalah memberikan deskripsi bagi paket yang mau dibangun. Silakan isi dengan hal-hal yang bermanfaat.

Please write a description for the package.
End your description with an empty line or EOF.
>> Isi deskripsinya di sini
>> 

Setelah itu, akan ada konfirmasi tentang paket yang akan dibangun. Di langkah ini, edit yang nomor 3 karena kalau tidak nanti bakal ada error.

This package will be built according to these values: 

1 -  Summary: [ Maleo  is a html5 application runner. It is built using Gtk+ Webkit port in Vala programming language. ]
2 -  Name:    [ maleo ]
3 -  Version: [ 0.1.0
0.1.0 			<<<--- bikin error
0.1.0 ]			<<<--- bikin error

Ubah menjadi seperti ini:

Enter a number to change any of them or press ENTER to continue: 3
Enter new version: 
>> 0.1.0

Hasilnya seperti ini:

This package will be built according to these values: 

1 -  Summary: [ Maleo  is a html5 application runner. It is built using Gtk+ Webkit port in Vala programming language. ]
2 -  Name:    [ maleo ]
3 -  Version: [ 0.1.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ Applications/System ]
7 -  Architecture: [ x86_64 ]
8 -  Source location: [ maleo ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ maleo ]

Sudah selesai? Belum ternyata. Saat pembuatan berkas doc, nanti ada error seperti ini:

make[2]: Nothing to be done for 'install-exec-am'.
 /usr/bin/mkdir -p '/usr/doc/maleo'
/usr/bin/mkdir: cannot create directory ‘/usr/doc’: No such file or directory
Makefile:458: recipe for target 'install-maleodocDATA' failed
make[2]: *** [install-maleodocDATA] Error 1
make[2]: Leaving directory '/home/hahn/Dokumen/project/blankon/contoh/maleo'
Makefile:780: recipe for target 'install-am' failed
make[1]: *** [install-am] Error 2
make[1]: Leaving directory '/home/hahn/Dokumen/project/blankon/contoh/maleo'
Makefile:486: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

****  Installation failed. Aborting package creation.

Cleaning up...OK

Bye.

Karena itu ubah berkas Makefile.in di baris ini (di saya di baris 371):

maleodocdir = ${prefix}/doc/maleo
#ubah menjadi ini:
maleodocdir = ${prefix}/share/doc/maleo

Kalau sudah, silakan jalankan kembali perintah checkinstall. Niscaya kali ini hasilnya… tetap gagal :))

Entahlah, padahal tulisannya installation successful. Alias sukses. Apalagi ketika coba format Debian maupun Slackware berhasil loh. Ini kenapa pakai RPM malah gagal :D. Errornya ini:

Building target platforms: x86_64
Building for target x86_64
Processing files: maleo-0.1.0-1.x86_64
error: Not a directory: /var/tmp/tmp.cKT9iIxoLJ/package/usr/bin/html5app

RPM build errors:
    Not a directory: /var/tmp/tmp.cKT9iIxoLJ/package/usr/bin/html5app

Ya iyalah, html5app itu memang bukan direktori, tapi symlink ke /usr/bin/maleo. Pusing juga ini kenapa :D. Mungkin harusnya pakai perintah rpmbuild, tapi saya belum sempat coba. Karena itu, untuk sementara kembali ke langkah di awal setelah make berhasil, yakni install langsung pakai sudo make install :D.

Kalau sudah dilakukan, mari kita coba buka direktori hello-world yang ada di direktori examples. Pakai alamat absolut ya, bukan alamat relatif.

$ maleo /alamat/asli/berkas/maleo/examples/hello-world
bukan begini:
$ maleo hello-world

Jika hasilnya seperti gambar di atas, selamat, usaha anda sudah berhasil!

*selamat untuk Persib yang sudah memutus rekor selalu kalah di tandang. Satu poin yang penuh drama yah, seperti kamu, dulu~~~*

Ada komentar?

%d bloggers like this: