[Gelistirici] pisi'de dosya tipinin analizi
Ozan Çağlayan
ozan at pardus.org.tr
15 Eyl 2009 Sal 12:03:43 EEST
Ozan Çağlayan wrote On 15-09-2009 12:00:
> Selam,
>
> pisi şu anda özel dosyaları ayıklamak ve DSO'ları strip etmek için
> install dizinindeki her bir dosya için fork()'layarak file komutunun
> çıktısını elde ediyor.
>
> Aşağıdaki yama bunun yerine file paketinden gelen Python modülünü
> kullanmasını sağlıyor.
>
> Cache cold iken (a.k.a echo 3 > /proc/sys/vm/drop_caches), inşa edilmiş
> ve yerleştirilmiş bir kernel kaynak paketinden çıkan pisi paketlerinin
> oluşturulması 10 dakika 40 saniye sürerken, yamayla bu süre 7 dakika 11
> saniyeye düşüyor.
>
> Hani olmaz ya ama sağlam olsun diye tüm sistemim üzerinde file çıktısı
> ve python modülünden alınan tip bilgisini karşılaştırıyorum şu anda.
> Eğer tutarlı olursa iyi bir hız kazancı sağlayıp fork()'un scheduler'a
> falan da bindirdiği yükten kurtulabiliriz (kernel paketi için 53210
> dosyadan bahsediyoruz mesela)
>
> Ha yama ayrıca gereksiz yere debug modunda ekrana [NoStrip]'leri basmayı
> da kaldırıyor..
>
>
> ===================================================================
> --- build.py (revision 25702)
> +++ build.py (working copy)
> @@ -131,7 +131,6 @@
> for exclude in excludelist:
> if p.startswith(exclude):
> strip = False
> - ctx.ui.debug("%s [%s]" %(p, "NoStrip"))
>
> if strip:
> if pisi.util.strip_file(filepath, fileinfo, outputpath):
> @@ -838,13 +837,20 @@
>
> def file_actions(self):
> install_dir = self.pkg_install_dir()
> +
> + import magic
> + ms = magic.open(magic.MAGIC_NONE)
> + ms.load()
> +
> for root, dirs, files in os.walk(install_dir):
> for fn in files:
> filepath = pisi.util.join_path(root, fn)
> - fileinfo = os.popen("file \"%s\"" % filepath).read()
> + fileinfo = ms.file(fn)
>
burası ms.file(filepath) olacak pardon :)
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi