Membangun paket Manokwari di OBS openSUSE


Gara-gara lihat calon ketua KluB yang lagi asyik-asyiknya mengulik Manokwari agar bisa dipasang di openSUSE, akhirnya saya jadi ikut-ikutan tertarik mencobanya. Apakah Desktop Environment (DE) Manokwari yang merupakan DE bawaan BlankOn bisa dipasang di openSUSE?

Manokwari di openSUSE 42.3
Manokwari di openSUSE 42.3

Bagi yang belum tahu, Manokwari adalah DE bawaan salah satu distro yang dikembangkan sama orang Indonesia, BlankOn. Sependek pengetahuan saya, Manokwari merupakan evolusi dari BlankOn Panel. Manokwari pun dikembangkan oleh para pemuda (dan mungkin pemudi) Indonesia.

DE ini (sebagian orang menyebut hanya sebagai shell saja), berjalan di atas GNOME 3. Manokwari dikembangkan menggunakan bahasa Vala, javascript, dan HTML. Mungkin ada bahasa lainnya juga seperti C dan shell macam bash. Bagi yang mau ikut aktif menyumbang saran atau berkontribusi, silakan kunjungi repo githubnya.

Kembali ke permasalahan, apakah Manokwari bisa dipasang (dengan mudah) di openSUSE? Jawabannya ada di ujung langit…

Percobaan pertama, saya coba install manual, kompilasi langsung dari kode sumbernya. Kebetulan kini Manokwari sudah menggunakan meson untuk kompilasinya, sehingga (katanya) lebih mudah dalam hal kompilasi.

Merujuk pada tautan di sini, cara kompilasinya cukup gampang. Begini caranya (saya salin tempel verbatim alias seutuhnya):

$ git clone https://github.com/BlankOn/manokwari.git
$ cd manokwari
$ meson --prefix /usr build
$ cd build
$ ninja -j4 ((angka 4 sesuaikan dengan keinginan dan inti prosesor Anda))
$ sudo ninja install

Jika semua dependensi sudah dipenuhi, seharusnya proses kompilasi berjalan lancar. Untuk mencobanya, silakan logout dahulu, dan pas login, pilih DE Manokwari. Kalau kompilasi gagal, silakan baca lognya, ada librari apa saja yang tidak ada.

Oke, percobaan pertama berhasil. Saatnya mencoba build di OBS. Sebelumnya, apa itu OBS? OBS atau Open Build Systems merupakan mesin yang dapat kita gunakan untuk membuat paket Linux. Tidak hanya openSUSE, untuk distro lain pun sebenarnya bisa, terutama Fedora (yang sama-sama berbasis rpm) dan Debian (yang berbasis deb).

Untuk mengetahui lebih jelas apa itu OBS dan apa saja yang harus disiapkan (juga langkah-langkah membuat paket rpm di OBS), silakan unduh presentasi kang Andi Sugandi di sini.

Langkah-langkah yang akan saya tulis pun bersumber dari slide tersebut. Berikut caranya.

Unduh direktori kerja di OBS
Setelah osc dipasang dan sudah punya akun di sini, mari unduh dahulu direktori kerja akun kita. langkah ini ditempuh saat pertama kali kita bermain dengan osc. Kalau sudah pernah, bisa dilewati.

$ osc co home:nama_akun_di_obs
$ cd home:nama_akun_di_obs

Kalau belum pernah membuat paket, seharusnya di direktori `home:namakamu` tidak ada isinya. Kalau sudah biasanya ada direktorinya. Ini contoh punya saya:

$ ls
audacious-plugins-freeworld  maleo  manokwari  screenFetch  swift-rpm

Inisialisasi Paket
Karena kita mau membuat paket Manokwari, mari kita buat kerangkanya dulu

$ osc mkpac manokwari
$ cd manokwari

Unduh Paket
Unduh kode sumber yang akan kita buatkan paketnya. Sampai tulisan ini dibuat, versi Manokwari terbaru adalah versi 1.0.15.

$ wget -c https://github.com/BlankOn/manokwari/archive/1.0.15.tar.gz
$ mv 1.0.15.tar.gz manokwari-1.0.15.tar.gz

Buat berkas .spec
Langkah ini yang cukup rumit. Kita harus tahu langkah apa saja yang akan dilakukan di mesin OBS nanti. Untunglah untuk Manokwari, kang @alunux sudah buatkan berkas .spec-nya. Mari kita gunakan berkas ini dan edit seperlunya (saya pakai nano. Kalau kamu biasa pakai vim, silakan ganti dengan vim).

$ nano manokwari.spec

Ada beberapa yang harus diperhatikan di berkas .spec ini. Pertama, karena kita sudah mengunduh berkas kode sumbernya, maka bagian `Source` harus diubah, tidak lagi ambil langsung dari github:

Source:     %{name}-%{version}.tar.gz

Pada bagian BuildArch sebaiknya dihapus saja. Dari hasil beberapa kali percobaan, ada warning yang mengatakan kita tidak usah pakai BuildArch. Dan ketika dicoba build tanpa BuildArch, paket tetap berhasil dibuat.

Yang harus diperhatikan lagi adalah pada bagian-bagian akhir, yaitu pada bagian %posttrans. Ketika mengakses direktori atau membuat berkas, pastikan kita mengaksesnya sebagai root. Karena itu tambahkan `%defattr(-,root,root)`

Hasil akhir berkas `manokwari.spec` seperti berikut:

#
# spec file for package manokwari
#
# Copyright (c) 2017 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%global _hardened_build 1
%global _vpath_builddir build

