>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

>Hayat?

>

Uzun bir süredir sadece yaşamaya devam ettiğimi fark ettim birden. Eee başka ne yapacaktın ki diyenler olabilir… Ancak hayat sadece nefes almak(vermek), yemek yemek, okula gidip gelmek olmadığını düşünüyorum. Biraz müzik dinlemek(anlamlı şekilde, tabiri caiz ise hissederek…), eğlenmek, düşünmek, düşünce yürütmek, problem çözmek, kitap okumak vs…

Hayatta olduğunu fark etmek ve az da olsa bir farklılık yaratmak gereği hissediyorum son zamanlarda… Yoksa bu tembelliğin içerisinde boğulup gideceğim ve bu arzularımı kaybedeceğim.

En azından artık daha fazla hayat ile alakalı şeyler okumaya çalışıyorum. Bir kaç tane blog takip ediyorum mesleğim ile alakalı olmayan… Hayata bakış, insanlara bakış… Ancak hayatta sadece okul yada iş olmadığını ve insanın düşünen ve devamlı düşünmeyi isteyen bir varlık olduğu düşünüyorum….

Takip ettiğim bloglar:
http://herbokubilenadam.blogspot.com/
http://sokratesya.blogspot.com/

>64 bit geliyor mu ne?

>

Necdet hocam’ın da yazdığı gibi rootfs yakında yayınlanacak. Bir çok kişinin büyük merakla beklediğini hepimiz biliyoruz. Ancak rootfs sürecinde sadece konsol ekranı olan bir sistem olacak. Bu yüzden gerçekten ne yapacağını bilen arkadaşların rootfs’i denemesini öneriyoruz. Diğer arkadaşların ise bir süre daha sabretmesini içten arzuluyorum.

Diğer arkadaşlara ise rootfs ile iyi eğlenceler diliyorum. Umarım bunun 3 üniversite son sınıf öğrencisinin uzun süreler boyunca çalışarak meydana getirdiği bir sürüm olduğunu unutmazsınız.

Artık bizler daha çok çalışarak alfa için daha uzun bir mesafeyi kat etmemiz gerekiyor. Bize yardımcı olanlara şimdiden teşekkür ederiz.

Not: gelişmeler için bizi takip edin(Necdet Yucel, Metin Akdere, Meltem Parmaksız, wiki).

>Yaşıyor, yaşıyor, yaşıyor…. Pisi yaşıyor…

>

Bilindiği üzere Pardus 64 üzerinde uğraşıyorduk(biraz çok uğraşıyorduk gerçi:), pek az bir şey yazmış olabilirim kendi adıma… Ama gecelere kadar çalıştık pisi’nin bağımlılıkları ile haşır neşir olduk(şimdi paket yöneticisini daha bi sevmiyor değilim)

Tüm paketleri ellerimizle derledik, linkledik, non-shared lib’leri kaldırdık…(birazcık cinnet geçirdik gerçi bağımlılıklarla ) Ancak sonunda şu çıktıyı almak bu zahmete ve zamana değdi galiba 🙂

root@pardus64 /#pisi rm libsigsegv

Safety switch: the component system.base cannot be found

The following minimal list of packages will be removed

in the respective order to satisfy dependencies:

libsigsegv

Removing package libsigsegv

Running pre removal operations for libsigsegv

Running post removal operations for libsigsegv

Removed libsigsegv

root@pardus64 /# pisi it libsigsegv-2.6-3.pisi

Installation order: libsigsegv

Installing libsigsegv, version 2.6, release 3, build None

Extracting the files of libsigsegv

Configuring libsigsegv package

Configured libsigsegv

Installed libsigsegv

Şimdi azıcık paket yapmak gerekiyor galiba 🙂

>Make’i make yaparken make’in istediğin gibi make olması…

>

Biraz karmaşık bir başlık gibi gelebilir ancak işin bir kısmını özetliyor bu cümle…

Çünkü derleme işlemlerinde gcc, glibc, binutils, make (genel olarak) kullanarak ikili dosyaları oluşturuyoruz. Üzerinde çalıştığımız sistem için gcc, glibc, binutils ve make’i derleyip kuruyoruz. Bunun için iç içe bir bağımlılık oluşuyor… Elimizdeki araçları istediğimiz şekilde derlenmiş ve istediğimiz şekilde derleme yapmasını istiyoruz(Biraz karışık oldu galiba:).

Chroot yapabildiğimiz sistemde gerekli olan paketleri gerektiği şekilde (ki bu clfs kitabında geçen şekildeydi) derledik. Bu sayede elimizde saf bir temel linux sistemimiz oldu. Bu sistemin üzerinde Pardus’un kendi kullandığı yamalar, derleme parametreleri ile derleyerek Pardus’daki sistemi elde etmek istiyoruz. Mantıklı olarak ancak işte döngüye burada giriyoruz…

Bu sırada ilk derlemeler sonunda aslında tam da istediğimiz sistemin, istediğimiz araçlarlar derlenmemiş olduğunu gördük bugün acı bir şekilde…

İstediğimiz sistemi oluşturabilmek için derleme araçlarının (ki en temel ihtiyaçlardır kendileri) istenilen araçlar ile derlenmiş şekilde olması gerekiyor…

