aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/mtn2git/mtn2cache.py
diff options
context:
space:
mode:
authorJan Lübbe <jluebbe@debian.org>2008-10-13 09:32:51 +0000
committerJan Lübbe <jluebbe@debian.org>2008-10-13 09:32:51 +0000
commit4d085fba58dfe13563f5a3d3900a93ff2859705e (patch)
tree1838637169be75d4d6787e4530c593082791affb /contrib/mtn2git/mtn2cache.py
parentf55f3d0724bdd62c22cb5cdbaa317dcfe7edc085 (diff)
downloadopenembedded-4d085fba58dfe13563f5a3d3900a93ff2859705e.tar.gz
mtn2git: fix bugs in conversion script
also add mtn2cache.py which extracts some information from the DB (caution ~40GiB)
Diffstat (limited to 'contrib/mtn2git/mtn2cache.py')
-rwxr-xr-xcontrib/mtn2git/mtn2cache.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/contrib/mtn2git/mtn2cache.py b/contrib/mtn2git/mtn2cache.py
new file mode 100755
index 0000000000..323822a7fb
--- /dev/null
+++ b/contrib/mtn2git/mtn2cache.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+import os, processing
+from child import Child
+
+MTN = ["mtn", "--db=~/oe/OE.mtn"]
+DIFF = ["diff", "-u"]
+
+def handle_parents(revision):
+ parents = Child(*MTN+["au", "parents", revision]).stdout.strip().split('\n')
+ if not parents:
+ return
+ print "revision: %s (parents: %s)" % (revision, parents)
+ for parent in parents:
+ filename = os.path.join("mtn2cache", "patch", parent+"-"+revision)
+ curfilename = os.path.join("mtn2cache", "manifest", revision)
+ parfilename = os.path.join("mtn2cache", "manifest", parent)
+ if not os.path.exists(filename):
+ diff = Child(*DIFF+[parfilename, curfilename]).stdout
+ try:
+ file(filename, "w").write(diff)
+ except:
+ os.unlink(filename)
+ raise
+
+def handle_revision(revision):
+ print "revision: %s" % revision
+ filename = os.path.join("mtn2cache", "revision", revision)
+ if not os.path.exists(filename):
+ data = Child(*MTN+["au", "get_revision", revision]).stdout
+ try:
+ file(filename, "w").write(data)
+ except:
+ os.unlink(filename)
+ raise
+
+ filename = os.path.join("mtn2cache", "manifest", revision)
+ if not os.path.exists(filename):
+ data = Child(*MTN+["au", "get_manifest_of", revision]).stdout
+ try:
+ file(filename, "w").write(data)
+ except:
+ os.unlink(filename)
+ raise
+
+ filename = os.path.join("mtn2cache", "certs", revision)
+ if not os.path.exists(filename):
+ data = Child(*MTN+["au", "certs", revision]).stdout
+ try:
+ file(filename, "w").write(data)
+ except:
+ os.unlink(filename)
+ raise
+
+def handle_head(head):
+ print "head: %s" % head
+ ancestors = Child(*MTN+["au", "ancestors", head]).stdout.strip().split('\n')
+ pool.map(handle_revision, ancestors)
+ pool.map(handle_parents, ancestors)
+
+def handle_branch(branch):
+ print "branch: %s" % branch
+ heads = Child(*MTN+["au", "heads", branch]).stdout.strip().split('\n')
+ for head in heads:
+ handle_head(head)
+
+def main():
+ branches = Child(*MTN+["au", "branches"]).stdout.strip().split('\n')
+ for branch in branches:
+ handle_branch(branch)
+
+pool = processing.Pool(12)
+main()
+