fixed the setup.py, it works now.

This commit is contained in:
sccolbert
2009-10-14 17:38:50 +02:00
parent 003141283f
commit d28e3e8555
5 changed files with 37 additions and 53 deletions
+4 -9
View File
@@ -1,12 +1,7 @@
You can try to use the setup.py but it may still be broken
Until we come to a solution for a setup.py, execute the included shell script build.sh and copy the .so's to wherever you want them
scikit/image/opencv$./build.sh
scikit/image/opencv$cd tests
scikit/image/opencv/tests$python test_opencv_cv.py
!* make sure the scikits directory is on the python path *!
Using the setup.py in this directory will work.
But the setup.py in the main scikits.image does not (it uses setuptools)
this will be changed in the future.
-3
View File
@@ -1,3 +0,0 @@
#!/bin/bash
cython opencv_backend.pyx && cython opencv_cv.pyx && gcc -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python2.6 -o opencv_backend.so opencv_backend.c && gcc -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python2.6 -o opencv_cv.so opencv_cv.c
+1 -1
View File
@@ -1,4 +1,4 @@
/* Generated by Cython 0.11.3 on Wed Oct 14 12:47:10 2009 */
/* Generated by Cython 0.11.3 on Wed Oct 14 17:34:08 2009 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
+1 -1
View File
@@ -1,4 +1,4 @@
/* Generated by Cython 0.11.3 on Wed Oct 14 12:47:11 2009 */
/* Generated by Cython 0.11.3 on Wed Oct 14 17:34:09 2009 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
+31 -39
View File
@@ -3,55 +3,47 @@
import os
import shutil
current_dir = os.path.dirname(__file__)
def configuration(parent_package='', top_path=None):
from numpy.distutils.misc_util import Configuration, get_numpy_include_dirs
config = Configuration('opencv', parent_package, top_path)
config.add_data_dir(os.path.join(current_dir, 'tests'))
config.add_data_dir('tests')
# since distutils/cython has problems, we'll check to see if cython is
# installed and use that to rebuild the .c files, if not, we'll just build
# direct from the included .c files
# directly from the included .c files
# if the cython compilation fails, it will overwrite the good .c files
# so we back them up first
src = os.path.join(current_dir, 'opencv_cv.c')
dst = os.path.join(current_dir, 'opencv_cv.c.bak')
shutil.copy(src, dst)
src = os.path.join(current_dir, 'opencv_backend.c')
dst = os.path.join(current_dir, 'opencv_backend.c.bak')
shutil.copy(src, dst)
cython_files = ['opencv_backend.pyx', 'opencv_cv.pyx']
try:
import cython
# no way to check the cython version number????
os.system('cython opencv_backend.pyx')
os.system('cython opencv_cv.pyx')
# if the cython compilation failed, the resulting file
# size will be very small ~ 78 bytes
f1 = os.path.join(current_dir, 'opencv_cv.c')
f2 = os.path.join(current_dir, 'opencv_backend.c')
size1 = os.path.getsize(f1)
size2 = os.path.getsize(f2)
assert size1 > 100 and size2 > 100
except:
print 'Cython compilation failed. Building from backups.'
src = os.path.join(current_dir, 'opencv_cv.c.bak')
dst = os.path.join(current_dir, 'opencv_cv.c')
shutil.copy(src, dst)
src = os.path.join(current_dir, 'opencv_backend.c.bak')
dst = os.path.join(current_dir, 'opencv_backend.c')
shutil.copy(src, dst)
config.add_extension('opencv_backend', sources=['opencv_backend.c'],
include_dirs=[get_numpy_include_dirs()])
import Cython
for pyxfile in cython_files:
# make a backup of the good c files
c_file = pyxfile.rstrip('pyx') + 'c'
src = c_file
dst = c_file + '.bak'
shutil.copy(src, dst)
# run cython compiler
os.system('cython ' + pyxfile)
# if the file is small, cython compilation failed
size = os.path.getsize(c_file)
if size < 100:
print 'Cython compilation failed. Restoring from backup.'
# restore from backup
shutil.copy(dst, src)
except ImportError:
# if cython is not found, we just build from the include .c files
pass
config.add_extension('opencv_cv', sources=['opencv_cv.c'],
include_dirs=[get_numpy_include_dirs()])
for pyxfile in cython_files:
c_file = pyxfile.rstrip('pyx') + 'c'
config.add_extension(pyxfile.rstrip('.pyx'),
sources=[c_file],
include_dirs=[get_numpy_include_dirs()])
return config