History

python/: improve build

Paul Brossier committed 13 years ago

Commit ad5203c1 parent 208336b8 files · +47 −38Browse files

Showing the changes to python (7 of 8 files). Show all

Unified · Split

7 files
  1. python/README +0 −0
  2. python/ext/aubio-types.h +7 −4
  3. python/ext/aubiomodule.c +5 −3
  4. python/ext/ufuncs.c +4 −2
  5. python/gen_pyobject.py +1 −1
  6. python/generator.py +10 −10
  7. python/setup.py +20 −5
python/READMErenamed from python/README.md+0−0

File renamed without changes.

python/ext/aubio-types.h+7−4
@@ -10,16 +10,19 @@ · 9 unmodified lines
1010 // only import array and ufunc from main module
1111 #ifndef PY_AUBIO_MODULE_MAIN
1212 #define NO_IMPORT_ARRAY
13+#endif
14+#include <numpy/arrayobject.h>
15+#ifndef PY_AUBIO_MODULE_UFUNC
1316 #define NO_IMPORT_UFUNC
17+#else
18+#include <numpy/ufuncobject.h>
1419 #endif
1520
1621 // import aubio
17−#include <numpy/ndarraytypes.h>
18−#include <numpy/ufuncobject.h>
19−#include <numpy/npy_3kcompat.h>
22+//#include <numpy/npy_3kcompat.h>
2023
2124 #define AUBIO_UNSTABLE 1
22−#include <aubio.h>
25+#include "aubio.h"
2326
2427 #define Py_default_vector_length 1024
2528
python/ext/aubiomodule.c+5−3
@@ -1,6 +1,9 @@
11 #define PY_AUBIO_MODULE_MAIN
22 #include "aubio-types.h"
3−#include "generated/aubio-generated.h"
3+#include "aubio-generated.h"
4+
5+extern void add_generated_objects ( PyObject *m );
6+extern void add_ufuncs ( PyObject *m );
47
58 static char Py_alpha_norm_doc[] = "compute alpha normalisation factor";
69
@@ -261,10 +264,9 @@ init_aubio (void) · 254 unmodified lines
261264 }
262265
263266 err = _import_array ();
264−
265267 if (err != 0) {
266268 fprintf (stderr,
267− "Unable to import Numpy C API from aubio module (error %d)\n", err);
269+ "Unable to import Numpy array from aubio module (error %d)\n", err);
268270 }
269271
270272 Py_INCREF (&Py_cvecType);
python/ext/ufuncs.c+4−2
@@ -1,3 +1,4 @@
1+#define PY_AUBIO_MODULE_UFUNC
12 #include "aubio-types.h"
23
34 static void unwrap2pi(char **args, npy_intp *dimensions,
@@ -60,11 +61,12 @@ static char unwrap2pi_types[] = { · 56 unmodified lines
6061
6162 void add_ufuncs ( PyObject *m )
6263 {
63− int err = _import_umath();
64+ int err = 0;
6465
66+ err = _import_umath ();
6567 if (err != 0) {
6668 fprintf (stderr,
67− "Unable to import Numpy C API Ufunc from aubio module (error %d)\n", err);
69+ "Unable to import Numpy umath from aubio module (error %d)\n", err);
6870 }
6971
7072 PyObject *f, *dict;
python/gen_pyobject.py+1−1
@@ -172,7 +172,7 @@ def gen_new_init(newfunc, name): · 171 unmodified lines
172172 // WARNING: this file is generated, DO NOT EDIT
173173
174174 // WARNING: if you haven't read the first line yet, please do so
175−#include "ext/aubiowraphell.h"
175+#include "aubiowraphell.h"
176176
177177 typedef struct
178178 {
python/generator.py+10−10
@@ -27,9 +27,9 @@ def get_cpp_objects(): · 26 unmodified lines
2727
2828 return cpp_output, cpp_objects
2929
30−def generate_object_files():
31− if os.path.isdir('generated'): shutil.rmtree('generated')
32− os.mkdir('generated')
30+def generate_object_files(output_path):
31+ if os.path.isdir(output_path): shutil.rmtree(output_path)
32+ os.mkdir(output_path)
3333
3434 generated_objects = []
3535 cpp_output, cpp_objects = get_cpp_objects()
@@ -48,7 +48,7 @@ def generate_object_files(): · 12 unmodified lines
4848
4949 for this_object in cpp_objects:
5050 lint = 0
51−
51+
5252 if this_object[-2:] == '_t':
5353 object_name = this_object[:-2]
5454 else:
@@ -126,11 +126,11 @@ def generate_object_files(): · 71 unmodified lines
126126 continue
127127 if 1: #try:
128128 s = gen_new_init(new_methods[0], short_name)
129− s += gen_do(do_methods[0], short_name)
129+ s += gen_do(do_methods[0], short_name)
130130 s += gen_members(new_methods[0], short_name)
131131 s += gen_methods(get_methods, set_methods, short_name)
132132 s += gen_finish(short_name)
133− generated_filepath = 'generated/gen-'+short_name+'.c'
133+ generated_filepath = os.path.join(output_path,'gen-'+short_name+'.c')
134134 fd = open(generated_filepath, 'w')
135135 fd.write(s)
136136 #except Exception, e:
@@ -174,14 +174,14 @@ def generate_object_files(): · 37 unmodified lines
174174 s += """
175175 }"""
176176
177− fd = open('generated/aubio-generated.h', 'w')
177+ fd = open(os.path.join(output_path,'aubio-generated.h'), 'w')
178178 fd.write(s)
179179
180180 from os import listdir
181− generated_files = listdir('generated')
181+ generated_files = listdir(output_path)
182182 generated_files = filter(lambda x: x.endswith('.c'), generated_files)
183− generated_files = ['generated/'+f for f in generated_files]
183+ generated_files = [output_path+'/'+f for f in generated_files]
184184 return generated_files
185185
186186 if __name__ == '__main__':
187− generate_object_files()
187+ generate_object_files('gen')
python/setup.py+20−5
@@ -1,22 +1,37 @@
11 #! /usr/bin/python
22
33 from distutils.core import setup, Extension
4−from generator import generate_object_files
54 import sys
65 import os.path
76 import numpy
87
98 # read from VERSION
10−for l in open(os.path.join('..','VERSION')).readlines(): exec (l.strip())
9+for l in open('VERSION').readlines(): exec (l.strip())
1110 __version__ = '.'.join \
1211 ([str(x) for x in [AUBIO_MAJOR_VERSION, AUBIO_MINOR_VERSION, AUBIO_PATCH_VERSION]]) \
1312 + AUBIO_VERSION_STATUS
1413
15−library_dirs = ['../build/src', '../src/.libs']
16−include_dirs = ['../build/src', '../src', '.' ]
14+library_dirs = ['../build/src']
15+include_dirs = ['../src'] # aubio.h
16+include_dirs += ['../build/src'] # config.h
17+include_dirs += ['ext']
18+include_dirs += ['gen']
19+#include_dirs += ['../build/src', '../src', '.' ]
20+
1721 library_dirs = filter (lambda x: os.path.isdir(x), library_dirs)
1822 include_dirs = filter (lambda x: os.path.isdir(x), include_dirs)
1923
24+generated_object_files = []
25+
26+output_path = 'gen'
27+
28+if not os.path.isdir(output_path):
29+ from generator import generate_object_files
30+ generated_object_files = generate_object_files(output_path)
31+else:
32+ import glob
33+ generated_object_files = glob.glob(os.path.join(output_path, '*.c'))
34+
2035 aubio_extension = Extension("aubio._aubio", [
2136 "ext/aubiomodule.c",
2237 "ext/aubioproxy.c",
@@ -29,7 +44,7 @@ aubio_extension = Extension("aubio._aubio", [ · 6 unmodified lines
2944 "ext/py-fft.c",
3045 "ext/py-phasevoc.c",
3146 # generated files
32− ] + generate_object_files(),
47+ ] + generated_object_files,
3348 include_dirs = include_dirs + [ numpy.get_include() ],
3449 library_dirs = library_dirs,
3550 libraries=['aubio'])

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t