Showing the changes to python (4 of 6 files). Show all
Unified · Split
| @@ -1,6 +1,9 @@ | ||
| 1 | 1 | import os, glob |
| 2 | 2 | |
| 3 | −header = """// this file is generated! do not modify | |
| 3 | +header = 'src/aubio.h' | |
| 4 | +output_path = 'python/gen' | |
| 5 | + | |
| 6 | +source_header = """// this file is generated! do not modify | |
| 4 | 7 | #include "aubio-types.h" |
| 5 | 8 | """ |
| 6 | 9 | |
| @@ -41,9 +44,9 @@ skip_objects = [ · 34 unmodified lines | ||
| 41 | 44 | ] |
| 42 | 45 | |
| 43 | 46 | |
| 44 | −def get_cpp_objects(): | |
| 47 | +def get_cpp_objects(header=header): | |
| 45 | 48 | |
| 46 | − cpp_output = [l.strip() for l in os.popen('cpp -DAUBIO_UNSTABLE=1 -I../build/src ../src/aubio.h').readlines()] | |
| 49 | + cpp_output = [l.strip() for l in os.popen('cpp -DAUBIO_UNSTABLE=1 {:s}'.format(header)).readlines()] | |
| 47 | 50 | #cpp_output = [l.strip() for l in os.popen('cpp -DAUBIO_UNSTABLE=0 -I../build/src ../src/onset/onset.h').readlines()] |
| 48 | 51 | #cpp_output = [l.strip() for l in os.popen('cpp -DAUBIO_UNSTABLE=0 -I../build/src ../src/pitch/pitch.h').readlines()] |
| 49 | 52 | |
| @@ -66,11 +69,11 @@ def get_cpp_objects(): · 16 unmodified lines | ||
| 66 | 69 | |
| 67 | 70 | return cpp_output, cpp_objects |
| 68 | 71 | |
| 69 | −def generate_external(output_path, usedouble = False, overwrite = True): | |
| 72 | +def generate_external(header=header, output_path=output_path, usedouble=False, overwrite=True): | |
| 70 | 73 | if not os.path.isdir(output_path): os.mkdir(output_path) |
| 71 | 74 | elif overwrite == False: return glob.glob(os.path.join(output_path, '*.c')) |
| 72 | 75 | sources_list = [] |
| 73 | − cpp_output, cpp_objects = get_cpp_objects() | |
| 76 | + cpp_output, cpp_objects = get_cpp_objects(header) | |
| 74 | 77 | lib = {} |
| 75 | 78 | |
| 76 | 79 | for o in cpp_objects: |
| @@ -121,9 +124,12 @@ def generate_external(output_path, usedouble = False, overwrite = True): · 44 unmodified lines | ||
| 121 | 124 | print ( "{:15s} {:10s} {:d}".format(o, family, len(lib[o][family]) ) ) |
| 122 | 125 | """ |
| 123 | 126 | |
| 124 | − from .gen_code import MappedObject | |
| 127 | + try: | |
| 128 | + from .gen_code import MappedObject | |
| 129 | + except (SystemError, ValueError) as e: | |
| 130 | + from gen_code import MappedObject | |
| 125 | 131 | for o in lib: |
| 126 | − out = header | |
| 132 | + out = source_header | |
| 127 | 133 | mapped = MappedObject(lib[o], usedouble = usedouble) |
| 128 | 134 | out += mapped.gen_code() |
| 129 | 135 | output_file = os.path.join(output_path, 'gen-%s.c' % o) |
| @@ -132,7 +138,7 @@ def generate_external(output_path, usedouble = False, overwrite = True): · 2 unmodified lines | ||
| 132 | 138 | print ("wrote %s" % output_file ) |
| 133 | 139 | sources_list.append(output_file) |
| 134 | 140 | |
| 135 | − out = header | |
| 141 | + out = source_header | |
| 136 | 142 | out += "#include \"aubio-generated.h\"" |
| 137 | 143 | check_types = "\n || ".join(["PyType_Ready(&Py_%sType) < 0" % o for o in lib]) |
| 138 | 144 | out += """ |
| @@ -186,5 +192,7 @@ void add_generated_objects( PyObject *m ); · 47 unmodified lines | ||
| 186 | 192 | return sources_list |
| 187 | 193 | |
| 188 | 194 | if __name__ == '__main__': |
| 189 | − output_path = 'gen' | |
| 190 | − generate_external(output_path) | |
| 195 | + import sys | |
| 196 | + if len(sys.argv) > 1: header = sys.argv[1] | |
| 197 | + if len(sys.argv) > 2: output_path = sys.argv[2] | |
| 198 | + generate_external(header, output_path) | |
| @@ -1,8 +1,9 @@ | ||
| 1 | 1 | import distutils, distutils.command.clean, distutils.dir_util |
| 2 | +from .gen_external import generate_external, header, output_path | |
| 2 | 3 | |
| 3 | 4 | class CleanGenerated(distutils.command.clean.clean): |
| 4 | 5 | def run(self): |
| 5 | − distutils.dir_util.remove_tree('gen') | |
| 6 | + distutils.dir_util.remove_tree(output_path) | |
| 6 | 7 | distutils.command.clean.clean.run(self) |
| 7 | 8 | |
| 8 | 9 | class GenerateCommand(distutils.cmd.Command): |
| @@ -23,5 +24,4 @@ class GenerateCommand(distutils.cmd.Command): · 14 unmodified lines | ||
| 23 | 24 | |
| 24 | 25 | def run(self): |
| 25 | 26 | self.announce( 'Generating code', level=distutils.log.INFO) |
| 26 | − from .gen_external import generate_external | |
| 27 | − generated_object_files = generate_external('gen', usedouble = self.enable_double) | |
| 27 | + generated_object_files = generate_external(header, output_path, usedouble = self.enable_double) | |
| @@ -1,6 +0,0 @@ | ||
| 1 | −[unittest] | |
| 2 | −start-dir = tests/ | |
| 3 | −plugins = nose2.plugins.mp | |
| 4 | − | |
| 5 | −[multiprocess] | |
| 6 | −always-on = true | |
| @@ -1,95 +0,0 @@ | ||
| 1 | −#! /usr/bin/env python | |
| 2 | − | |
| 3 | −from setuptools import setup, Extension | |
| 4 | −from lib.moresetuptools import CleanGenerated, GenerateCommand | |
| 5 | − | |
| 6 | −import sys | |
| 7 | −import os.path | |
| 8 | −import numpy | |
| 9 | − | |
| 10 | −# read from VERSION | |
| 11 | −for l in open('VERSION').readlines(): exec (l.strip()) | |
| 12 | −__version__ = '.'.join \ | |
| 13 | − ([str(x) for x in [AUBIO_MAJOR_VERSION, AUBIO_MINOR_VERSION, AUBIO_PATCH_VERSION]]) \ | |
| 14 | − + AUBIO_VERSION_STATUS | |
| 15 | − | |
| 16 | −# function to generate gen/*.{c,h} | |
| 17 | −from lib.gen_external import generate_external | |
| 18 | −output_path = 'gen' | |
| 19 | − | |
| 20 | −include_dirs = [] | |
| 21 | −library_dirs = [] | |
| 22 | −define_macros = [] | |
| 23 | −extra_link_args = [] | |
| 24 | − | |
| 25 | −include_dirs += [ 'ext' ] | |
| 26 | −include_dirs += [ output_path ] # aubio-generated.h | |
| 27 | −include_dirs += [ numpy.get_include() ] | |
| 28 | − | |
| 29 | −if sys.platform.startswith('darwin'): | |
| 30 | − extra_link_args += ['-framework','CoreFoundation', '-framework','AudioToolbox'] | |
| 31 | − | |
| 32 | −if os.path.isfile('../src/aubio.h'): | |
| 33 | − define_macros += [('USE_LOCAL_AUBIO', 1)] | |
| 34 | − include_dirs += ['../src'] # aubio.h | |
| 35 | − library_dirs += ['../build/src'] | |
| 36 | − | |
| 37 | −aubio_extension = Extension("aubio._aubio", [ | |
| 38 | − "ext/aubiomodule.c", | |
| 39 | − "ext/aubioproxy.c", | |
| 40 | − "ext/ufuncs.c", | |
| 41 | − "ext/py-musicutils.c", | |
| 42 | − "ext/py-cvec.c", | |
| 43 | − # example without macro | |
| 44 | − "ext/py-filter.c", | |
| 45 | − # macroised | |
| 46 | − "ext/py-filterbank.c", | |
| 47 | − "ext/py-fft.c", | |
| 48 | − "ext/py-phasevoc.c", | |
| 49 | − "ext/py-source.c", | |
| 50 | − "ext/py-sink.c", | |
| 51 | − # generate files if they don't exit | |
| 52 | − ] + generate_external(output_path, overwrite = False), | |
| 53 | − include_dirs = include_dirs, | |
| 54 | − library_dirs = library_dirs, | |
| 55 | − extra_link_args = extra_link_args, | |
| 56 | − define_macros = define_macros, | |
| 57 | − libraries=['aubio']) | |
| 58 | − | |
| 59 | −classifiers = [ | |
| 60 | − 'Development Status :: 4 - Beta', | |
| 61 | − 'Environment :: Console', | |
| 62 | − 'Intended Audience :: Science/Research', | |
| 63 | − 'Topic :: Software Development :: Libraries', | |
| 64 | − 'Topic :: Multimedia :: Sound/Audio :: Analysis', | |
| 65 | − 'Topic :: Multimedia :: Sound/Audio :: Sound Synthesis', | |
| 66 | − 'Operating System :: POSIX', | |
| 67 | − 'Operating System :: MacOS :: MacOS X', | |
| 68 | − 'Operating System :: Microsoft :: Windows', | |
| 69 | − 'Programming Language :: C', | |
| 70 | − 'Programming Language :: Python', | |
| 71 | − 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', | |
| 72 | − ] | |
| 73 | − | |
| 74 | −distrib = setup(name='aubio', | |
| 75 | − version = __version__, | |
| 76 | − packages = ['aubio'], | |
| 77 | − package_dir = {'aubio':'lib/aubio'}, | |
| 78 | − scripts = ['scripts/aubiocut'], | |
| 79 | − ext_modules = [aubio_extension], | |
| 80 | − description = 'interface to the aubio library', | |
| 81 | − long_description = 'interface to the aubio library', | |
| 82 | − license = 'GNU/GPL version 3', | |
| 83 | − author = 'Paul Brossier', | |
| 84 | − author_email = 'piem@aubio.org', | |
| 85 | − maintainer = 'Paul Brossier', | |
| 86 | − maintainer_email = 'piem@aubio.org', | |
| 87 | − url = 'http://aubio.org/', | |
| 88 | − platforms = 'any', | |
| 89 | − classifiers = classifiers, | |
| 90 | − install_requires = ['numpy'], | |
| 91 | − cmdclass = { | |
| 92 | − 'clean': CleanGenerated, | |
| 93 | − 'generate': GenerateCommand, | |
| 94 | − } | |
| 95 | − ) | |