January | 2010 | {Yaratıcı Bir Başlık}

Monthly Archives: January 2010

>formspring.me

>

openldap hakkında bir seyler yazabilir misiniz? Okuyup ogrenmeye calısıyorum. Umarım hayata gecırecegım.

Hmm ne yazayım bilemedim. Çok güzel bir şeydir. Kimlik kanıtlama konusunda gerçekten çok işe yarar bir araçtır. Bir uygulamanın ldap üzerinden kimlik kanıtlama yapabilmesi gerçekten önemli bir olay olduğunu düşünüyorum. Daha ayrıntılı şeyler yazabilmem için daha spesifik sorular olması gerekiyor…

Ask me anything

>BuildFarm

>

Build farm hakkında bir ufak çaplı bir yazmıştım ancak kaza sonucu yok olunca kısa ve öz bir şekilde build farmdan bahsetmeyi daha doğru buldum.

Buildfarm bizim elimizle yaptığımız paket derlemeyi otomatikleştirmeye yarayan bir buluş diye adlandırabiliriz. Kendisini doğru yapılandırınca, verilen xml’lerin paketlerini yapıyor, svn’de paketlerde bir değişiklik oluştuğunda haberdar olup onların paketlerini yapıyor, şu paketleri yapmaya başlıyorum, şu paketleri bitirdim ve şu paketlerde sorunlar yaşadım diye mail atıyor. Yapamadığı paketleri de bekletiyor…

Peki çalışır hale nasıl getirilir?

Başlangıçta svndeki son revizyonunda bir takım sorunlar var. Pardus ekibinden yeniden yazıldığı hakkında bilgi aldım. O yüzden sayın Türker Sezer ile konuşmamdan sonra açıklayıcı bilgilerinin ışında revizyon 24480 kullanmaya başladım(Ve onu anlatacağım).

Teknik olarak buildfarm pisinin yapacağı birşeyi yapmıyor. Bizim ile pisi arasında duruyor diyebilirim. Biz buildfarm’a toplu görevler veriyoruz, o da pisiye sırası ile iletiyor, oluşan paketleri bir yere topluyor ve index oluşturuyor(wrapper olarak kullanılıyor yani). Hayat kurtarıyor bile diyebilirim.

İki şeye ihtiyacımız olacak başlangıç olarak;
– buildfarm kaynak kodlarına,
– Buildfarm’a verilecek olan paketlerin pspec.xml ve actions.py içeren havuzu(repository).(Birde pardus’a tabiki)

İlk olarak /root un içerisine indirmemenizi tavsiye ediyorum. Çünkü disk dolsa bile root için ufak bir alanın kalması gerektiği ve böylece sisteme müdahale edebilme imkiyanının bulunabilmesi için…

Örnek olsun diye ben /hede diye bir dizin açtım kabul edelim.

ilk olarak;

# cd /hede
# svn co -r 24480 http://svn.pardus.org.tr/uludag/trunk/buildfarm

Bu sayede build farm kaynak kodlarını sistemimize indirmiş bulunuyoruz.

# svn co http://svn.pardus.org.tr/pardus/2009/devel

Bu sayede havuzu /hede dizinimize indirmiş bulunuyoruz. Bu havuzun svn yapısı ile tutulması buildfarm içinde gereklidir çünkü kendisi bu havuzdaki güncellemeleri kontrol edebiliyor. Böylece kendisine bunları ekledim, bi zahmet yapı ver dememize gerek kalmıyor.

# cd /hede/buildfarm

Bu dizinde bulunan config.py python kodunu düzenleyerek buildfarm’ı çalışır hale getireceğiz(python bilmenize gerek yok bunun için).

localPspecRepo = “/hede/2009/devel” -> Burada indirmiş olduğumuz paket havuzumuzun yolunu gösteriyoruz. Böylece buildfarm ne üzerinde çalışacağını öğreniyor.

logFile = “/var/cache/pisi/buildfarm.log” -> Buildfarm’ın temel loglarının bulunacağı dosyayı belirtiyoruz.

outputDir = “/var/cache/pisi/buildlogs/” -> Yapılmaya çalışılan paketler ile ilgili logların tutulacağı dizini belirtiyoruz.

