[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