[Gelistirici] dependency.py

Murat Senel muratasenel at gmail.com
17 Şub 2009 Sal 16:31:23 EET


2009/2/17 Gökçen Eraslan <gokcen at pardus.org.tr>

> On Tuesday 17 February 2009 01:30:18 Murat Senel wrote:
> > Zamanı olan varsa ve bakabilirse, sevinirim.
>
> Çok detaylı inceleyemedim ama sanırım sadece ldd çıktısına bakarak
> bağımlılık
> çıkarıyorsun. ldd ne yazık ki düzgün sonuç vermiyor bağımlılık belirlerken,
> çünkü örneğin, a, b'ye linklenmiş ve b de c'ye linklenmişse, ldd a, hem
> b'yi
> hem c'yi veriyor sana böylece listendeki bağımlılıklar hem bağımlılıkların
> hem
> de onların bağımlılıkları oluyor.
>

Evet, ldd dediğin gibi bağımlılıkların bağımlılıklarnı da veriyor fakat,
zaten betiğin verdiği son liste, reverse deplerin çıkarılmış olduğu liste.
ldd'nin bu şekilde çalışması, belki sadece betiğin süresini uzatıyor, o
kadar diye düşünüyorum.


>
> objdump daha doğru çıktı üretiyor ldd'ye göre, kitaplığın gerçekten
> linklendiği kitaplıkları veriyor fakat onun çıktılarından da kitaplıkların
> full path'ini alamıyorsun (sırf bu yüzden uludag deposundaki ldd2dep
> betiğini
> objdump kullanacak şekilde değiştirmekten vazgeçmiştim), ayrıca onun için
> uğraşman lazım. Bir de, a mesela b'ye linklense de, b'yi kullanmıyor
> olabiliyor (2009'da --as-needed kullanarak bunu engelleyeceğiz). a'ya
> linklenen ama a'nın kullanmadığı kitaplıkları da bulmak için, "ldd -u"
> kullanmak gerekiyor.
>

A, B'ye linklense bile ve B'yi kullanmasa bile  şu aşamada hala
derlenebilmek için B'ye ihtiyaç duyduğunu göstermiyor mu? Örneğin, B
sistemde yoksa A derlenirken hata vermesi gerekmez mi zaten? Çünkü
linklemeye çalışırken B'yi bulamayacak.


>
> Yani özetle, bu işi en iyi yapmanın yolu (bildiğim kadarıyla) "objdump -p"
> çıktısındaki kitaplıklardan "ldd -u" çıktısındakileri çıkarmak, sonra
> kalanların hangi paketlerden çıktığını bulmak.
>

Alttaki ilk çıktı, objdump ile betiğin güncellenmiş hali ve mplayer
paketinin deplerine bakıyor:

PyKDEeXtensions,
nvidia-drivers177
arts
pulseaudio
faac
x264
lame
gtk2
samba
cdparanoia
fontconfig
lzo
libmad
speex
libtheora
libdca
libmpcdec
live555
amrnb
amrwb
libdv
xvid
schroedinger
libnut
lirc
libdvdnav
openal
twolame

Bu da eski haliyle yani ldd ile olan hali betiğin:

DirectFB
libcaca
arts
pulseaudio
faac
x264
lame
gtk2
samba
cdparanoia
fontconfig
lzo
speex
libtheora
libdca
libmpcdec
live555
amrnb
amrwb
libdv
xvid
schroedinger
libnut
libdvdnav
openal
aalib
glitz
xcb-util
cyrus-sasl
twolame

İki çıktı arasındaki fark ise:

* objdump has ldd hasn't:
   PyKDEeXtensions
   nvidia-drivers177
   libmad
   lirc

* ldd has objdump hasn't:
   DirectFB
   libcaca
   aalib
   glitz
   xcb-util
   cyrus-sasl

İki çıktıyı da mplayer'ın pspec.xm'indeki deplerle karşılaştırdığımda, ldd
ile olanın daha doğru çıktı verdiğini düşünüyorum? libmad ve lirc
paketlerini ldd betiği dep olarak göstermiyor çünkü, libmad arts'a ihtiyaç
duyuyor, lirc de pulseaudio paketine.
Fikirler?



> --
> Gökçen Eraslan
>
>


-- 
Murat Şenel
-------------- sonraki bölüm --------------
Bir HTML eklentisi temizlendi...
URL: <http://liste.pardus.org.tr/gelistirici/attachments/20090217/913300f2/attachment-0002.htm>


Gelistirici mesaj listesiyle ilgili daha fazla bilgi