make load_module compatible with python 3.2
[mass-build.git] / mass_build.py
index e327b7ee2e91c23ea86b6226f949813de281c5ae..79bc17a9db3f41edfe6c0c74eff1f2a570e2569b 100755 (executable)
@@ -20,14 +20,20 @@ import vcs, build_system
 import argparse, os, sys, subprocess
 from collections import OrderedDict
 
-# helper funcrions
-def load_module(name, path):
-       import importlib.machinery
-       old_val = sys.dont_write_bytecode
-       sys.dont_write_bytecode = True
-       module = importlib.machinery.SourceFileLoader(name, path).load_module()
-       sys.dont_write_bytecode = old_val
-       return module
+# helper functions
+def load_module(name, path, write_bytecode = False):
+    old_val = sys.dont_write_bytecode
+    sys.dont_write_bytecode = not write_bytecode
+    module = None
+    try:
+        from importlib.machinery import SourceFileLoader
+        module = SourceFileLoader(name, path).load_module()
+    except ImportError:
+        import imp
+        module = imp.load_source(name, path)
+    finally:
+        sys.dont_write_bytecode = old_val
+    return module
 
 # an entire Project
 class Project:
@@ -60,7 +66,7 @@ class Project:
 
 # read command-line arguments
 parser = argparse.ArgumentParser(description='Update and build a bunch of stuff')
-parser.add_argument("-c--config",
+parser.add_argument("-c", "--config",
                     dest="config", default="mass-build.conf",
                     help="mass-build config file")
 parser.add_argument("--reconfigure",
@@ -88,7 +94,7 @@ if args.reset_source and not args.update:
        raise Exception("Can not reset sources without doing an update")
 
 # load config as dictionary
-config = load_module('config', args.config).__dict__
+config = vars(load_module('config', args.config))
 
 # initialise variables holding the configuration
 allProjects = OrderedDict() # all projects