/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:
Executable
+65
@@ -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
|
||||
Reference in New Issue
Block a user