[Gelistirici] İsmail.py de iyileştirme.

Güngör Erseymen gelurine at gmail.com
11 Ara 2008 Per 15:33:09 EET


2008/12/11 Ekin Meroğlu <ekin at pardus.org.tr>:
> Merhaba;
>
> Thursday 11 December 2008 tarihinde, Onur Küçük şunları yazmıştı:
>>  Dağıtım deposu olarak baktığımızda bir paketin kendine bağımlı
>> olmaması gerekiyor, kabaca kendine bağımlı olan paketlerin derlenmesine
>> bootstrap deniyor.
>
> Sadece system.base ve system.devel kurulu bir sistemde tüm paketlerin derlenip
> kurulabilmesi gerekiyor teorik olarak, aksi durumda olası bir toolchain
> değişikliğinde depo yeniden derlenemez, tavuk yumurta sorunumuz olur -
> sıfırıncı dereceden bir çember bağımlılık aslında bu durum.
> System.base / system.devel'de ise bu durumu aşmak için iki aşamalı bir
> bootstrap kullanıyoruz, sadece bu bileşenlere özel olarak.

Aslında burda söz konusu olan bootstrapdan daha çok başarısız bir
cross-compile diyebilirim. (Gcc ailesindeki nin tersine yardımcı
compiler (clisp, ecl, sbcl vs.) host olarak isimlendiriliyor) Host
sistem üzerinde sbcl nin minumum hali diyebileceğimiz ilk aşması
derleniyor, sonrada esas kaynak kodu bu minumum sistem derliyor.

Mesela gentoo da bu sorunu derleme aşamasında upstream binary sbcl
paketinide indirip host olarak kullanarak geçiştiriyor. Pisi ile arşiv
olarak tek paket indirebildiğimden bu şekilde yapamadım.

Belkide clisp ya da ecl ile derlenebilecek hale gelene kadar (ki burda
hem sbcl tarafında hemde diğer derleyicilerde çözülmesi gereken
noktalar var, açıkçası bunları çözmek beni aşıyor) upstreamin kaynak
paketine önceden derlenmiş gerekli dosyaları ekleyerek (kaynak paketin
boyutunu yaklaşık 5M artırıyor) pspec.xml de bu yeni dosyayı
kullanmalıyım. Böylece, toolchain değişsede sbcl kendi kendisine
yetebilir.

> Bu tip bootstrap'e ihtiyaç duyan yazılımlarda derleme sistemin bootstrap için
> özel bir parametresi de olabiliyor - clisp veya ecl ile derlemek için  bu tip
> bir parametre vs kullanmak gerekiyor olabilir mi ?

Hayır gerekmiyor,  host derleyiciyi kendi parametreleriyle birlikte,
derleme scriptine parametre olarak geçirmek yeterli oluyor;

sh make.sh '<Host>'  ; <Host> yerine "clisp -ansi -norc", "ecl -norc" gibi

Sonuç olarak, benim anladığım: herhangi bir paket ya kendi kendine
yeterli olacak ya da bağımlılık zinciri system.base veya system.devel
de sonlancak.

Bu durumda ismail.py için gönderdiğim patch anlamsız oluyor, çünkü
paketin eski release larını derle gibi bir seçeneğimiz olamadığından
çember bağımlılık oluşturuyor ne system.base'e nede system.devel'e
ulaşabiliyoruz.

Gözümden kaçan veya yanlış anladığım birşeler varmı?

İyi çalışmalar.
-- 
Güngör Erseymen
http://www.elurin.info


Gelistirici mesaj listesiyle ilgili daha fazla bilgi