[svn r38808] trying to be more ignorant about missing abilities

to remove c-extension modules (they might be in
site-packages) and adding a hack to make sure
that the greenlet module gets build ahead of
the setup install.

--HG--
branch : trunk
This commit is contained in:
hpk 2007-02-14 13:13:39 +01:00
parent d02d937b74
commit 86155cceb8
2 changed files with 36 additions and 26 deletions

View File

@ -135,6 +135,12 @@ def set_registry_value(reg, key, value_name, value):
def setup(pkg, **kw): def setup(pkg, **kw):
""" invoke distutils on a given package. """ 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) params = Params(pkg)
#dump(params) #dump(params)
source = getattr(pkg, '__package__', pkg) source = getattr(pkg, '__package__', pkg)

View File

@ -31,38 +31,42 @@ def make_module_from_c(cfile):
raise ImportError, "cannot find the file name suffix of C ext modules" raise ImportError, "cannot find the file name suffix of C ext modules"
lib = dirpath.join(modname+ext) lib = dirpath.join(modname+ext)
# argl! we need better "build"-locations alltogether! # XXX argl! we need better "build"-locations alltogether!
if lib.check(): if lib.check():
lib.remove()
c = py.io.StdCaptureFD()
try:
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: try:
lastdir = dirpath.chdir() saved_environ = os.environ.items()
try: try:
setup( lastdir = dirpath.chdir()
name = "pylibmodules", try:
ext_modules=[ setup(
Extension(modname, [str(cfile)]) name = "pylibmodules",
], ext_modules=[
script_name = 'setup.py', Extension(modname, [str(cfile)])
script_args = ['-q', 'build_ext', '--inplace'] ],
#script_args = ['build_ext', '--inplace'] script_name = 'setup.py',
) script_args = ['-q', 'build_ext', '--inplace']
#script_args = ['build_ext', '--inplace']
)
finally:
lastdir.chdir()
finally: finally:
lastdir.chdir() for key, value in saved_environ:
if os.environ.get(key) != value:
os.environ[key] = value
finally: finally:
for key, value in saved_environ: foutput, foutput = c.done()
if os.environ.get(key) != value: except KeyboardInterrupt:
os.environ[key] = value raise
finally: except SystemExit, e:
foutput, foutput = c.done() raise RuntimeError("cannot compile %s: %s\n%s" % (cfile, e,
except KeyboardInterrupt:
raise
except SystemExit, e:
raise RuntimeError("cannot compile %s: %s\n%s" % (cfile, e,
foutput.read())) foutput.read()))
# XXX do we need to do some check on fout/ferr? # XXX do we need to do some check on fout/ferr?
# XXX not a nice way to import a module # XXX not a nice way to import a module