Compile Telegram Desktop di Debian Sid

Today I learned that Telegram Desktop is in Debian Sid repository...

Tadinya saya sedang mencari di internet bagaimana cara mengganti huruf pada Telegram Desktop yang huruf asalinya dirasa tidak begitu bagus. Sekilas mencari, sepertinya saya menemui jalan buntu karena isu yang berupa usulan penambahan fitur mengganti huruf pada Telegram Desktop ini kurang mendapat sambutan dari pengembangnya, bahkan issue-nya pun dikunci.
Namun demikian, issue tersebut wajib dibaca bagi mereka yang berminat mengganti huruf pada Telegram Desktop, selain untuk mengetahui alasan dibalik "penolakan" juga ada beberapa pesan yang menerangkan jalan bagaimana kita dapat mengubah huruf Telegram Desktop dengan cara melakukan kompilasi mandiri.

Dibalik kabar buruk, muncul sebuah kejutan. Kejutan yang menyenangkan.
Ternyata salah satu hasil pencarian yang muncul adalah laman paket telegram-desktop di situs packages.debian. Mengapa ini sebuah kejutan yang menyenangkan? Karena dengan masuknya paket Telegram Desktop ke dalam repositori Debian maka proses kompilasinya dipastikan lebih mudah.

Sejauh yang saya ketahui, pada awal perkembangannya, demi mencapai tujuan tampilan yang sama di semua sistem operasi maka pengembang Telegram Desktop menggunakan Qt sebagai toolkit GUI. Namun itu saja ternyata belum cukup karena ada beberapa "pernik" yang tidak sama antara satu dengan lain sistem operasi. Hal ini memaksa mereka melakukan penambalan (patch) pada beberapa pustaka Qt yang digunakan. Penggunaan patch ini menyebabkan Telegram Desktop sulit masuk ke dalam repositori berbagai distro besar dengan alasan penggunaan patch menjadikan proses kompilasi menjadi rumit dan terutama pustaka Qt mereka menjadi proprietary yang berbeda baik secara kode ataupun lisensi dengan Qt upstream.

Dengan telah masuknya Telegram Desktop ke dalam repositori Debian, berarti permasalahan soal dependencies atau pun lisensi sepertinya bukan lagi menjadi halangan karena Debian terkenal sangat ketat mengenai lisensi dan penggunaan pustaka di luar repositori Debian.

Sekarang kita kembali ke awal cerita.
Jadi akhirnya walau pihak Telegram Desktop sepertinya masih lama untuk menambhakn fitur penggantian huruf, namun setidaknya dengan telah masuknya Telegram Dekstop ke dalam repositori Debian menjadikan proses kompilasi Telegram Desktop untuk mengganti hurufnya menjadi lebih mudah.

