Re: [Gelistirici] #pardus-gelistirici

2011-05-26 Başlik Bahadır Kandemir
27 Mayıs 2011 Cuma günü (saat 08:11:48) Gökmen Göksel şunları yazmıştı:
> Selamlar,
> 
> Genellikle gün içinde hepimizi #pardus-gelistirici kanalında oluyoruz,
> irc.freenode.net sunucusunda. Bekleriz yani hoş sohbet, teknik atıflar,
> eğlenceli dakikalar filan.
> 
> irc.freenode.net#pardus-gelistirici

Benim gibi ofis dışında olanlar için hikayeyi anlatayım:

Jabber arada servis dışı kalıyordu, problemin yedekleme uygulamasından 
kaynaklandığını fark ettik ancak her zaman başımıza gelmediği için birkaç defa 
"restart" ederek çözdük.

Dün, yedekleme sırasında yine servis çalışmaz oldu ve iki sistem yöneticisi de 
kapsama alanı dışında olunca akşam saatlerine kadar problem düzeltilemedi.

IM seven geliştiricilerimiz, "IRC'ye girsek" demişler, Gökmen'in duyurusunun 
ardından kanalda kullanıcı rekoru kırılmış. Beğenmiş, hep burada durmaya karar 
vermişler.

IRC kanalındaki kullanıcı sayısı düşerse Jabber'ı kapatacağım :)
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


[Gelistirici] #pardus-gelistirici

2011-05-26 Başlik Gökmen Göksel
Selamlar,

Genellikle gün içinde hepimizi #pardus-gelistirici kanalında oluyoruz, 
irc.freenode.net sunucusunda. Bekleriz yani hoş sohbet, teknik atıflar, 
eğlenceli dakikalar filan.

irc.freenode.net#pardus-gelistirici

-- 
Gökmen Göksel
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


Re: [Gelistirici] libvirt

2011-05-26 Başlik Emre Erenoglu
2011/5/23 Emre Erenoglu 

> 2011/5/9 Emre Erenoglu 
>
>> On Mon, May 9, 2011 at 10:24 PM, Emre Erenoglu wrote:
>>
>>> 2011/5/9 Ozan Çağlayan 
>>>
 Devel deposunda libvirt çalışmıyor:

 13:54:45.818: 10842: info : libvirt version: 0.9.0
 13:54:45.818: 10842: error : virGetHostname:2714 : internal error
 getaddrinfo failed for 'ozanDesktopI7x86_64': İsim ya da servis bilinmiyor
 13:54:45.929: 10842: error : virCommandWait:1281 : internal error Child
 process (/sbin/iptables --table mangle --delete POSTROUTING --out-interface
 virbr0 --protocol udp --destination-port 68 --jump CHECKSUM 
 --checksum-fill)
 status unexpected: exit status 2
 13:54:45.972: 10842: error : virCommandWait:1281 : internal error Child
 process (/sbin/iptables --table mangle --insert POSTROUTING --out-interface
 virbr0 --protocol udp --destination-port 68 --jump CHECKSUM 
 --checksum-fill)
 status unexpected: exit status 2
 13:54:45.972: 10842: warning : networkAddGeneralIptablesRules:1178 :
 Could not add rule to fixup DHCP response checksums on network 'default'.
 13:54:45.972: 10842: warning : networkAddGeneralIptablesRules:1179 : May
 need to update iptables package & kernel to support CHECKSUM rule.
 13:54:46.222: 10842: error : virCommandWait:1281 : internal error Child
 process (LC_ALL=C
 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/common/uludag/trunk/scripts:/opt/bin:/opt/sun-jre/bin:/opt/sun-jdk/bin
 HOME=/root USER=root LOGNAME=root /usr/bin/qemu -device ? -device
 pci-assign,? -device virtio-blk-pci,? -device virtio-net-pci,?) status
 unexpected: exit status 1
 13:54:46.222: 10842: error : qemuCreateCapabilities:233 : out of memory
 13:54:46.222: 10842: error : virStateInitialize:795 : Initialization of
 QEMU state driver failed
 13:54:46.251: 10842: error : main:3384 : Driver state initialization
 failed
 13:54:46.251: 10843: warning : qemudDispatchSignalEvent:427 : Shutting
 down on signal 3

