1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
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
import sys
if sys.version_info < (3,6):
sys.exit('Sorry, Python < 3.6 is not supported')
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',
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>=6.6',
'peewee>=2.10.0',
'python-magic>=0.4'
],
entry_points='''
[console_scripts]
archivist=archivist.cli:cli
''',
zip_safe = False
)
|