[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