From 8a7a7f09255ff26b63294dac8db8794b4aaa4f77 Mon Sep 17 00:00:00 2001 From: "A. Murat Eren" Date: Sat, 29 Oct 2005 22:54:39 +0000 Subject: [PATCH] /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.. --- tools/fix_old_metadata_files.py | 65 +++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 tools/fix_old_metadata_files.py diff --git a/tools/fix_old_metadata_files.py b/tools/fix_old_metadata_files.py new file mode 100755 index 00000000..dfd8dd91 --- /dev/null +++ b/tools/fix_old_metadata_files.py @@ -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