From 4a0a1d6196f3d4f5bbfc40527d3729dd63ab5a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Sun, 26 Feb 2017 13:31:08 +0100 Subject: Include sqllite closure extension in build process --- setup.py | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'setup.py') diff --git a/setup.py b/setup.py index 660054e..44aa32a 100644 --- a/setup.py +++ b/setup.py @@ -1,10 +1,47 @@ -from setuptools import setup, find_packages +from setuptools import setup, find_packages, Extension, Command +from distutils.command.build_clib import build_clib as _build_clib +from distutils import log + +from setuptools.command.develop import develop as _develop + +class develop(_develop): + def install_for_development(self): + self.run_command('build_clib') + super().install_for_development() + +class build_sqlite_ext(_build_clib): + def build_libraries(self, libraries): + for (lib_name, build_info) in libraries: + sources = build_info.get('sources') + if sources is None or not isinstance(sources, (list, tuple)): + raise DistutilsSetupError( + "in 'libraries' option (library '%s'), " + "'sources' must be present and must be " + "a list of source filenames" % lib_name) + sources = list(sources) + + log.info("building '%s' library", lib_name) + + macros = build_info.get('macros') + include_dirs = build_info.get('include_dirs') + objects = self.compiler.compile(sources, + output_dir=self.build_temp, + macros=macros, + include_dirs=include_dirs, + debug=self.debug) + + self.compiler.link_shared_object(objects, lib_name, + output_dir=self.build_clib, + debug=self.debug) setup( name='archivist', version='0.1', - py_modules=find_packages(), + packages=find_packages(), include_package_data=True, + cmdclass={'build_clib': build_sqlite_ext, 'develop': develop}, + libraries=[('closure', {'sources': ['closure.c']})], + package_data={'archivist' : ['sqlext/*']}, install_requires=[ 'Click', 'peewee' @@ -13,4 +50,5 @@ setup( [console_scripts] archivist=archivist.cli:cli ''', + zip_safe = False ) -- cgit v1.2.3