[Numpy-svn] r3969 - trunk/numpy/distutils
numpy-svn at scipy.org
numpy-svn at scipy.org
Fri Aug 17 14:29:10 EDT 2007
Author: cookedm
Date: 2007-08-17 13:29:08 -0500 (Fri, 17 Aug 2007)
New Revision: 3969
Modified:
trunk/numpy/distutils/unixccompiler.py
Log:
- remove .a static libs and recreate, instead of updating (ar on OS X can't
handle updating universal .a)
- in unixccompiler, use ccompiler.replace_method instead of new.instance_method
Modified: trunk/numpy/distutils/unixccompiler.py
===================================================================
--- trunk/numpy/distutils/unixccompiler.py 2007-08-17 18:23:46 UTC (rev 3968)
+++ trunk/numpy/distutils/unixccompiler.py 2007-08-17 18:29:08 UTC (rev 3969)
@@ -3,10 +3,10 @@
"""
import os
-import new
from distutils.errors import DistutilsExecError, CompileError
from distutils.unixccompiler import *
+from numpy.distutils.ccompiler import replace_method
import log
@@ -18,26 +18,33 @@
extra_postargs, display = display)
except DistutilsExecError, msg:
raise CompileError, msg
-UnixCCompiler._compile = new.instancemethod(UnixCCompiler__compile,
- None,
- UnixCCompiler)
+replace_method(UnixCCompiler, '_compile', UnixCCompiler__compile)
-def UnixCCompile_create_static_lib(self, objects, output_libname,
- output_dir=None, debug=0, target_lang=None):
+
+def UnixCCompiler_create_static_lib(self, objects, output_libname,
+ output_dir=None, debug=0, target_lang=None):
objects, output_dir = self._fix_object_args(objects, output_dir)
output_filename = \
self.library_filename(output_libname, output_dir=output_dir)
if self._need_link(objects, output_filename):
+ try:
+ # previous .a may be screwed up; best to remove it first
+ # and recreate.
+ # Also, ar on OS X doesn't handle updating universal archives
+ os.unlink(output_filename)
+ except (IOError, OSError):
+ pass
self.mkpath(os.path.dirname(output_filename))
tmp_objects = objects + self.objects
while tmp_objects:
objects = tmp_objects[:50]
tmp_objects = tmp_objects[50:]
- display = '%s: adding %d object files to %s' % (os.path.basename(self.archiver[0]),
- len(objects),output_filename)
+ display = '%s: adding %d object files to %s' % (
+ os.path.basename(self.archiver[0]),
+ len(objects), output_filename)
self.spawn(self.archiver + [output_filename] + objects,
display = display)
@@ -58,6 +65,5 @@
log.debug("skipping %s (up-to-date)", output_filename)
return
-UnixCCompiler.create_static_lib = \
- new.instancemethod(UnixCCompile_create_static_lib,
- None,UnixCCompiler)
+replace_method(UnixCCompiler, 'create_static_lib',
+ UnixCCompiler_create_static_lib)
More information about the Numpy-svn
mailing list