/var/lib/pisi altinda duran eski formatli metadata dosyalarinizi fix

edebilirsiniz bununla (test ettim fakat her ihtimale karsi dizini yedekleyin
bir yere)..

 bu sayede faik'in pisiye kazandirdigi rebuilddb fonksiyonu ile paket
rootfs0.1'den kalma paketler de db'de guncellenebilir.. bu sayede de ufak bir
kac adim ile rootfs 0.2'nin tar.bz2'sini insanlar indirmek zorunda kalmaz,
sadece binary depodan update edebilirler sistemlerini.. hem biz de update ile
ilgili bir sikintimiz var mi gercek ortamda test etmis olabiliriz belki..
This commit is contained in:
A. Murat Eren
2005-10-29 22:54:39 +00:00
parent 778850d88f
commit 8a7a7f0925
+65
View File
@@ -0,0 +1,65 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
import xml.dom.minidom as mdom
import codecs
import os
folder = "/var/lib/pisi"
def saveMetadata(data, file):
if data:
f = codecs.open(file, 'w', "utf-8")
f.write(data)
f.close()
return 0
else:
return 1
def getNodeText(node, tag, default=None):
try : c = getTags(node, tag)[0].firstChild.data
except: c = default
return c
def getTags(parent, childName):
return [x for x in parent.childNodes if x.nodeType == x.ELEMENT_NODE if x.tagName == childName]
def addText(dom, parent, text):
cdata = dom.createTextNode(text)
parent.appendChild(cdata)
def fixMetadata(metadata):
dom = mdom.parse(metadata)
pisi = dom.documentElement
package = getTags(pisi, "Package")[0]
history = getTags(package, "History")[0]
item = package.removeChild(history)
for update in history.childNodes:
if update.nodeType == update.ELEMENT_NODE:
try:
rno = getNodeText(update, "Release")[6:-5]
except TypeError:
return None
update.setAttribute("release", rno)
release = getTags(update, "Release")[0]
update.removeChild(release)
addText(dom, package, " ")
package.appendChild(item)
addText(dom, package, "\n ")
return dom.toxml()
def findMetadata():
m = []
for root, dirs, files in os.walk(folder):
if "metadata.xml" in files:
m.append(root + '/metadata.xml')
return m
for file in findMetadata():
if not saveMetadata(fixMetadata(file), file):
print "Guncellendi : ", file
else:
print "Hiç bir şey yapılmadı: ", file