22 Ekim 2017 Pazar

LibreOffice, Libreoffice Online Derleme ve Yama Gönderme Süreci



    Libreoffice bir masaüstü ofis paketidir. Yıllar boyunca farklı adlarda geliştirilmiş şu an ise  Libreoffice adıyla devam etmektedir. Libreoffice Online ise halihazırda olan Libreoffice çatısı altındaki masaüstü uygulamaların tarayıcı üzerinde çalışan halidir. Bununla birlikte Libreoffice yüklemeksizin tüm cihazlar tarayıcı ile Libreoffice uygulamalarını kullanabilecek hale gelmesi hedeflenmiştir. Bundan sonraki adımlarımı Fedora 'da dnf ve Debian 'da apt için ayrı ayrı anlatmaya çalışacağım.

LibreOffice çekirdeğini derlemek


Derleme sürecinde işletim sisteminden işletim sistemine farklı paketler eksik çıkabiliyor bunları kurmanız gerekebilir. Önce temel bağımlılıkları kuralım:

apt:
 $ sudo apt-get build-dep libreoffice
 $ sudo apt-get install git libkrb5-dev libjpeg-turbo8-dev doxygen graphviz 



dnf:

 $ sudo dnf builddep libreoffice
 $ sudo apt-get install git doxygen graphviz 

Ben çekirdek ve online'ı ayırmak ve daha düzenli tutmak için her ikisini de libreoffice adlı bir klasörün altında tutuyorum. Bunun için önce libreoffice klasörü oluşturalım ve içerisine girelim:

 $ mkdir libreoffice  
 $ cd libreoffice  

Şimdi ise libreoffice core'u yerelimize çekelim:

 $ git clone git://anongit.freedesktop.org/libreoffice/core  

sonrasında dizine girelim ve derleme süreci öncesi gerekli işlemleri yapalım:

 $ cd core  
 $ ./autogen.sh  

Derleme işlemini başlatalım:

 $ make  

Bu işlem bir hayli uzun sürecek. Sorunsuz bir şekilde bittiğini varsayarsak artık şu komutlarla libreoffice'in ürünlerini test edebiliriz:

 $ instdir/program/soffice --writer  
 $ instdir/program/soffice --calc  

Şu
sayfada bu işlemleri daha ayrıntılı bir şekilde bulmak mümkün.

LibreOffice Online derlemek

Öncelikle core klasöründen çıkıp bir üst dizin olan libreoffice klasörümüze geri dönelim ve online deposunu yerelimize çekelim:
 $ cd ..  
 $ git clone https://github.com/LibreOffice/online.git  
 $ cd online  

LibreOffice iki temel bileşender oluşuyor. loolwsd ve loleaflet
Öncelikle Web Services Daemon(wsd)'yi derleyelim.

loolwsd'i derlemek

Şu bağımlılıkları var:
* libpng
* poco kütühanesi: http://pocoproject.org/index.html
* libcap-progs 

* npm
Bunlara ek olarak farklı işletim sistemlerinde farklı bağımlılıklar olmayabilir. Onları da elle yüklemek gerekebilir. Şu komutla temel bağımlılıkları kuralım:

apt:
 $ sudo apt-get install libcap-dev libpng12-dev libtool m4 automake nodejs  


dnf:
sudo dnf install libcap-devel libpng-devel libtool m4 automake nodejs
Poco depoda da var ama ben kendim derlemeyi tercih ettim. Depodan kurduğum versiyonda "Segmentation fault" hatası aldığım için. İllaki depodan kuracaksanız:
apt:
 $ deb https://www.collaboraoffice.com/apt-poco/ /  
 $ sudo apt-get update  
 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D  
 $ sudo apt-get update  
 $ sudo apt-get install libpoco-dev  

dnf: Depodan rahatlıkla kurabilirsiniz.

sudo dnf install poco-devel
Poco'yu yüklemeyi bir türlü halletiğinizi düşünerek işlemlere devam edelim.

Sırasıyla şu komutları çalıştıralım:

 $ libtoolize  
 $ aclocal  
 $ automake --add-missing  
 $ autoreconf  
 $ autoheader  

Şimdi derleme öncesi ayar kısmına geldik.

 $ ./configure --enable-silent-rules --with-lokit-path=/home/ozturkemre/libreoffice/core/include --with-lo-path=/home/ozturkemre/libreoffice/core/instdir --enable-debug  

Buradaki lokit-path ve lo-path daha önce derlediğimiz core parçasının içeriği. Sizde yerelinizdeki ile değiştirin. Eğer siz de poco 'yu elle derlemişseniz burada bunun konumundan da bahsetmemiz gerekecek.
--with-poco-includes=<POCO_dizini>/include ve --with-poco-libs=<POCO_dizini>/lib parametrelerini configure komutuna eklemeliyiz.

Geldik derleme kısmına:

 $ make  

Bu aşamada lxml ve polib hatası alabiliyorsunuz. Şu komutlarla pip aracılığıyla onları da kurabilirsiniz:

$ sudo pip install polib
$ sudo pip install lxml 
loolwsd ile ilgili ayrıntılı anlatımı şu adresten bulabilirsiniz.

Geldik leaflet platformuna.

loleaflet'i derlemek

Öncelikle loleaflet dizinine girelim:
 $ cd loleaflet  

npm ile bağımlılıkları yükleyelim.

 $ sudo npm install -g jake  

npm en az 3.x sürümünde olmalı. Kontrol edelim

 $ npm -v  