Çember şekilde (bu çembere ufak bağımlılıkları da ekleyerek) kernel-headers -> glibc -> gmp -> zlib -> binutils -> gcc -> make -> kernel-headers… devam eden derlemeler yapmamız gerekiyor. bu çemberi ne zaman kıracağımızı bizde pek bilmiyoruz. (n ->∞ olmaması ümidini taşıyoruz…)

Daha ayrıntılı bilgi için şuralara bakabilirsiniz: Meltem Parmaksız, Metin Akdere, Serhat İrem Ersel, Necdet Yücel, Pardus-Wiki

>64’bit pardus yolunda giderken belgelendirme…

>

    Uzun süren çalışmalarımızdan haberdar olan insanlar hani belgeler nerede diye soruyordu. Sevgili Necdet Yücel hocamın isteği ile yavaştan(!) tr.pardus-wiki.org adresinde yaptıklarımızı yazmaya başlayacağız inşallah 🙂 Meltem, metin ve ben ara ara zaman bulduğumuzda buradaki belgeyi güncellemeye çalışacağız. Kendisi burada.

Not: Biraz anlaşılmaz terimler kullanabiliriz dikkatli olun:)

>Belirli bi konuma geldik. Yazmak gerek…

>

   Uzun bir zamandır yoğun bir çalışma süreci içerisinde olduğumuz için pek bir blog girdisi yapamıyordum. Yaklaşık olarak 1 aydır Pardus’un x86_64 portunu hazırlamaya çalışıyorduk.

Başlangıçta Pardus 2008 üzerinde çapraz derleme ile 64 bit olarak başladığımız ve üzerinde chroot yapacağımız sistem için uzun saatler geçirdik. Chroot’da bir takım sorunlar yaşadık ve 2008’den 2009’a geçildiği haberi ile beraber bizde yeni yönümüzü o tarafa çevirdik. 2008’de bir kısmını öğrendiğimiz süreci daha hızlı bir şekilde ilerletebildik. Ancak hedef olarak chroot dan boot edilebilir bir sisteme çevirdik. Bu süre zarfında clfs belgesini takip ettik, sürümler arası farklara bakarak yamalar bulduk, bir kısmını kendi aramızda tartışarak değiştirdik, derlenmeyen araçlar için çince bile okuduk. (google translate’e teşekkürü bir borç biliriz.) Çekirdek derledik, nasıl derlememiz gerektiği konusunda biraz tartıştık. Pardus’un kullandığı çekirdeği ve config dosyasını biraz değişiklik yaparak kullandık. (debian ve ubuntu gibi dağıtımların 32bit ve 64bit çekirdek config’lerinden yola çıkarak.) İnitramfs oluşturmak için uzun süredir çabalıyorduk. Coolplug isimli pardus teknolojisi biraz uğraştırdı bizi gerçi. Derlemek için elimizde olan çapraz derleme yapabilen gcc kullanmıştık. Hata almadığımız için oldu herhalde demiştik. Ancak coolplug’ı initramfs de çalışmadığını gördüğümüzde klibc’yi sistem için derlesek mi acaba diye düşünmeye başladık. Ancak çapraz derleme yapabilmesini sağlayabilmemiz için elle tutulur bir belge bulamadığımız için 64bit olan debian 5 üzerinde klibc – klcc kurduk (libklibc-dev paketinden geliyor klcc) ve coolplug’ı derledik. İnitramfs’in içerisine dahil ettik. Boot sırasında bu seferde en azından coolplug çalıştığını gördük. Ancak sabit diski göstermeyi başaramadık. Coolplug’dan kaynaklı bir sorun olduğunu düşündüğümüz için ve daha fazla motivasyon kaybetmemek için (tek bir noktada takıldığımız için elimiz kolumuz bağlanmış durumdaydık.) Bu yüzden hızlı bir şekilde cumartesi akşamı alternatif yol olarak chroot değerlendirdik.(debian 5 – 64bit üzerinde) Ufak bir sorun yaşadık. Ancak lib64 -> lib’e kopyaladık.(bir birlerine döngü olarak linklendiğini gördük ihtiyaç duyduğu kütüphaneyi ve o da lib64 içinde bulduk.) ve chroot yaptık sorunsuz bir şekilde. Vatana millete hayırlı olsun.

>Pardus 2009 da eduroam’a kafayı yemeden bağlanmak…

>

Kısa süren kablo telaşı sonrasında uzun uzun konsol komutları yazmak yerine 😉 wicd kullanabilir miyim diye düşünürken insanların eduroam için zaten bir template yaptıklarını gördüm ufacıcık düzenlemelerden sonra eduroam’a sorunsuz bağlanılıyor 🙂

başlangıç olarak:
pisi it wicd
vi /etc/wicd/encryption/templates/eduroam

diyerek içerisine şunu yazıyoruz:

name = eduroam
author = Tom Borgia
version = 1
require identity *Identity password *Password
—–
ctrl_interface=/var/run/wpa_supplicant

eapol_version=1
ap_scan=1
update_config=1

network={
ssid=”eduroam”
key_mgmt=IEEE8021X
eap=TTLS
identity=”$_IDENTITY”
anonymous_identity=”$_ANONYMOUS_IDENTITY”
password=”$_PASSWORD”
phase2=”auth=PAP”
}

Daha sonra
/etc/wicd/encryption/templates/active dosyasına
eduroam
ekliyoruz.

daha sonra da
pisi it wicd-client
ile de parolaları girip bağlanıyoruz. geçmiş olsun…