22 Şubat 2011 Salı

Projede Olup Bitenler

Bitirme projem aracılığıyla içinde bulunduğum COMAK projesinde Pardusu, Kde masaüstü ortamından sıyırıp , başka masaüstü ortamlarında hali hazırda Kde kütüphaneleriyle mevcut olan bileşenleriyle birlikte kullanılabilir hale getirmek planlandı. Bu amacı gerceklestirmek icin bir iş bölümü yapıldı. Bir grup, Pardus ile birlikte gelen yönetici ailesini Kdeden bağımsızlaştırmaya çalışırken , diğer bir grup ise paketlemeyle ilgileniyor.

Paketlemeyle ilgilenen arkadaşların (Alper, Mesutcan, Mehmet Zahit, Engin, Özge) bloglarını ziyaret ederek yaptıklarıyla ilgili ayrıntıları takip edebilirsiniz.

Öte yandan yönetici ailesi tarafında yapılacak işlemler için bir ön hazırlık evresi geçirmek gerekiyordu. İlk olarak bütün proje ekibi yöneticileri paylaşarak ,yöneticilerdeki Kde bağımlılıkları buldu. Bu bağımlılıklar nedir , ne değildir kısaca anlatıldı. Bağımlılıklar tespit edilirken yöneticilerin davranışsal modelleri de çıkartıldı. Yöneticiler ve Kde bağımlılıkları hakkında yeterince bilgi sahibi olunduktan sonra , Kdesizleştirme işlemi yapıldı.

Kde kütüphanelerini kullanan Pardus yöneticileri , saf Qt ile yazılarak diğer masaüstü ortamlarında çalıştırıldı.Aynı zamanda yöneticinin kullandığı kütüphaneler bulunduğu ortama göre seçtirildi. Masaüstü ortamı Kde ise yönetici, Kde kütüphaneleri kullanmaya devam ettirildi.

Kde bağımsızlaştırmanın detaylarını , güvenlik duvarı yöneticisi üzerinden anlatacağım. İşlevi hakkında bilgi vermek gerekirse güvenlik duvarı yöneticisi kısacası gelen - giden bağlantıları engelleme ve izin verme işlemlerini yapan bir yöneticidir.

Yönetici kaynak kodları;
python betiklerinin bulunduğu src/ ,
arayüz dosyalarının bulunduğu ui/,
çeviri dosyalarının bulunduğu po/
uygulama ismi, simgesi, tipi , tanımlaması gibi özelliklerin olduğu data/
kurulum için setup.py
paket hakkındaki bilgileri barındıran PKG-INFO dosyası
README dosyasından meydana gelmektedir.

Kde bağımlı olan bölümler src/ , ui/ ve setup.py dosyasıdır.Bağımlılıklara ve nasıl giderildiklerini çok kısa anlatmak gerekirse;

setup.py dosyasındaki kde bağımlılığı;

.ui dosyalarını toplarken pykde4uic komutu yerine PyQt4 ile gelen pyuic4 aracı kullanıldı.

if FOR_KDE_4:
os.system("pykde4uic -o ui/ui_%s.py ui/%s -g %s" % (filename.split(".")[0], filename, PROJECT))
else:
os.system("pyuic4 -o ui/ui_%s.py ui/%s -g %s" % (filename.split(".")[0], filename, PROJECT))

Aynı şekilde ui dosyalarından python betikleri oluşturulurken de şu şekilde kullanıldı.

if FOR_KDE_4:
os.system("pykde4uic -o build/firewallmanager/ui_%s.py ui/%s -g %s" % (filename.split(".")[0], filename, PROJECT))
else:
os.system("pyuic4 -o build/firewallmanager/ui_%s.py ui/%s -g %s" % (filename.split(".")[0], filename, PROJECT))


src/firewallmanager/pagedialog.py dosyasında

class PageDialog(kdeui.KPageDialog):
def __init__(self, parent, parameters, savedParameters):


yerine

class PageDialog(QtGui.QDialog):
def __init__(self, parent, parameters, savedParameters):

Kde bağımlılıkları sadece src klasörünün altında değil , ui klasöründe de görülebilir. settingsitem.ui arayüzünde kullanılan KEditListBox bileşeni Kde bağımlı olup ,Qt'de tam olarak o işlevi sağlayacak bir grup bileşen olmadığı için, QtGui kütüphanesi kullanılarak oluşturulan bir grup bileşen ve o yapıyı sağlayacak bir kaç fonksiyon yardımıyla bir nevi kendi EditListBox'ımızı yaptık.

Proje hakkındaki konuların , yapılan değişikliklerin tartışıldığı listeyi ve yönetici ailesinin kde bağımsız hale gelmesi için çalışan arkadaşlarımın bloglarını (Aydan, Merve, Orçun, Tayfur, Kaan, Sertaç) takip ederek detaylı bilgi edinebilirsiniz.