Değilse güncelleyelim.

 $ npm install -g npm  

makefile dosyası node diye aradığından sembolik link oluşturalım.

 $ sudo ln -s /usr/bin/nodejs /usr/bin/node  

Şimdi derlemeye hazırız.

 $ make  

Derlemeden sonra bir önceki dizine dönelim ve çalıştıralım:

 $ cd ..  
 $ ./loolwsd --o:sys_template_path=systemplate --o:lo_template_path=/home/ozturkemre/libreoffice/core/instdir --o:child_root_path=jails --o:storage.filesystem[@allow]=true  

Ve konsolun bize söyledği adrese tarayıcımızla girdiğimizde dosyamızı göreceğiz.

leaflet ile ayrıntılı bilgiyi buradan bulabilirsiniz.

Yamamızı Gerrit'e gönderme

Libreoffice web tabanlı olan Gerrit kod işbirlikçisini kullanılıyor. Öncelikle geliştiriciler sayfasını düzenleyerek kendimizi bu sayfaya eklememiz gerekiyor. Bu sayfadaki lisans kısmını doldurabilmek için libreoffice@lists.freedesktop.org adresine geçmiş ve gelecekteki tüm katkılarımızın MPLv2/LGPLv3+ lisans çifti ile lisanslanabileceğini belirten bir mail atmamız gerekiyor.

Konu kısmı şu şekilde olmalı:
<isminiz> license statement

mail içeriği ise şu şekilde olmalı:

 All of my past & future contributions to LibreOffice may be
   licensed under the MPLv2/LGPLv3+ dual license.


Maili attıktan sonra geliştiricilerin olduğu sayfasına geri dönelim. Burada geliştiriciler soyisim, isim sırası ile tutuluyorlar. Soyisminizin başladığı harf bloğuna şu şekilde ekleme yapabilirsiniz:

O
-------------------------------------------------------------
.
.
.
|-
| documentfoundation wikisindeki kullanıcı adınız
| Soyisim, İsim
| {{nospam|git email adresiniz}}
| IRC nickiniz
| Individual
| [Attığınız lisans mailinin adresi]
|-
.
.
.

Lisans mailinizi şu adresten bulunduğunuz ayın thread sayfasında bulabilirsiniz.
Örneğin: https://lists.freedesktop.org/archives/libreoffice/2017-October/078596.html

Gerrit ayarlarının yapılması

Önce bir gerrit hesabı açalım.
Bu adresten Register kısmına tıklayarak birden farklı yolla kayıt olabiliriz. Sonrasında giriş yapalım ve sağ üstten adımıza tıklayarak Settings kısmını açalım. Burada "SSH Public Keys" kısmını doldurmamız gerekecek.

Bunun için öncelikle bir anahtar çifti oluşturalım. Bunu ana dizinizimdeki(core) logerrit uygulaması sayesinde yapacağız.

 $ ./logerrit setup  

komutu sonrası "/home/[kullanici_adimiz]/.ssh/id_rsa.pub" dosyasının içeriğini SSH Public Keys sayfasındaki Add Key butonuna basarak ekleyelim.

 $ ./logerrit test   

komutu sorunsuz bir şekilde çalıştıysa tamam demektir.

Libreoffice wiki sayfasında belirtilen şu Easy Hacks sayfasından başlamak başlangıç için iyi bir tercih olacaktır.

Yamamızı bitirdiğimizi düşünürsek şimdi gelelim bunu gönderme kısmına.

 $ git checkout -b <yeni_dal_adi>  

ile yeni bir dal oluşturup o dala geçtik. Şimdi dosyalarımızı ekleyelim.

 $ git add dosya_adi  

Gelelim commit işlemine. Commit mesajımızda bug numarasını eşleştirmemiz lazım. Bu işlemi commit mesajının başına "tdf#<bug_id>" ekleyerek yapacağız.

 $ git commit  

Şimdi commit'imizin bir change id'si olmalı.

Buradan sonrasında yazımı online ve core olarak ikiye ayırıyorum.

Core için

commit-msg dosyamız çalıştırılabilir olmalı.
 $ chmod u+x ~/libreoffice/core/.git/hooks/commit-msg  

Sonrasında şu komutla change-id miz oluşturulsun.

 $ curl -Lo ~/libreoffice/core/.git/hooks/commit-msg https://gerrit.libreoffice.org/tools/hooks/commit-msg  

Şimdi de bu commit'imizi gerrit deposuna gönderelim:

 $ ./logerrit submit master  

Online için

commit dosyamızı çalıştırılabilir yapalım.
 $ chmod u+x ~/libreoffice/online/.git/COMMIT_EDITMSG

Change-id mizi oluşturalım.

 $ curl -Lo ~/libreoffice/online/.git/COMMIT_EDITMSG https://gerrit.libreoffice.org/tools/hooks/commit-msg  

Commit'imizi gerrit deposuna gönderelim:

 $ git push ssh://logerrit/online HEAD:refs/for/master  

Gerrit sayfasında commit'imizi görebiliriz.

Böylece LibreOffice, Libreoffice Online derleme ve yama gönderme sürecini öğrendik.

İyi çalışmalar.

LibreOffice, Libreoffice Online Derleme ve Yama Gönderme Süreci

    Libreoffice bir masaüstü ofis paketidir. Yıllar boyunca farklı adlarda geliştirilmiş şu an ise  Libreoffice adıyla devam etmektedir. Lib...