[Gelistirici] [RFC] 3 yeni pisi özelliği

Ozan Çağlayan ozan at pardus.org.tr
20 Şub 2010 Cmt 01:11:18 EET


Selam,

64-bit çalışmalarının hızlandığı şu günlerde pisi'nin eksik işlev ve yanlış davranışlarının üzerinden geçelim diye bu thread'i
başlatıyorum :)

Öncelikle 1-2 ay önce koşullu derleme için 2 alternatif üzerine yoğunlaşılmıştı:
  - preprocessor
  - XML genelinde for= attribute'u kullanılması

Bu noktada ortak bir noktaya varılamadı çünkü ikisinin de - ve +'ları vardı. 2 önerinin de yandaşları diğerini hiç içine
sindiremedi açıkçası :)

Dün ve bugün 64-bit ekibiyle beraber çalışma imkanı bulduk ve deponun *ne kadar* farklılaştığını inceledik ve aslında
bu yukarıdaki atraksiyona şimdilik çok fazla gerek olmadığını fark ettik.

2 depo arasında yaklaşık 50-60 yamalık bir fark var. corporate2/devel altındaki patches/ dizininde bu yamalar
quilt aracılığıyla saklanıyor. corporate2/devel-x86_64 ise bugün silinip devel'den tekrar kopyalandı.

Bu quilt yamaları ana corporate2/devel'e merge edilmeye başlandı çünkü yapılan değişikliklerin çoğu mimari bağımsız
yani 64-bit bir yama 32-bit için bir şeyi etkilemiyor örneğin.

Bu yamalar tamamen merge edildiğinde depolar birleşebilir hale gelmiş olacak aslında. Ancak bazı pisi değişiklikleri
gerekiyor. Okumaya devam edin.

----

Bir kısım değişiklikler örneğin kapalı kodlu ve derlenmiş bazı kitaplık ve sürücülerinin farklı kaynak arşiv adreslerine
sahip olmalarından kaynaklanıyor. Bunu pisi'ye çoklu <Archive> desteği ekleyerek çözdük Fatih ile:

<Source>
  ..
  ..
  <Archive sha1sum=".." type="tarbz2">http://a.com/driver_x86.tar.bz2</Archive>
  <Archive sha1sum=".." type="tarbz2">http://a.com/driver_x86_64.tar.bz2</Archive>
  ..
</Source>

kullanımı sayesinde her tarball /var/pisi/../work/ altına kendi dizinine açılıyor. Yama henüz yerelimde commit etmedim.

Bu sayede actions.py'de:

if get.ARCH() == "x86_64":
 WorkDir = "...."

diyerek aynı kaynak depodan 2 ayrı mimari için paket çıkartabileceğiz.

---

Bazı paketlerin ise 64-bit için hiç derlenmemesi gerekiyor. Örneğin psyco, kernel-pae ve ailesi, xorg-video-geode, etc.
Bunun için kaynak paketlere "Şu mimari için derleme" bilgisi ekledik yine Fatih ile. Örneğin psyco paketine:

<Source>
  <License>GPLv2</License>
  <IsA>library</IsA>
  <ExcludeArch>x86_64</ExcludeArch>
  ..
  ..
</Source>

dediğimizde, bunu pisi.conf'ta x86_64 dışında bir mimari bilgisi içeren sistemde derlemeye çalıştığınızda spesifik bir
exception atıyor. Bu exception buildfarm tarafından yakalanarak paket es geçilecek. Değişiklik yine yerelde.

---

Bir de bonus olarak <Source> paket için <AdditionalFiles> desteği ekledik (tahmin edin kiminle). Bu uzun zamandır
çeşitli paketlerde takla atmamızı engelleyecek. Örneğin derlenme aşamasında ihtiyaç duyulan dosyalar yama haline
getirilerek pakete koyuluyordu. Bu hem bakımı zor hem de amatörce bir çözümdü. Bu bahsedilen destekle örneğin
kernel paketinde:

<Source>
  ..
  ..
  ..
  <Archive ..>http://www.kernel.org/linux-2.6.32.tar.bz2</Archive>
  <AdditionalFiles>
   <AdditionalFile target="configs/kernel-i686-config">configs/kernel-i686-config</AdditionalFile>
   <AdditionalFile target="configs/kernel-x86_64-config">configs/kernel-x86_64-config</AdditionalFile>
  </AdditionalFiles>
</Source>

yapılarak aynı kaynak paketten N tane kernel yapılandırması çıkartılabiliyor. Çoğu pakette yamayla eklenmiş
bazı cleanup betikleri var. Bunlardan da kurtulmuş olacağız.

---

Dikkat ettiyseniz değişikliklerin 2 tanesi paketçiyi pisi kısıtlamalarından dolayı kendi tarball'unu yapmaktan
kurtarmaya yönelik.

Fikirlerinizi, yorumlarınızı bekliyoruz,



Gelistirici mesaj listesiyle ilgili daha fazla bilgi