diff --git a/py/misc/_dist.py b/py/misc/_dist.py index 9a4d9d1bf..dc07bee95 100644 --- a/py/misc/_dist.py +++ b/py/misc/_dist.py @@ -135,6 +135,12 @@ def set_registry_value(reg, key, value_name, value): def setup(pkg, **kw): """ invoke distutils on a given package. """ + print "precompiling greenlet module" + try: + x = py.magic.greenlet() + except ImportError: + print "could not precompile greenlet module, skipping" + params = Params(pkg) #dump(params) source = getattr(pkg, '__package__', pkg) diff --git a/py/misc/buildcmodule.py b/py/misc/buildcmodule.py index 5215e091b..032e4ef7a 100644 --- a/py/misc/buildcmodule.py +++ b/py/misc/buildcmodule.py @@ -31,38 +31,42 @@ def make_module_from_c(cfile): raise ImportError, "cannot find the file name suffix of C ext modules" lib = dirpath.join(modname+ext) - # argl! we need better "build"-locations alltogether! + # XXX argl! we need better "build"-locations alltogether! if lib.check(): - lib.remove() - - c = py.io.StdCaptureFD() - try: try: - saved_environ = os.environ.items() + lib.remove() + except EnvironmentError: + pass # XXX we just use the existing version, bah + + if not lib.check(): + c = py.io.StdCaptureFD() + try: try: - lastdir = dirpath.chdir() + saved_environ = os.environ.items() try: - setup( - name = "pylibmodules", - ext_modules=[ - Extension(modname, [str(cfile)]) - ], - script_name = 'setup.py', - script_args = ['-q', 'build_ext', '--inplace'] - #script_args = ['build_ext', '--inplace'] - ) + lastdir = dirpath.chdir() + try: + setup( + name = "pylibmodules", + ext_modules=[ + Extension(modname, [str(cfile)]) + ], + script_name = 'setup.py', + script_args = ['-q', 'build_ext', '--inplace'] + #script_args = ['build_ext', '--inplace'] + ) + finally: + lastdir.chdir() finally: - lastdir.chdir() + for key, value in saved_environ: + if os.environ.get(key) != value: + os.environ[key] = value finally: - for key, value in saved_environ: - if os.environ.get(key) != value: - os.environ[key] = value - finally: - foutput, foutput = c.done() - except KeyboardInterrupt: - raise - except SystemExit, e: - raise RuntimeError("cannot compile %s: %s\n%s" % (cfile, e, + foutput, foutput = c.done() + except KeyboardInterrupt: + raise + except SystemExit, e: + raise RuntimeError("cannot compile %s: %s\n%s" % (cfile, e, foutput.read())) # XXX do we need to do some check on fout/ferr? # XXX not a nice way to import a module