William Pitcock avatar William Pitcock committed 0066f75

appliancekit.driver: highlevel framework for driving the compiler and interpreter

Comments (0)

Files changed (2)

appliancekit/__init__.py

 
 import appliancekit.compiler
 import appliancekit.axml
-
+import appliancekit.driver
+import appliancekit.parsetree

appliancekit/driver.py

+#!/usr/bin/env python
+"""
+Copyright (c) 2012, 2013 TortoiseLabs LLC
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+This software is provided 'as is' and without any warranty, express or
+implied. In no event shall the authors be liable for any damages arising
+from the use of this software.
+"""
+
+from appliancekit.axml import compile_axml_file
+from appliancekit.compiler import compile_ir_string
+from appliancekit.parsetree import compile_parsetree, interpret_parsetree
+
+default_phases = ['bootstrap', 'packages', 'custom', 'configure', 'xen-tweaks', 'cleanup']
+
+def ak_to_debarch(arch):
+    if arch == 'x86': return 'i386'
+    if arch == 'x86_64': return 'amd64'
+    return arch
+
+def run_ir_string(data, chroot, state, phases=default_phases, arch='x86_64'):
+    tree = compile_parsetree(data)
+
+    state['chroot'] = chroot
+    state['arch'] = arch
+    state['debarch'] = ak_to_debarch(arch)
+
+    interpret_parsetree(tree, state)
+
+def run_ir(file, chroot, state, phases=default_phases, arch='x86_64'):
+    ir_data = open(file).read()
+    data = compile_ir_string(ir_data, phases=phases)
+    run_ir_string(data, chroot, state, phases, arch)
+
+def run_axml(file, chroot, state, phases=default_phases, arch='x86_64'):
+    data = compile_axml_file(file, phases=phases)
+    run_ir_string(data, chroot, state, phases, arch)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.