So, here it is... Sebuah artikel mengenai bagaimana cara mengompilasi Telegram Desktop secara mandiri. Saya akan menghindari pembahasan di luar kompilasi karena hal tersebut bisa cukup rumit. Terserah alasan Anda mengapa melakukan kompilasi, mungkin untuk mengganti huruf, menambah language file, atau memang sekedar ingin mencoba.

  1. Pertama, aktifkan repositori source. Gunakan apt edit-sources untuk menyunting berkas /etc/apt/sources.list.
    sudo apt edit-sources
    

    Tambahkan cermin lumbung paket tempat sistem akan mengambil berkas source.
    Misal saya menggunakan:

    deb-src http://mirror.0x.sg/debian/ sid main contrib non-free
    

    Sebenarnya, untuk paket biasa saya mengambilnya dari http://suro.ubaya.ac.id, namun karena selalu gagal dalam mengambil source dari sana saya beralih ke cermin lain.

  2. Langkah kedua, mutakhirkan sistem.
    sudo apt update
    
  3. Unduh berkas sumber untuk Telegram Desktop.
    apt source telegram-desktop
    

    Perintah ini akan mengunduh 3 berkas; berkas source, patch dari Debian, dan signature dari Debian. Saat artikel ini dibuat, paket Telegram Desktop di repo Debian Sid adalah versi 1.1.10. Dan ketiga berkas tersebut adalah telegram-desktop_1.1.10.orig.tar.gz (source), telegram-desktop_1.1.10-1.debian.tar.xz (patch) dan telegram-desktop_1.1.10-1.dsc (signature).
    Ketiga berkas ini akan langsung dijalankan; source akan diuraikan dan signature serta patch akan diterapkan. Karenanya di dalam direktori tempat Anda menjalankan perintah ini akhirnya akan terdapat empat berkas; satu folder hasil extract dan patch, serta tiga berkas sebagaimana tersebut di awal.

  4. Kini saatnya untuk melakukan penyuntingan pada map (folder) source Telegram Desktop.
    Do what you need to do know...
  5. Usai melakukan penyuntingan, kini saatnya untuk melakukan kompilasi.
    Masuk ke dalam folder hasil extract. Dalam contoh ini adalah telegram-desktop-1.1.10.
    cd telegram-desktop-1.1.10
    
  6. Jalankan perintah untuk melakukan kompilasi langsung menjadi berkas Debian.
    Pastikan Anda telah memasang paket build-essential.
    dpkg-buildpackage -rfakeroot -uc -b
    

    Jika paket-paket yang menjadi ketergantungan Telegram Desktop telah terdapat dalam sistem, maka yang perlu Anda lakukan hanya menunggu hingga kompilasi selesai. Namun jika ternyata dependencies-nya tidak terpenuhi, proses kompilasi akan terhenti. Perhatikan log yang muncul, misal dalam kompilasi yang pernah gagal saya lakukan:

    iza@sid:~/telegram-desktop-1.1.10$ dpkg-buildpackage -rfakeroot -uc -b
    dpkg-buildpackage: info: source package telegram-desktop
    dpkg-buildpackage: info: source version 1.1.10-1
    dpkg-buildpackage: info: source distribution unstable
    dpkg-buildpackage: info: source changed by Nicholas Guriev 
    dpkg-buildpackage: info: host architecture amd64
     dpkg-source --before-build telegram-desktop-1.1.10
    dpkg-checkbuilddeps: error: Unmet build dependencies: cmake (>= 3.0) dh-exec gyp libappindicator-dev libdee-dev liblzma-dev libmapbox-variant-dev libminizip-dev (>= 1.1) libmsgsl-dev libopenal-dev libopus-dev (>= 1.1) libssl1.0-dev | libssl-dev (<< 1.1) libtgvoip-dev qtbase5-dev (>= 5.5) qtbase5-private-dev (>= 5.5)
    dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
    dpkg-buildpackage: warning: (Use -d flag to override.)
    

    Seperti terlihat, dpkg-checkbuilddeps mengeluhkan tidak adanya paket-paket tertentu. Yang perlu kita lakukan adalah memasang paket-paket tersebut, misalnya:

    sudo apt install cmake dh-exec gyp libappindicator-dev libdee-dev liblzma-dev libmapbox-variant-dev libminizip-dev libmsgsl-dev libopenal-dev libopus-dev libssl1.0-dev libtgvoip-dev qtbase5-dev qtbase5-private-dev
    

    Ulangi lagi perintah dpkg-buildpackage -rfakeroot -uc -b. Dan mestinya proses kompilasi kini berjalan lancar.
    Di laptop jadul saya prosesnya lumayan lama, sekitar 20 menit. Ketika kompilasi selesai, akan ada empat berkas baru di luar folder telegram-desktop-1.1.10; telegram-desktop_1.1.10-1_amd64.buildinfo, telegram-desktop_1.1.10-1_amd64.changes, telegram-desktop_1.1.10-1_amd64.deb dan telegram-desktop-dbgsym_1.1.10-1_amd64.deb.
    Yang perlu kita pasang umumnya hanyalah berkas telegram-desktop_1.1.10-1_amd64.deb, kecuali Anda hendak melakukan debugging, maka berkas yang patut dipasang adalah telegram-desktop-dbgsym_1.1.10-1_amd64.deb.

  7. Berkas hasil kompilasi dapat dipasang menggunakan perintah:
    sudo dpkg -i telegram-desktop_1.1.10-1_amd64.deb
    

Berikut contoh tampilan Telegram Desktop yang telah saya ganti huruf yang tadinya Open Sans menjadi Arimo (kembaran Liberation Sans). Tidak terlalu memuaskan. Maklumlah, saya tidak begitu paham C/C++ jadi tidak paham bagian mana saja dari source code yang perlu disunting.

Custom compiled Telegram Desktop
Telegram Desktop hasil kompilasi