binaryPath = “/var/cache/pisi/packages/” -> Oluşan paketlerin koyulacağı dizin

testPath = “/var/cache/pisi/packages-test/” -> Build farm’ın kendi oluşturduğu paketlerin dizini

debugSupport = False

debugPath = “/var/cache/pisi/packages-debug/”

ignoreCheck = True -> Actions.py’lerde check kısımlarının geçilmesini sağlar. Pek çok pakette bu testler düzgün yapılamadığı için ön tanımlu true gelir.

sendEmail = True -> Yaptıklarını bize haber verecek olan güzel teknoloji.

mailFrom = “buildfarm@pardus.org.tr” -> Gönderilecek mail’de kimden gelmiş kısmı

announceAddr = “buildfarm@pardus.org.tr” ->

ccList = [“buildfarm@pardus.org.tr”] -> Kime ek olarak gönderilecek

smtpServer = “mail.pardus.org.tr” -> Smtp servisi veren ve mail’in gönderileceği sunucu

useSmtpAuth = True -> Smtp gönderirken kimlik kanıtlaması yapılacağını belirtiyor.

generateDelta = True -> Hayatı kolaylaştıran delta paketlerin yapılacağını belirtiyor.

deltaBlacklist = [] -> Bu liste ise delta paketlerinin yapılmaması gereken paketlerin isimleri yazılması gerekiyor.

Şimdi bir adet mailauth.py diye dosya oluşturuyoruz. Çünkü mail gönderirken hangi kullanıcı ve parolası ile göndereceğini buraya bakarak söyleyecek. İçerisine

username = “hede@hodu.org.tr”
password = “xxxxxxxxxxxxxxxx”

yazılması yeterli. Çalıştırırken ilk olarak repomanager.py çalıştırılması daha sonra ise main.py çalıştırılması gerekmektededir.

Buildfarm çalıştıktan sonra /var/pisi altında iki tane dosya oluşacak;

workQueue, -> Burada yapılacak olan paketlerin pspec.xml’lerinin tam yolları yazılıyor,
waitQueue -> Burada ise yapılmasında bir sorun oluşmuş paketlerin bir sonraki çalışmada yeniden yapılabilmesi için sırada beklemeleri için tam yolları yazılı.

Ek olarak da /etc/pisi/pisi.conf’da bir kaç düzenlemeyle daha hızlı bir buildfarm elde edebiliriz;

[build]
buildhelper = ccache -> Bu seçenek derleme yaparken ccache paketinden yardım alır. Daha hızlı bir derleme oluşur.

buildno = True -> Bu seçenek ile aynı sürümden iki paketin çakışması engellenir.

cflags = -mtune=generic -march=i686 -O2 -pipe -fomit-frame-pointer -fstack-protector -D_FORTIFY_SOURCE=2 -g3 -ggdb -> Sona gelen -g3 -ggdb ile debug parametresi verilmiş olur. Oluşan hatalarda daha anlaşışır çıktılar gözlemlenebilir.

compressionlevel = 9 -> Paketlerdeki sıkıştırma oranını arttırır. Ancak sistemin canına okur.

cxxflags = -mtune=generic -march=i686 -O2 -pipe -fomit-frame-pointer -fstack-protector -D_FORTIFY_SOURCE=2 -g3 -ggdb -> Sona gelen -g3 -ggdb ile debug parametresi verilmiş olur. Oluşan hatalarda daha anlaşı
şır çıktılar gözlemlenebilir

enableSandbox = True -> Paket derlenirken temel sisteme erişim kontorlü yapmasını sağlar.

fallback = ftp://ftp.pardus.org.tr/pub/source/2009 -> Paketin kaynak kodunun adresi cevap vermiyorsa buradan indirmeye çalış.

generateDebug = True ->

