[Gelistirici] PiSi modüllerinin nesi eksik?
Barış Metin
baris at pardus.org.tr
16 Eki 2006 Pzt 00:50:01 EEST
15 Eki 2006 Paz 23:15 tarihinde, S.Çağlar Onur şunları yazmıştı:
> 1. API yavaş (dog slow dediklerinden),
Evet yavaş ama bunu Gürer ile de konuştuk, tüm depodaki paketlerin pspec.xml
dosyalarını okuyup descriptionlarını değiştirmek ve yazmak 10 saniye sürüyor.
Bu işlemi yaptığımız _her yerde_ 10 saniyeye tahammülümüz yok mu?
> 2. API DB initi vs gibi gereksiz ayrıntıları zorunlu tutuyor, oysa atıyorum
> ben sadece pspecler içinde Runtime'depleri almak istiyorum,
Python kullanıyoruz, her modülü import edip çağırabilirsin.
s = pisi.specfile.SpecFile()
s.read(pspec)
for p in s.packages:
deps = p.runtimeDependencies():
doWhatEverYouWant(deps)
Her durumda yaptığın şey xml'i parse etmekten iyi olacaktır. Aşağıdaki gibi
fonksiyonlar yazmak zorunda değiliz bence :).
doc = iks.parse(pak + "/pspec.xml")
for section in ["Package", "Source"]:
for node in doc.tags(section):
msg = Message()
for tag in ["Summary", "Description"]:
for item in node.tags(tag):
lang = item.getAttribute("xml:lang")
if not lang or lang == "en":
msg.msgid = item.firstChild().data()
elif lang == language:
msg.msgstr = item.firstChild().data()
if section == "Package":
msg.reference = pak[len(path):] + ":" +
node.getTagData("Name") + ":" + tag.lower()
else:
msg.reference = pak[len(path):] + "::" +
tag.lower()
> 3. API consistent değil,
Ah, evet. XML dosyalarını parse edip okumak daha "consistent" :)
> 4. API exception falan handle etmiyor, paket kuruldu mu , kurulmadıysa
> neden kurulmadı gibi bilimim iç pisi işini dışarda yapmak zorunda
> kalıyoruz,
Eğer bir defa ve yalnızca özel bir ihtiyaç ile bunu yapıyorsan sorun yok ama
bu tekrarlanan bir ihtiyaç ise eklenir pisi içerisine.
> 5. API tam değil, zaten topu topu 10-15 fonksiyon sunuyor
> sunmuyor, bir anda pisi.pxml.hede diye başka şeyleri import eder buluyorum
> kendimi, onları import edeceksem allaha şükür başta ederdim zaten diye
> düşünüyorum
4'e yazdığım ile aynı bunun cevabı.
> 6. Mesela atıyorum sadece depodaki tüm pspec.xml'lerin içindeki
> url'leri al onları çek demek için
>
> import pisi.api
> import pisi.uri
> import pisi.context as ctx
> import pisi.specfile
> import pisi.util as util
> from pisi.fetcher import fetch_url
> ....
>
> diye gidiyorum, oysa find -name pspec.xml | xargs ile başlayan bir satırda
> bu işi daha hızlı, kolay ve sorunsuz halledebilirim
Yine 4'e yazdığım ile aynı bunun da cevabı. "find -name pspec.xml..." çözümü
ise fazla Debian ;). Hadi olmaz diyelim ama pspec.xml değişirse ne olacak?
Hızlı kirli çözümler ile bir defalık sorunlara çözüm üretmek hepimizin yaptığı
şey. Ama genel bir ihtiyacı bu şekilde karşılamak yanlış.
> 7. API'yi sevmiyorum, bir hata raporu ile düzeltilebilecek durumda
> olduğunada inanmuıyorum tüm kalan laflarımı 1.1+ sonrasına saklıyorum (bu
> saklayan halim :P)
En güzelini yapıyorsun diyemeyeceğim maalesef :(.
iyi çalışmalar,
--
Barış Metin
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi