[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