[Gelistirici] zorg/update-* etc.

Bahadır Kandemir bahadir at pardus.org.tr
22 Mar 2007 Per 19:28:25 EET


22 Mar 2007 Per tarihinde, S.Çağlar Onur şunları yazmıştı: 
> Selamlar;
>
> zorg/update-fstab/update-grub/update-opengl'in birer ÇOMAR bacağı haline
> gelip bu binarylerin external olarak çağrılması gerekiyorsa o ÇOMAR
> bacaklarını wrap etmelerini sağlamak için ne yapmamız gerekiyor? Bir
> yapılandırma yöneticimiz var bu işler için yeterince uygun
> kullanamıyoruz gibi geliyor/tek başlarına öylece sistemde durmaları bana
> batıyor :)
>
> Saygılar

/etc/comar/model.xml içinde bir model oluşturulmalı öncelikle. Kernel 
paketlerinin postInstall'larının ve Boot-Manager'ın kullanacağı 
System.Boot adındaki ÇOMAR bacağı aşağıdaki gibi:

<group name="System">
    ...
    <class name="Boot">
        <method name="listOptions" access="guest"/>
        <method name="getOption" access="guest">
            <argument>key</argument>
        </method>
        <method name="setOption">
            <argument>key</argument>
            <argument>value</argument>
        </method>
        ...
        <method name="updateGrub"/>
        ...
        <notify name="changed" access="guest"/>
    </class>
    ...
</group>

Grub paketi ile gelecek betik ise şöyle:

    def listOptions():
        from grub import grubParser
        conf = "/boot/grub/grub.conf"
        grub = grubParser(conf)
        options = grub.options.keys()
        return "\n".join(options)

        # Çomar'dan gelen veri string tipinde olacağından,
        # burada liste türünde veri göndermek ve istemcide
        # eval() ile stringi listeye çevirmek iyi bir fikir değil.
    
    ...
    
    def updateGrub():
        from grub import addLastInstalledKernel
        addLastInstalledKernel()
        notify("System.Boot.changed")

Kernel paketlerinin postInstall'larında çalıştırılması gereken:

    import comar
    link = comar.Link()
    link.System.Boot.updateGrub()

Ya da, Boot-Manager'da seçeneklerin listesi alınırken:

    import comar
    link = comar.Link()
    link.System.Boot.listOptions()
    reply = link.read_cmd()
    options = reply.data.split("\n")


PS: System.Boot modeli henüz oturmadı, yukarıdakiler sadece örnek için



Gelistirici mesaj listesiyle ilgili daha fazla bilgi