[pypy-svn] r40602 - pypy/dist/pypy/translator/goal

mwh at codespeak.net mwh at codespeak.net
Fri Mar 16 18:50:28 CET 2007


Author: mwh
Date: Fri Mar 16 18:50:14 2007
New Revision: 40602

Modified:
   pypy/dist/pypy/translator/goal/multibuild.py
Log:
hack hack hack to the point where i can start this off on cobra before going to the pub :)


Modified: pypy/dist/pypy/translator/goal/multibuild.py
==============================================================================
--- pypy/dist/pypy/translator/goal/multibuild.py	(original)
+++ pypy/dist/pypy/translator/goal/multibuild.py	Fri Mar 16 18:50:14 2007
@@ -30,7 +30,7 @@
 
     for opt, v in opts.iteritems():
         if opt == 'translation.backend':
-            continue
+            backend = v
         optname = longoptfromname(config, opt).strip('-')
         if v is False:
             optname = 'no-' + optname
@@ -40,39 +40,83 @@
 
     suffix = ''
     if nameparts:
-        nameparts.sort()
+        def k(s):
+            if s.startswith('no-'):
+                return s[3:]
+            else:
+                return s
+        nameparts.sort(key=k)
         suffix = '-' + '-'.join(nameparts)
 
     return 'pypy-%s-%d%s'%(backend, rev, suffix)
 
+def _build(config, exe_name):
+    try:
+        driver = TranslationDriver.from_targetspec(
+            targetpypystandalone.__dict__,
+            config=config)
+        driver.exe_name = exe_name
+        driver.compile()
+    except (SystemExit, KeyboardInterrupt):
+        traceback.print_exc()
+        raise
+    except:
+        traceback.print_exc()
+        return "failed"
+    else:
+        return "worked"
+
 def build_pypy_with_options(basedir, opts):
     config = get_pypy_config(translate.OVERRIDES, translating=True)
 
     try:
         config.set(**opts)
     except:
-        return "didn't configure"
+        return exe_name_from_options(config, opts), "didn't configure"
+
+    exe_name = os.path.join(basedir, exe_name_from_options(config, opts))
+
+    return exe_name, 'postponed'
+
+    print exe_name,
+    sys.stdout.flush()
 
-    driver = TranslationDriver.from_targetspec(
-        targetpypystandalone.__dict__,
-        config=config)
-    driver.exe_name = os.path.join(basedir, exe_name_from_options(config, opts))
     se = sys.stderr
     so = sys.stdout
     try:
-        sys.stderr = sys.stdout = open(driver.exe_name + '-log', 'w')
-        try:
-            driver.compile()
-        except (SystemExit, KeyboardInterrupt):
-            traceback.print_exc()
-            raise
-        except:
-            traceback.print_exc()
-            return "failed"
-        else:
-            return "worked"
+        sys.stderr = sys.stdout = open(exe_name + '-log', 'w')
+        r = _build(config, exe_name)
     finally:
         sys.stderr = se
         sys.stdout = so
 
-print build_pypy_with_options('', {'translation.stackless':True})
+    print r
+    return exe_name, r
+
+def get_options(fname):
+    def gen_opts(sofar, remaining):
+        if not remaining:
+            yield sofar
+        else:
+            for (k, v) in remaining[0]:
+                d2 = sofar.copy()
+                d2[k] = v
+                for d in gen_opts(d2, remaining[1:]):
+                    yield d
+    options = []
+    for line in open(fname):
+        l = []
+        optname, options_ = line.split(':')
+        options.append([(optname.strip(), eval(optval.strip())) for optval in options_.split(',')])
+    return gen_opts({}, options)
+
+
+if __name__ == '__main__':
+    basedir = sys.argv[1]
+    optionsfile = sys.argv[2]
+    results = []
+    for opts in get_options(optionsfile):
+        results.append(build_pypy_with_options(basedir, opts))
+    out = open(os.path.join(basedir, 'results'), 'w')
+    for exe, r in results:
+        print >>out, exe, r



More information about the Pypy-commit mailing list