Name:       manokwari
Version:    1.0.15
Release:    0
License:    GPL-2.0
Summary:    Manokwari desktop shell for GNOME 3
Url:        https://github.com/blankon/manokwari
Group:      System/X11
#Source:     https://github.com/BlankOn/manokwari/archive/%{version}.tar.gz
Source:     %{name}-%{version}.tar.gz

BuildRequires: pkgconfig(glib-2.0) >= 2.12.0
BuildRequires: pkgconfig(gtk+-3.0) >= 3.0.8
BuildRequires: pkgconfig(atk) >= 2.0.0
BuildRequires: pkgconfig(gee-1.0) >= 0.6.1
BuildRequires: pkgconfig(cairo) >= 1.10.2
BuildRequires: pkgconfig(libgnome-menu-3.0) >= 2.30.5
BuildRequires: pkgconfig(libwnck-3.0) >= 3.0.0
BuildRequires: pkgconfig(unique-3.0) >= 3.0.0
BuildRequires: pkgconfig(webkitgtk-3.0) >= 1.3.0
BuildRequires: pkgconfig(x11) >= 1.6.0
BuildRequires: pkgconfig(libnotify) >= 0.7.6

BuildRequires: vala >= 0.28
BuildRequires: meson
BuildRequires: intltool

Requires: hicolor-icon-theme
Requires: gnome-session
Requires: gnome-settings-daemon
Requires: control-center
Requires: gnome-screensaver
Requires: network-manager-applet
Requires: webkitgtk3
Requires: libnotify


%description
Manokwari is a desktop shell for GNOME 3. It features combined Gtk+ and HTML5 
frontend (Gtk+ is legacy here and would be replaced totally with HTML5 in the 
future). It is an evolution from a shell called blankon-panel

%prep
%setup -q

%build
#export LC_ALL=en_US.utf8
%meson
%meson_build

%install
export LC_ALL=en_US.utf8
%meson_install

%find_lang %{name}

%post
/sbin/ldconfig
/bin/touch --no-create %{_datadir}/icons/hicolor &> /dev/null || :

%postun
/sbin/ldconfig
if [ $1 -eq 0 ]; then
    /bin/touch --no-create %{_datadir}/icons/hicolor &> /dev/null
    /usr/bin/update-desktop-database &> /dev/null
    /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || :
fi

%posttrans
/usr/bin/update-desktop-database &> /dev/null
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || :

%files -f %{name}.lang
%defattr(-,root,root)
%doc DESIGN.md HACKING.md Styling.md
%license COPYING
%{_bindir}/%{name}
%{_bindir}/blankon-session
%config(noreplace) %{_sysconfdir}/xdg/menus/%{name}-applications.menu
%{_libdir}/%{name}/

%defattr(-,root,root)
%{_datadir}/applications/%{name}.desktop
%{_datadir}/gnome-session
%{_datadir}/gnome-session/sessions/blankon.session
%{_datadir}/xsessions/blankon.desktop

%changelog
* Tue Aug 08 2017 La Ode Muh. Fadlun Akbar <[email protected]> - 1.0.13-1
- initial package

Sekarang saatnya mencoba berkas spec itu di lokal.

$ sudo osc build openSUSE_Leap_42.3 x86_64 manokwari.spec

Kalau berhasil, nanti akan ada tulisan seperti ini di bagian akhir log:

...
[   15s] bunglon finished "build manokwari.spec" at Wed Oct 11 01:42:40 UTC 2017.
[   15s] 

/var/tmp/build-root/openSUSE_Leap_42.3-x86_64/home/abuild/rpmbuild/SRPMS/manokwari-1.0.15-0.src.rpm

/var/tmp/build-root/openSUSE_Leap_42.3-x86_64/home/abuild/rpmbuild/RPMS/x86_64/manokwari-1.0.15-0.x86_64.rpm

Kalau belum berhasil, sepertinya kamu membutuhkan iso DVD openSUSE, misalnya openSUSE-Leap-42.2-DVD-x86_64.iso. Kaitkan iso tersebut dan lakukan langkah-langkah berikut.

$ sudo mount openSUSE-Leap-42.2-DVD-x86_64.iso /run/media/opensuse422 -o loop
$ sudo mkdir -p /var/tmp/osbuild-packagecache/openSUSE\:Leap\:42.2/standard 
$ sudo cp -r /run/media/opensuse422/suse/* /var/tmp/osbuild-packagecache/openSUSE:Leap:42.2/standard
$ sudo find /var/tmp/osbuild-packagecache/openSUSE:Leap:42.2/standard -type d -exec chmod 755 {} \;
$ sudo find /var/tmp/osbuild-packagecache/openSUSE:Leap:42.2/standard -type f -exec chmod 644 {} \;
$ sudo osc build openSUSE_Leap_42.3 x86_64 manokwari.spec

Kalau tidak ada halangan, seharusnya sekarang sudah bisa build paket.

Jika sudah benar-benar suskes, sekarang saatnya membangun di mesin obs. Mari kita coba!

$ osc commit -m "pesannya apa"

Sending    manokwari.spec
Sending    manokwari.changes
Transmitting file data ..
Committed revision 4.

Kalau sudah sukses, sekarang lihat hasilnya di build.opensuse.org. Silakan login terlebih dahulu (jika mau ngedit lagi). Untuk proyek Manokwari, bisa dilihat di sini.

Dari gambar di atas, terlihat bahwa kita berhasil membuat paket Manokwari untuk openSUSE Leap 42.3, sementara untuk Leap 42.2 dan Tumbleweed gagal. Selamat! Lumayan lah ya.


Ada komentar?

This site uses Akismet to reduce spam. Learn how your comment data is processed.