forked from pybluez/pybluez
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
executable file
·117 lines (101 loc) · 4.23 KB
/
setup.py
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/env python
import os
import platform
import sys
from setuptools import setup, Extension
# This marks the wheel as always being platform-specific and not pure Python
# See: https://stackoverflow.com/q/45150304/145504
try:
from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
class impure_bdist_wheel(_bdist_wheel):
def finalize_options(self):
_bdist_wheel.finalize_options(self)
self.root_is_pure = False
except ImportError:
# If the wheel module isn't available, no problem -- we're not doing a
# bdist_wheel in that case anyway.
impure_bdist_wheel = None
packages = ['bluetooth']
package_dir = dict()
ext_modules = list()
install_requires = list()
package_data = dict()
eager_resources = list()
zip_safe = True
if sys.platform == 'win32':
ext_modules.append(Extension('bluetooth._msbt',
libraries=["WS2_32", "Bthprops"],
sources=['msbt\\_msbt.c']))
elif sys.platform.startswith('linux'):
mod1 = Extension('bluetooth._bluetooth',
libraries = ['bluetooth'],
#extra_compile_args=['-O0'],
sources = ['bluez/btmodule.c', 'bluez/btsdp.c'])
ext_modules.append(mod1)
elif sys.platform.startswith("darwin"):
packages.append('lightblue')
package_dir['lightblue'] = 'macos'
zip_safe = False
if sys.version_info >= (3,6):
install_requires += ['pyobjc-core>=6', 'pyobjc-framework-Cocoa>=6']
else:
install_requires += ['pyobjc-core>=3.1,<6', 'pyobjc-framework-Cocoa>=3.1,<6']
# FIXME: This is inelegant, how can we cover the cases?
build_cmds = {'bdist', 'bdist_egg', 'bdist_wheel'}
if build_cmds & set(sys.argv):
# Build the framework into macos/
import subprocess
subprocess.check_call([
'xcodebuild', 'install',
'-project', 'macos/LightAquaBlue/LightAquaBlue.xcodeproj',
'-scheme', 'LightAquaBlue',
'DSTROOT=' + os.path.join(os.getcwd(), 'macos'),
'INSTALL_PATH=/',
'DEPLOYMENT_LOCATION=YES',
])
# We can't seem to list a directory as package_data, so we will
# recursively add all all files we find
package_data['lightblue'] = []
for path, _, files in os.walk('macos/LightAquaBlue.framework'):
for f in files:
include = os.path.join(path, f)[6:] # trim off macos/
package_data['lightblue'].append(include)
# This should allow us to use the framework from an egg [untested]
eager_resources.append('macos/LightAquaBlue.framework')
else:
raise Exception("This platform (%s) is currently not supported by pybluez."
% sys.platform)
setup(name='PyBluez',
version='0.30',
description='Bluetooth Python extension module',
author="Albert Huang",
author_email="ashuang@alum.mit.edu",
url="http://pybluez.github.io/",
ext_modules=ext_modules,
packages=packages,
python_requires=">=3.7",
# for the python cheese shop
classifiers=['Development Status :: 4 - Beta',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3 :: Only',
'Topic :: Communications'],
download_url='https://github.com/pybluez/pybluez',
long_description='Bluetooth Python extension module to allow Python '\
'developers to use system Bluetooth resources. PyBluez works '\
'with GNU/Linux, macOS, and Windows.',
maintainer='Piotr Karulis',
license='GPL',
extras_require={'ble': ['gattlib']},
package_dir=package_dir,
install_requires=install_requires,
package_data=package_data,
eager_resources=eager_resources,
zip_safe=zip_safe,
cmdclass={'bdist_wheel': impure_bdist_wheel},
)