host = i686-pc-linux-gnu -> Üzerinde bulunan gcc’nin hangi mimari için derlendiği(biraz karışık oldu galiba 🙂

jobs = -j5 -> Yapılan derleme işleminin paralelleştirilme sayısı(çekirdek sayısı +1 diye hesaplayabiliriz.)

ldflags = -Wl,-O1 -Wl,-z,relro -Wl,–hash-style=gnu -Wl,–as-needed -Wl,–sort-common -> Dinamik kütüphaneler için gerekli bayraklar.

Not: Buildfarm kurarken kullandığınız dağıtımın o sürümünün havuzunu almaya dikkat ediniz(2008 üzerinde 2009 buildfarm’ı mantıklı değil;)

>Muzik hakkında…

>

Bu zaman dilimi çoğu üniversitede olduğu gibi bir final haftası yaşanıyor. Pek çok öğrenci gibi bu final haftası benimde hayatla olan bağımı koparmaya yeterli oluyor. Ve can sıkıcı final haftası sırasında ders başındayken en ufak şey dikkatini dağıtabilme oranı yüksek olur(En azından benim öyle). Benim en çok da paylaşılan videolar dikkatimi dağıtıyor. Ancak daha önce ismini duymadığım güzel gruplar buluyorum bu sıkıntı anında. Bunlardan birisinden bahsetmek istiyorum. Kendilerine “Kaçak” ismi vermiş bir grup. İsyankar bir müzik tarzı ile beni etkilediler(artık bunalım müziklerden sıkıldım galiba…).

Şu video klipleri ile kendilerine büyük bir sevgi beslediğimi belirtmek isterim.

İlk izlediğimde vay be dedim. Arada böyle olup sağı solu dağıtmak istemek bizimde hakkımız olduğunu hissettiriyor… Hayatının akışını bir kaç dakikalık şarkının değiştirebilmesi de ayrı bir konudur. Bunun sebebi değişkenliği artmış ruh halimizden mi yoksa müziğin kalitesinden mi kaynaklandığını düşünmeden edemiyorum. Sonuçta kendi kararlarımızı düzgün verebileceğimizi, düşüncemizi hiçbir şeyden etkilemeden verdiğimizi düşünüyoruz. Ancak bir kaç dakikalık müzik, bir resim, uzaktan gördüğümüz bir tanıdık bile bu kadar çabuk değiştirebiliyorken nasıl gerçek kararlar verebiliriz ki?…

Not: kadir has üniversitesinde çekilen pump-it gerçekten insanı kendinden geçiriyor. Yapımda emeği geçen herkesi kutluyorum…

>Dayanılmaz sona yaklaşırken…

>

Başlıktan pek bir şey anlaşılmasa da son gelişmeler hakkında ekipteki herkes bir şeyler yazdı.[0][1][2] Bu konu hakkında bir iki satır karalama ihtiyacı hissettim bende.

Uzun bir süredir sıkı çalıştığımızı bilmeyen kalmadı herhalde ancak meyvelerini toplamaya başladık. İlk meyve olarak chroot olduğumuz zaman aldık(Ekip dışında bulunanları pek az tat veren ilk meyveydi. Ekip içinde ise ufak bir kutlama havası esmişti). Daha sonra pisi’yi ayağa kaldırdığımızda aldığımız meyve çok tatlıydı(özellikle pisinin yapması gereken her şeyi ellerimizle yapan bizler için. Ekip dışına da tat veren bir meyveydi bu). Daha sonra boot edebilmemiz, şimdi bir masa üstü ortamımız var (en çok sevinen de herhalde links ile pek haşır neşir olan metin oldu diye biliyorum.) Şimdi ise kurulan bir cd için çabalıyoruz. Onu yaptığımızda öncekiler gibi yine çok çalışmanın bir meyvesi ancak hem ekibe hemde Pardus’a gönül verenlere de tat vereceğini düşünüyorum. Bu meyveyi paylaşmaya açığız… Çünkü paylaştıkça artar diye düşünüyoruz.

ps: Daha teknik konularda yazıları [3] wiki sayfamızda bulabilirsiniz…

[0] http://m-akdere.blogspot.com/2009/12/ve-pardus64-uzerinde-masaustu-ortam.html
[1] http://nyucel.blogspot.com/2009/12/64-bit-kurulan-cd-icin-eksik-paket.html
[2] http://meltemparmaksiz.blogspot.com/2010/01/kurulan-cdye-bir-adm-kala.html
[3] http://tr.pardus-wiki.org/Pardus%27un_X86_64-64_Mimarisine_Port_Edilmesi