LibreOffice Programlamaya Giriş

Cevapla
Kullanıcı avatarı
sabriunal
Mesajlar: 195
Kayıt: 31 Tem 2012, 23:26
İşletim Sisteminiz: Ubuntu, Fedora, Linux, Manjaro
LibreOffice Sürümü: Her zaman güncel

LibreOffice Programlamaya Giriş

Mesaj gönderen sabriunal »

Yazan: Barış Akkurt
Yazı Kaynağı: http://ozguryazilim.itu.edu.tr/blog/lib ... maya-giris
Yazı ilgili siteden yeniden düzenlenerek, kimi noktalar kısaltılarak alıntılanmıştır.
Bu yazı LibreOffice yazılımını derleme ve kodda değişiklik yapıp bir yama hazırlama adımlarını açıklamaktadır.

Giriş

Bu yazı bilgisayarınızda LibreOffice yazılımını nasıl derleyeceğinizi ve daha sonraki geliştirme aşamalarını anlatır. Ben bu adımları tek tek uyguladım. Uygularken aldığım notları da düzenli bir yazı haline getirmeye çalıştım.

LibreOffice şu ana bileşenlerden oluşur:

Writer: Bir sözcük işlemci uygulamasıdır.
Calc: Bir hesap tablosu uygulamasıdır.
Impress: Sunum hazırlama uygulamasıdır.
Base: Veritabanı yönetim uygulamasıdır.
Draw: Vektör grafik uygulamasıdır.
Math: Matematiksel formülleri uygulamasıdır.

LibreOffice’e çeşitli yollarla katkıda bulunabilirsiniz. Kod yazabilir, çeviri yapabilir, belge üretebilir, hata bildirebilirsiniz.

Bu belgede ben kod olarak nasıl katkıda bulunulacağını açıklamaya çalışacağım.

Bu belgeden yararlanabilmek için C++ bilmeli ve Ubuntu kurulu bir bilgisayara sahip olmanız gerekmektedir. LibreOffice sürüm denetimi yazılımı olarak Git kullanır. Git bilmeseniz de olur, kullana kullana öğrenebilirsiniz, zaten en başta kullanacağınız bir iki temel komut dışında bir şey bilmeniz gerekmeyecek. Ben daha önce hiç Git kullanmamıştım ama hemen öğrendim komutları.

Derleme ve Build Etme

Öncelikle şunu belirtmeliyim, bu belge resmi bir belge değildir ve sadece yol gösterme ve işleri kolaylaştırabilmek amacıyla yazılmıştır. Eğer derleme ile ilgili bir sorununuz olursahttp://wiki.documentfoundation.org/Development/Linux_Build_Dependencies adresine bakabilirsiniz. Bu adres derleme ve build etme için bakacağınız ilk adrestir. Eğer derleme işleminde bir hata veya sorunla karşılaştırsanız IRC’te LibreOffice kanalından yardım alabilirsiniz veya ilgili geliştiricilere e-posta atabilirsiniz.

Önce derleme işlemi için gerekenlere bir göz atalım. LibreOffice geliştirmesine katkıda bulunabilmek için bilgisayarınızda 7-10GB boş yer olması gerekir. Örneğin ben kodları bilgisayarıma indirdim ve şu anda 6,2 GB yer tutuyor. Ancak bağımlı paketler de kuracağımız için bu sayının fazla olmasında yarar var.

Ubuntu 11.10 kurulu bilgisayar için gereken paket bağımlılıklarını şöyle kurabilirsiniz:
sudo apt-get build-dep libreoffice
sudo apt-get install ccache
Bu iki komut ile istenenleri kurduktan sonra https://github.com/downloads/KentBeck/j ... -4.9b2.jar adresinden JUnit’i indirip kurmalısınız. Ubuntu paketi JUnit ile ilgili bildirilmiş bir hata var bu nedenle bu adresten indirip kurulum yapıyoruz. Eğer JUnit’i kuramazsanız da belgeyi izlemeye devam edebilirsiniz. Daha sonra derleme işlemine vereceğimiz bir parametre ile JUnit’i devre dışı bırakabiliriz.

Yukarıda bahsedilmiş olan ccache aracının ilk build işlemine bir etkisi yoktur. Hatta bir miktar yavaşlatabilir bile ancak kod yazıp yeniden build yaptığınızda bu build’i çok hızlandıracaktır. Bu nedenle kurmanızı tavsiye ederim. Bu aracı kurar kurmaz etkinleşecektir.

Windows kurulu bir bilgisayarda da LibreOffice geliştirmesi yapabilirsiniz. Windows için gereken bağımlılıkların nasıl kurulcağı http://wiki.documentfoundation.org/Deve ... pendencies adresinde anlatılmıştır. Ubuntu'da yapmak daha kolay gibi sanki.

Şimdi sıra kaynak kodları indirmeye geldi. Ev dizininize gidin ve
mkdir git
cd git
git clone git://anongit.freedesktop.org/libreoffice/core libo
komutu ile bir git dizini oluşturup içine girecek ve kaynak kodları git dizinin içindeki libo dizinine indirmeye başlayacaksınız.

Bu işlem biraz uzun sürebilir. Eğer bu işlem herhangi bir nedenle başarısız olursa 2. bir yöntem var, onu deneyebilirsiniz: http://wiki.documentfoundation.org/Deve ... tive_Build adresinde

