[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