>>>
>>> Ozan hocam bu sorun bende de vardi ama artik tekrarlayamiyorum. CHECKSUM
>>> olayini patch'lemistim bu yuzden. Ama sorun ordan mi degil mi emin degildim
>>> cunku warning diyordu tavsiyede bulunuyordu.  Su anda bende calisiyor
>>> sorunsuz, depodan tekrar derliyorum simdi. sendeki bu patch'i almis mi
>>> derlerken, en azindan su checksum hatasi cikmamaliydi sanki son commit
>>> versiyonunda.
>>>
>>> testing deposu kullaniyorsun degil mi sistem geneli icin? bu sorunla
>>> ugrasirken bi sebepten testing deposuna gecmistim (kvm modulu ile ilgili bir
>>> dertti sanki, qemu kvm'yi acamiyor muydu neydi).
>>>
>>
>> Ozan Hocam, bir de su komutu calistirip ciktisini gonderir misin? Normal
>> kullanici ya da root olabilir, farketmez.
>>
>> qemu -device ? -device pci-assign,? -device virtio-blk-pci,? -device
>> virtio-net-pci,?
>>
>> Bu komut bende hata raporu uretmiyor, duzgun bir cikti veriyor. Sende
>> sanirim hata dondurecek, libvirt de ondan patliyor.
>>
>
> Ozan hocam (veya diger gelistirici arkadaslar) buna bakabildin mi? Ona gore
> commitleyecegim.
>

Onur Hocam, Ozan Hocam,

Biraz daha arastirdim. Sorun daha derinde.

Temel sorun: Bizdeki qemu paketi, KVM destegi ile derlenmemis.

Detay:
libvirt calisirken qemu capabilities anlamak icin bir sira qemu komutu
calistiriyor. Bunlar ornegin:

/usr/bin/qemu -device ? -device pci-assign,? -device virtio-blk-pci,?
-device virtio-net-pci,?
 /usr/bin/qemu-system-arm -device ? -device pci-assign,? -device
virtio-blk-pci,? -device virtio-net-pci,?

gibi komutlar ama aralarinda qemu-kvm cagiran yok. Bizim qemu ise bunlara
error uretiyor ve libvirt desteklenen bir qemu olmadigina karar veriyor.
0.9.1 calismasina calisiyor ama hicbir guest yaratamiyor. kvm modulleri
yuklu iken asagidaki komuta bakalim:

/usr/bin/qemu -device ? -device pci-assign,? -device virtio-blk-pci,?
-device virtio-net-pci,?
Could not initialize KVM, Do you have kvm-amd or kvm-intel modprobe'd?
If you want to use CPU emulation, start with -no-kvm.


Eger qemu'ya illa kvm ile calis dersek:

qemu --enable-kvm
KVM not supported for this target


Cozum:
Qemu'yu qemu-kvm gibi calisacak sekilde derleyelim, eger farkli architecture
emulation yapacaksaniz -no-kvm ile calistirin.

qemu'yu bu sekilde derleyip testing deposuna ve stable'a alabilir miyiz?

Gecici kirli kotu cozum:
libvirt'in surumunu bu yuzden artiramiyorum. Bunun icin qemu_capabilities.c
'yi patchledim (ekte), qemu gordugu yerde qemu-kvm cagiracak sekilde
ayarladim. i686 ustunde calisti ama elimin altinda bir x86_64 yok, pazara
 anca denerim.

-- 
Emre
--- src/qemu/qemu_capabilities.c.orig	2011-04-06 12:34:36.0 +0400
+++ src/qemu/qemu_capabilities.c	2011-05-27 02:08:29.26514 +0400
@@ -74,9 +74,9 @@
 
 /* The archicture tables for supported QEMU archs */
 static const struct qemu_arch_info const arch_info_hvm[] = {
-{  "i686",   32, NULL, "qemu",
+{  "i686",   32, NULL, "qemu-kvm",

Re: [Gelistirici] KVM modulu karmasasi

2011-05-26 Başlik Emre Erenoglu
2011/5/26 Ozan Çağlayan 

> On 26.05.2011 22:51, Emre Erenoglu wrote:
> > 2011/5/26 Ozan Çağlayan mailto:o...@pardus.org.tr>>
> >
> > On 26.05.2011 21 :34, Emre Erenoglu wrote:
> > > Selamlar Onur Hocam,
> > >
> > > KVM modulleri gordugum kadari ile iki paketten cikiyor:  kernel
> > > ve module-compat-kvm
> > >
> > > Bu modulu ise module-compat-kvm-userspace  paketi udev kurali ile
> load
> > > ediyor/
> > >
> > > Su anda kernel 2.6.37.6'da ve kvm-intel.ko gibi moduller burada
> var.
> > > Ayrica module-compat-kvm 2.6.36.1'den kalma modulleri icinden
> > cikartiyor.
> > >
> > > Simdi ben libvirt kuruldugunda kvm modulerinin de kurulmasini ve
> > > acilista calistirilmasini istiyorum. Ancak module-compat-kvm'ye
> > > dependency eklesem, eski kvm modulu geliyor, belki sorun cikartir,
> > > eklemesem kernel'deki yeni kvm'yi kullanacak ama modulu modprobe
> eden
> > > bir duzenek yok.
> > >
> > > Ne yapmaliyim, yapmaliyiz? Acaba kernel'den bu modulleri cikartip,
> > > versiyon ayni dahi olsa her zaman modul-compat-kvm'den mi
> cikartsak?
> > > Boylece ben buna baglanti yazip isi bitiririm.
> >
> > module-compat-kvm farklı dizine koyuyor modülleri. module-compat-kvm
> > ileri geçebilir bizim çekirdeğimizden. module-compat-kvm kuruluysa
> ondan
> > cıkanlar, değilse kernelden çıkanlar kullanıma geçiyor.
> >
> > Dolayısıyla bir şeye bağımlılık yazmanıza gerek yok, çekirdekten
> zaten
> > çıkıyor.
> >
> >
> > module-compat-kvm-userspace kurulmazsa, kvm modulu modprobe edilmiyor
> > boot esnasinda. Haliyle kullanicilar gelip listelerde forumlarda soracak
> > niye sanal makineler yavas calisiyor diye. Sadece buna bagimlilik
> > eklersem, bu sefer yeni module-compat-kvm modulu ciktiginda, sisteme
> > kurulmayacak.  module-compat-kvm eklesem, bu sefer eski modul sisteme
> > kurulup kernel'de gelenin onune geciyor.
> >
> > Umarim derdimi anlatabilmisimdir.
>
> hm, şimdi anladım. kvm'nin udev kuralını, udev paketine alabiliriz
> aslında bundan kurtulmak için.
>

Diyelim ki boyle yaptik, peki yeni module-compat-kvm ciktiginda, onun
sisteme kurulacagini kim garantileyecek? libvirt veya virt-managet
chain'inde bir paketin buna bagimliligi olmasi gerekmiyor mu sisteme
kurulmasi icin?

-- 
Emre
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici

Re: [Gelistirici] KVM modulu karmasasi

2011-05-26 Başlik Ozan Çağlayan
On 26.05.2011 22:51, Emre Erenoglu wrote:
> 2011/5/26 Ozan Çağlayan mailto:o...@pardus.org.tr>>
> 
> On 26.05.2011 21 :34, Emre Erenoglu wrote:
> > Selamlar Onur Hocam,
> >
> > KVM modulleri gordugum kadari ile iki paketten cikiyor:  kernel
> > ve module-compat-kvm
> >
> > Bu modulu ise module-compat-kvm-userspace  paketi udev kurali ile load
> > ediyor/
> >
> > Su anda kernel 2.6.37.6'da ve kvm-intel.ko gibi moduller burada var.
> > Ayrica module-compat-kvm 2.6.36.1'den kalma modulleri icinden
> cikartiyor.
> >
> > Simdi ben libvirt kuruldugunda kvm modulerinin de kurulmasini ve
> > acilista calistirilmasini istiyorum. Ancak module-compat-kvm'ye
> > dependency eklesem, eski kvm modulu geliyor, belki sorun cikartir,
> > eklemesem kernel'deki yeni kvm'yi kullanacak ama modulu modprobe eden
> > bir duzenek yok.
> >
> > Ne yapmaliyim, yapmaliyiz? Acaba kernel'den bu modulleri cikartip,
> > versiyon ayni dahi olsa her zaman modul-compat-kvm'den mi cikartsak?
> > Boylece ben buna baglanti yazip isi bitiririm.
> 
> module-compat-kvm farklı dizine koyuyor modülleri. module-compat-kvm
> ileri geçebilir bizim çekirdeğimizden. module-compat-kvm kuruluysa ondan
> cıkanlar, değilse kernelden çıkanlar kullanıma geçiyor.
> 
> Dolayısıyla bir şeye bağımlılık yazmanıza gerek yok, çekirdekten zaten
> çıkıyor.
> 
> 
> module-compat-kvm-userspace kurulmazsa, kvm modulu modprobe edilmiyor
> boot esnasinda. Haliyle kullanicilar gelip listelerde forumlarda soracak
> niye sanal makineler yavas calisiyor diye. Sadece buna bagimlilik
> eklersem, bu sefer yeni module-compat-kvm modulu ciktiginda, sisteme
> kurulmayacak.  module-compat-kvm eklesem, bu sefer eski modul sisteme
> kurulup kernel'de gelenin onune geciyor.
> 
> Umarim derdimi anlatabilmisimdir.

hm, şimdi anladım. kvm'nin udev kuralını, udev paketine alabiliriz
aslında bundan kurtulmak için.


-- 
Ozan Caglayan

Pardus Linux
http://www.pardus.org.tr/eng
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


Re: [Gelistirici] KVM modulu karmasasi

2011-05-26 Başlik Emre Erenoglu
2011/5/26 Ozan Çağlayan 

> On 26.05.2011 21:34, Emre Erenoglu wrote:
> > Selamlar Onur Hocam,
> >
> > KVM modulleri gordugum kadari ile iki paketten cikiyor:  kernel
> > ve module-compat-kvm
> >
> > Bu modulu ise module-compat-kvm-userspace  paketi udev kurali ile load
> > ediyor/
> >
> > Su anda kernel 2.6.37.6'da ve kvm-intel.ko gibi moduller burada var.
> > Ayrica module-compat-kvm 2.6.36.1'den kalma modulleri icinden cikartiyor.
> >
> > Simdi ben libvirt kuruldugunda kvm modulerinin de kurulmasini ve
> > acilista calistirilmasini istiyorum. Ancak module-compat-kvm'ye
> > dependency eklesem, eski kvm modulu geliyor, belki sorun cikartir,
> > eklemesem kernel'deki yeni kvm'yi kullanacak ama modulu modprobe eden
> > bir duzenek yok.
> >
> > Ne yapmaliyim, yapmaliyiz? Acaba kernel'den bu modulleri cikartip,
> > versiyon ayni dahi olsa her zaman modul-compat-kvm'den mi cikartsak?
> > Boylece ben buna baglanti yazip isi bitiririm.
>
> module-compat-kvm farklı dizine koyuyor modülleri. module-compat-kvm
> ileri geçebilir bizim çekirdeğimizden. module-compat-kvm kuruluysa ondan
> cıkanlar, değilse kernelden çıkanlar kullanıma geçiyor.
>
> Dolayısıyla bir şeye bağımlılık yazmanıza gerek yok, çekirdekten zaten
> çıkıyor.
>

module-compat-kvm-userspace kurulmazsa, kvm modulu modprobe edilmiyor boot
esnasinda. Haliyle kullanicilar gelip listelerde forumlarda soracak niye
sanal makineler yavas calisiyor diye. Sadece buna bagimlilik eklersem, bu
sefer yeni module-compat-kvm modulu ciktiginda, sisteme kurulmayacak.
 module-compat-kvm eklesem, bu sefer eski modul sisteme kurulup kernel'de
gelenin onune geciyor.

Umarim derdimi anlatabilmisimdir.

-- 
Emre
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici

Re: [Gelistirici] KVM modulu karmasasi

2011-05-26 Başlik Ozan Çağlayan
On 26.05.2011 21:34, Emre Erenoglu wrote:
> Selamlar Onur Hocam,
> 
> KVM modulleri gordugum kadari ile iki paketten cikiyor:  kernel
> ve module-compat-kvm
> 
> Bu modulu ise module-compat-kvm-userspace  paketi udev kurali ile load
> ediyor/
> 
> Su anda kernel 2.6.37.6'da ve kvm-intel.ko gibi moduller burada var.
> Ayrica module-compat-kvm 2.6.36.1'den kalma modulleri icinden cikartiyor.
> 
> Simdi ben libvirt kuruldugunda kvm modulerinin de kurulmasini ve
> acilista calistirilmasini istiyorum. Ancak module-compat-kvm'ye
> dependency eklesem, eski kvm modulu geliyor, belki sorun cikartir,
> eklemesem kernel'deki yeni kvm'yi kullanacak ama modulu modprobe eden
> bir duzenek yok. 
> 
> Ne yapmaliyim, yapmaliyiz? Acaba kernel'den bu modulleri cikartip,
> versiyon ayni dahi olsa her zaman modul-compat-kvm'den mi cikartsak?
> Boylece ben buna baglanti yazip isi bitiririm. 

module-compat-kvm farklı dizine koyuyor modülleri. module-compat-kvm
ileri geçebilir bizim çekirdeğimizden. module-compat-kvm kuruluysa ondan
cıkanlar, değilse kernelden çıkanlar kullanıma geçiyor.

Dolayısıyla bir şeye bağımlılık yazmanıza gerek yok, çekirdekten zaten
çıkıyor.




-- 
Ozan Caglayan

Pardus Linux
http://www.pardus.org.tr/eng
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


[Gelistirici] KVM modulu karmasasi

2011-05-26 Başlik Emre Erenoglu
Selamlar Onur Hocam,

KVM modulleri gordugum kadari ile iki paketten cikiyor:  kernel
ve module-compat-kvm

Bu modulu ise module-compat-kvm-userspace  paketi udev kurali ile load
ediyor/

Su anda kernel 2.6.37.6'da ve kvm-intel.ko gibi moduller burada var. Ayrica
module-compat-kvm 2.6.36.1'den kalma modulleri icinden cikartiyor.

Simdi ben libvirt kuruldugunda kvm modulerinin de kurulmasini ve acilista
calistirilmasini istiyorum. Ancak module-compat-kvm'ye dependency eklesem,
eski kvm modulu geliyor, belki sorun cikartir, eklemesem kernel'deki yeni
kvm'yi kullanacak ama modulu modprobe eden bir duzenek yok.

Ne yapmaliyim, yapmaliyiz? Acaba kernel'den bu modulleri cikartip, versiyon
ayni dahi olsa her zaman modul-compat-kvm'den mi cikartsak? Boylece ben buna
baglanti yazip isi bitiririm.

Emre
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici

Re: [Gelistirici] [Teknik] Python os.walk'ta dizin filtrelemece

2011-05-26 Başlik Bahadır Kandemir
On Thu, 26 May 2011 11:03:24 +, Gökçen Eraslan  
wrote:

Selamlar,

Pisi'deki index kodunu biraz daha hızlandırmak şöyle bir yama yaptım:

Index: index.py
===
--- index.py(revision 37006)
+++ index.py(working copy)
@@ -92,6 +92,8 @@
 deltas = {}

 for root, dirs, files in os.walk(repo_uri):
+dirs[:] = [d for d in dirs if d not in ['.svn', '.git', 
'.hg']]

+
 for fn in files:

 if fn.endswith(ctx.const.delta_package_suffix):

Fakat burada okunabilirliği azalttığı ve tavsiye edilmediği için [:] 
hack'ini
kullanmak istemiyorum, zira kullanmayınca da dirs değişkeni 
değiştirilmiyor.

Tek tek dirs.remove(x) ile silmek de hoşuma gitmiyor.


root, dirs ve files nesneleri generator ile oluşturuluyor. Bu nesnelerin 
herhangi birine müdahale etmek için, nesnenin sağladığı metodları kullanmakta 
fayda var. Doğru yöntem, hoşuna gitmeyen o dirs.remove(x) yapmak :)


[:] kadar, list comprehension kullanmak da okunaksız yapıyor kodu. Bence "." 
ile başlayanları listeden tek tek çıkaracağın üç satırlık dirs.remove(x) 
kodunu kullan.


--
Bahadır Kandemir
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


[Gelistirici] uygulamaların depolardaki durumunu görünür kılsak?

2011-05-26 Başlik Koray Löker
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Selam,

Kullanıcılar kimi uygulamaların güncel sürümlerini bekler vaziyette olunca, 
fırsat bulduklarıma test/devel depolarına göz atıp bilgi verdiğim oluyor.

Acaba paketler.pardus.org.tr 'yi depo bazlı değil, sürüm bazlı okunabilecek 
şekle getirsek, 2011 seçince paket/uygulama seçen bir kullanıcı da 

xxx 4.6.7

diye bir başlık yerine sadece xxx görse, yanda bir tablo içinde

stable  testing   devel
4.6.7   4.7.04.7.1

gibi görebilse? işe yaramaz mıydı?  

- -- 
Koray Löker
<--/ Özgürlük İçin... http://www.pardus.org.tr /-->
-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.17 (GNU/Linux)

iEYEARECAAYFAk3eWuwACgkQw2TIyRfXolqPHQCgihHWfXw5ZIZlEEUwT5/1y4E0
6D4AnitDpYpaeC8fgmvNMqXltW77uLMy
=9LbA
-END PGP SIGNATURE-
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


Re: [Gelistirici] Python os.walk'ta dizin filtrelemece

2011-05-26 Başlik Gökçen Eraslan
Perşembe 26 Mayıs 2011 günü (saat 10:38:52) Fatih Aşıcı şunları yazmıştı:
> 26.05.2011 14:03, Gökçen Eraslan yazmış:
> > Selamlar,
> > 
> > Pisi'deki index kodunu biraz daha hızlandırmak şöyle bir yama yaptım:
> > 
> > Index: index.py
> > ===
> > --- index.py(revision 37006)
> > +++ index.py(working copy)
> > @@ -92,6 +92,8 @@
> > 
> >   deltas = {}
> > 
> >   for root, dirs, files in os.walk(repo_uri):
> > +dirs[:] = [d for d in dirs if d not in ['.svn', '.git',
> > '.hg']] +
> > 
> >   for fn in files:
> >   if fn.endswith(ctx.const.delta_package_suffix):
> > Fakat burada okunabilirliği azalttığı ve tavsiye edilmediği için [:]
> > hack'ini kullanmak istemiyorum, zira kullanmayınca da dirs değişkeni
> > değiştirilmiyor. Tek tek dirs.remove(x) ile silmek de hoşuma gitmiyor.
> > 
> > Başka çözüm bilen var mı?
> 
> .svn, .git, .hg gibi şeyleri hardcode etmek pek içime sinmedi açıkçası.
> Davranışı nokta ile başlayan dizinleri atlayacak şekilde değiştirebiliriz.
> 
> if os.path.basename(root).startswith("."):
>  continue
> 
> yapılabilir.
> 
> Diğer bir çözüm de index komutuna --exlude-dirs=.* gibi bir parametre
> verebilmek olabilir.

O zaman şimdilik:

dirs[:] = [d for d in dirs if not d.startswith(".")]

ekliyeyim, daha sonra parametrik yaparız.

-- 
Gökçen Eraslan


signature.asc
Description: This is a digitally signed message part.
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici

Re: [Gelistirici] Python os.walk'ta dizin filtrelemece

2011-05-26 Başlik Fatih Aşıcı

26.05.2011 14:03, Gökçen Eraslan yazmış:

Selamlar,

Pisi'deki index kodunu biraz daha hızlandırmak şöyle bir yama yaptım:

Index: index.py
===
--- index.py(revision 37006)
+++ index.py(working copy)
@@ -92,6 +92,8 @@
  deltas = {}

  for root, dirs, files in os.walk(repo_uri):
+dirs[:] = [d for d in dirs if d not in ['.svn', '.git', '.hg']]
+
  for fn in files:

  if fn.endswith(ctx.const.delta_package_suffix):

Fakat burada okunabilirliği azalttığı ve tavsiye edilmediği için [:] hack'ini
kullanmak istemiyorum, zira kullanmayınca da dirs değişkeni değiştirilmiyor.
Tek tek dirs.remove(x) ile silmek de hoşuma gitmiyor.

Başka çözüm bilen var mı?


.svn, .git, .hg gibi şeyleri hardcode etmek pek içime sinmedi açıkçası. 
Davranışı nokta ile başlayan dizinleri atlayacak şekilde değiştirebiliriz.


if os.path.basename(root).startswith("."):
continue

yapılabilir.

Diğer bir çözüm de index komutuna --exlude-dirs=.* gibi bir parametre 
verebilmek olabilir.

___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


Re: [Gelistirici] Python os.walk'ta dizin filtrelemece

2011-05-26 Başlik Gökmen Görgen
2011/5/26 Gökmen Görgen :
> Denemeden yazıyorum ama belki çalışıyordur böyle:

Tüh çalışmaz, dirs list =(

-- 
gkmngrgn ~ http://gokmengorgen.net
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


Re: [Gelistirici] Python os.walk'ta dizin filtrelemece

2011-05-26 Başlik Gökmen Görgen
2011/5/26 Gökçen Eraslan 
>
> Selamlar,
>
> Pisi'deki index kodunu biraz daha hızlandırmak şöyle bir yama yaptım:
>
> Index: index.py
> ===
> --- index.py    (revision 37006)
> +++ index.py    (working copy)
> @@ -92,6 +92,8 @@
>         deltas = {}
>
>         for root, dirs, files in os.walk(repo_uri):
> +            dirs[:] = [d for d in dirs if d not in ['.svn', '.git', '.hg']]
> +
>             for fn in files:
>
>                 if fn.endswith(ctx.const.delta_package_suffix):
>
> Fakat burada okunabilirliği azalttığı ve tavsiye edilmediği için [:] hack'ini
> kullanmak istemiyorum, zira kullanmayınca da dirs değişkeni değiştirilmiyor.
> Tek tek dirs.remove(x) ile silmek de hoşuma gitmiyor.
>
> Başka çözüm bilen var mı?

Denemeden yazıyorum ama belki çalışıyordur böyle:

for root, dirs, files in os.walk(repo_uri):
if not dirs in ['.svn', '.git', '.hg']:
for fn in files:
[...]

Bir de .git ve .hg sadece repo kök dizininde olan dizinler, onu da
belki sadece kök dizinde kontrol ettirmek bir nebze hızlandırabilir.

--
gkmngrgn ~ http://gokmengorgen.net
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici


[Gelistirici] Python os.walk'ta dizin filtrelemece

2011-05-26 Başlik Gökçen Eraslan
Selamlar,

Pisi'deki index kodunu biraz daha hızlandırmak şöyle bir yama yaptım:

Index: index.py
===
--- index.py(revision 37006)
+++ index.py(working copy)
@@ -92,6 +92,8 @@
 deltas = {}
 
 for root, dirs, files in os.walk(repo_uri):
+dirs[:] = [d for d in dirs if d not in ['.svn', '.git', '.hg']]
+
 for fn in files:
 
 if fn.endswith(ctx.const.delta_package_suffix):

Fakat burada okunabilirliği azalttığı ve tavsiye edilmediği için [:] hack'ini 
kullanmak istemiyorum, zira kullanmayınca da dirs değişkeni değiştirilmiyor. 
Tek tek dirs.remove(x) ile silmek de hoşuma gitmiyor. 

Başka çözüm bilen var mı?

-- 
Gökçen Eraslan


signature.asc
Description: This is a digitally signed message part.
___
Gelistirici mailing list
Gelistirici@pardus.org.tr
http://liste.pardus.org.tr/mailman/listinfo/gelistirici