Native Build adresindeki belgede build performansını arttırabilmek için distcc / Icecream gibi araçların kurulması da anlatılmış ancak ben kurmadan yoluma devam ettim. Siz de yeni başlayan bir LibreOffice geliştiricisiyseniz (ki bunu okuyorsanız büyük olasılıkla öylesiniz) bu adımı atlayabilirsiniz.

Ubuntu’da gnome-vfs-2.0 paketi bulunamadı hatasını almamak için
sudo apt-get install libgnomevfs2-dev
komutu ile ilgili paketi kurun.

LibreOffice, kodların belgelerini üretebilmek için Doxygen kullanır. Bu nedenle
sudo apt-get install doxygen
komutu ile Doxygen’i kurun.

Build işlemine başlamak üzereyiz, az kaldı. Build işlemi ile ilgili bazı ayarları yapacağız şimdi. Bu ayarlar autogen.sh betiği ile yapılır.

Ben derleme işlemine birkaç kez başladım ancak, daha sonra hata aldığım oldu. En sonunda başarıyla tamamladım. Başarılı olan işlem için aşağıdaki komutu vermiştim build ayarlarını yapmak için.
./autogen.sh --without-junit --with-num-cpus=4 --disable-mozilla --disable-binfilter --with-jdk-home=$JAVA_HOME
Eğer siz de yukarıdaki adımlarda anlatılan JUnit kurulumunu yapmadıysanız --without-junit parametresini vermelisiniz.

--disable-mozilla parametresi mozilla ile ilgili modülleri iptal eder. 135/139 modülünde moz module failed hatası alınca Mozilla modülünü iptal ederek yeniden derlemeye başladım. (Mozilla modülü bayağı kişide hata veriyordu e-posta listelerinde çok vardı böyle gelen mailler)

--with-jdk-home=$JAVA_HOME parametresini de eğer Javac not found gibi bir şeyle karşılaşırsanız kullanabilirsiniz.

--disable-binfilter parametresi de çok önemli olmayan bir modülü iptal ederek build işlemi yapıyor. Böylece süreyi bir miktar kısaltabilirsiniz.

Eğer autogen.sh betiğini çalıştırarak ayarları da yaptıysanız
make fetch
komutunu verin.

İşte asıl build adımı şimdi başlıyor.
make
komutu ile build işlemini başlatabiliriz. Bunun yerine
make 2>&1 | tee build.log
komutunu vererek build işlemini de başlatabiliriz. Böylece build adımındaki log’lar build.log dosyasına kaydedilecektir. İhtiyacınız olursa build.log’dan bilgi alabilirsiniz.
Build etme işlemi 8-9 saat sürüyor. Kendinizi buna göre ayarlayın. Eğer bilgisayar başından ayrılacaksanız bilgisayarınızın otomatik kapanma özelliğini iptal etmeyi unutmayın.
Eğer her şey yolunda gittiyse ertesi gün (ya da o günün akşamı) LibreOffice build success gibi bir ileti göreceksiniz ekranınızda. Ayrıca ev dizininize gidince orada bir git dizini ve bu git dizinin içinde bir libo dizini ve libo dizinin içinde de LibreOffice’in kodları olacaktır.

Yama Oluşturma

Tebrikler. Koskoca bir yazılım projesini başarıyla build ettiniz. Şimdi kod yazma ve bir yama oluşturma aşamasına geldik. LibreOffice'e kod katkısı yapmaya başlamanın en iyi yolu bir EasyHack bulup onunla uğraşmaktır. EasyHack'lere buradan ulaşabilirsiniz: http://wiki.documentfoundation.org/Deve ... s_by_Topic

Diyelim ki, LibreOffice'in About sayfası hakkında ufak bir değişiklik yapmak istiyorsunuz. About sayfasının kaynak kodları ~/git/libo/sfx2/source/dialog/about.cxx adresinde yer alır. Gereken düzeltmeleri ve eklemeleri yaptığınızı varsayalım. Bu değişiklikleri denediniz ve çalışıyor diye bir kabul daha yapalım. Şimdi bir yama oluşturmak ve bunu LibreOffice'e göndermeye sıra geldi.
cd ~/git/libo/sfx2/source/dialog/
Komutu ile değişiklik yaptığınız yere gidin.
git commit -a
komutu tüm değişiklik yapılmış dosyaları commit edebilirsiniz veya
git add <file1> <file2>
git commit
komutu ile istediğiniz dosyaları commit edebilirsiniz.
git format-patch HEAD~1
komutu ile de yamanızı oluşturabilirsiniz. Şimdi elinizde bir dosya olacak. Bu dosyayı LibreOffice e-posta listesine yollarsanız, bir geliştirici yamayı alacak ve eğer uygun görürse uygulayacak, eğer bir hatanız varsa da size bilgi verecektir.

Sorular

1-Bir yeri düzeltmek istiyorum, ancak ilgili kodu bulamıyorum. Nasıl ilgili koda erişirim?

http://opengrok.libreoffice.org/ adresinde LibreOffice kaynak kodları arasında arama yapabilirsiniz.

http://wiki.documentfoundation.org/Deve ... e_Overview sayfası da hangi dizinin ne ile ilgili kodlar içerdiğini kısaca açıklıyor, belki işinize yarayabilir. Hala bulamadıysanız, sizden deneyimli bir geliştiriciye sorabilirsiniz.
Cevapla