[Gelistirici] 2009 çiftliği hazır a.k.a. fire in the hole

Fatih Aşıcı fatih at pardus.org.tr
4 Mayıs 2009 Pzt 01:44:36 EEST


04 May 2009 Pazartesi günü (saat 01:16:35) Barış Metin şunları yazmıştı:
> > Aksi takdirde sadece pspec'teki bağımlılıklardan yola çıkılarak
> > A'nın güncellenip güncellenemeyeceğine (C'yi A'ya bağımlılık yazmazsak)
> > karar vermek imkansız.
>
> Neden? A->B->C seklinde bir bagimlilik soz konusu degil mi? A'dan C'ye
> dogru gidebiliyorsam tersi de, biraz daha masrafli olsa da, mumkun.

A: Qt uygulaması
B: Qt
C: libX11

Eğer uygulama libX11 API'sini doğrudan kullanmıyorsa sadece Qt'ü güncellemek 
yetiyor. A her zaman güncellenmek zorunda değil.

> > Evet vardı; ancak o sıralar --as-needed kullanamadığımız için ikili
> > dosyalar gerekli gereksiz her kitaplığa bağlanıyordu ve yukarıdaki
> > senaryo için A hemen hemen her koşulda güncellenmek zorunda kalıyordu.
> > Ama şimdi böyle bir zorunluluk yok. Bu avantajı değerlendirmek için
> > bağımlılıkları daha açık yazmak gerekiyor.
>
> --as-needed kullanmaya basladiktan sonra bagimliliklari daha acik
> yazmak birlikte kullanmak nasil bir avantaj sagliyor anlamadim. Bizim
> pakete yazdigimiz bagimliliklar ile linker parametresinin dogrudan
> baglantisi nedir?

--as-needed linker'ın bir hatasını kapatıyor aslında. Önceden yukarıda 
bahsettiğimiz uygulama libX11 API'sini hiç kullanmayıp sadece Qt API'si 
kullansa bile linker uygulamayı libX11 kitaplığına doğrudan bağlıyordu (Bu 
durumda objdump çıktısında da görünüyor). libX11 ABI kırdığında ise tüm 
uygulamaları yeniden derleyip kullanıcıya güncelletmek zorunda kalıyorduk.

pspec'e bir X kitaplığını bağımlılık olarak yazdığımızda "Bu paket X 
kitaplığına doğrudan linklenmiştir." anlamına gelsin istiyoruz. Böylece X 
kitaplığı ABI kırdığında söz konusu paketin yeniden derlenmesi gerektiğini 
anlayabilelim. Eğer bu bağımlılığı Qt de bağımlı diye yazmazsak yukarıda 
söylediğim senaryoda olduğu gibi sadece qt güncellemesi ile düzelecek 
uygulamaları da boşu boşuna güncellemiş oluyoruz.

Otomatize de edilebilir dediğin gibi; ama overhead'inin yüksek olmasından 
çekiniyorum açıkçası.




Gelistirici mesaj listesiyle ilgili daha fazla bilgi