111 lines
5.0 KiB
Python
111 lines
5.0 KiB
Python
|
from setuptools import setup, find_packages, Extension
|
||
|
import os
|
||
|
import sys
|
||
|
|
||
|
import Adafruit_DHT.platform_detect as platform_detect
|
||
|
|
||
|
|
||
|
BINARY_COMMANDS = [
|
||
|
'build_ext',
|
||
|
'build_clib',
|
||
|
'bdist',
|
||
|
'bdist_dumb',
|
||
|
'bdist_rpm',
|
||
|
'bdist_wininst',
|
||
|
'bdist_wheel',
|
||
|
'install'
|
||
|
]
|
||
|
|
||
|
|
||
|
def is_binary_install():
|
||
|
do_binary = [command for command in BINARY_COMMANDS if command in sys.argv]
|
||
|
return len(do_binary) > 0
|
||
|
|
||
|
|
||
|
def read(fname):
|
||
|
return open(os.path.join(os.path.dirname(__file__), fname)).read()
|
||
|
|
||
|
# Check if an explicit platform was chosen with a command line parameter.
|
||
|
# Kind of hacky to manipulate the argument list before calling setup, but it's
|
||
|
# the best simple option for adding optional config to the setup.
|
||
|
platform = platform_detect.UNKNOWN
|
||
|
pi_version = None
|
||
|
if '--force-pi' in sys.argv:
|
||
|
platform = platform_detect.RASPBERRY_PI
|
||
|
pi_version = 1
|
||
|
sys.argv.remove('--force-pi')
|
||
|
elif '--force-pi2' in sys.argv:
|
||
|
platform = platform_detect.RASPBERRY_PI
|
||
|
pi_version = 2
|
||
|
sys.argv.remove('--force-pi2')
|
||
|
elif '--force-bbb' in sys.argv:
|
||
|
platform = platform_detect.BEAGLEBONE_BLACK
|
||
|
sys.argv.remove('--force-bbb')
|
||
|
elif '--force-test' in sys.argv:
|
||
|
platform = 'TEST'
|
||
|
sys.argv.remove('--force-test')
|
||
|
else:
|
||
|
# No explicit platform chosen, detect the current platform.
|
||
|
platform = platform_detect.platform_detect()
|
||
|
|
||
|
# Pick the right extension to compile based on the platform.
|
||
|
extensions = []
|
||
|
if not is_binary_install():
|
||
|
print('Skipped loading platform-specific extensions for Adafruit_DHT (we are generating a cross-platform source distribution).')
|
||
|
elif platform == platform_detect.RASPBERRY_PI:
|
||
|
# Get the Pi version (1 or 2)
|
||
|
if pi_version is None:
|
||
|
pi_version = platform_detect.pi_version()
|
||
|
# Build the right extension depending on the Pi version.
|
||
|
if pi_version == 1:
|
||
|
extensions.append(Extension("Adafruit_DHT.Raspberry_Pi_Driver",
|
||
|
["source/_Raspberry_Pi_Driver.c", "source/common_dht_read.c", "source/Raspberry_Pi/pi_dht_read.c", "source/Raspberry_Pi/pi_mmio.c"],
|
||
|
libraries=['rt'],
|
||
|
extra_compile_args=['-std=gnu99']))
|
||
|
elif pi_version == 2:
|
||
|
extensions.append(Extension("Adafruit_DHT.Raspberry_Pi_2_Driver",
|
||
|
["source/_Raspberry_Pi_2_Driver.c", "source/common_dht_read.c", "source/Raspberry_Pi_2/pi_2_dht_read.c", "source/Raspberry_Pi_2/pi_2_mmio.c"],
|
||
|
libraries=['rt'],
|
||
|
extra_compile_args=['-std=gnu99']))
|
||
|
elif pi_version == 3:
|
||
|
extensions.append(Extension("Adafruit_DHT.Raspberry_Pi_2_Driver",
|
||
|
["source/_Raspberry_Pi_2_Driver.c", "source/common_dht_read.c", "source/Raspberry_Pi_2/pi_2_dht_read.c", "source/Raspberry_Pi_2/pi_2_mmio.c"],
|
||
|
libraries=['rt'],
|
||
|
extra_compile_args=['-std=gnu99']))
|
||
|
else:
|
||
|
raise RuntimeError('Detected Pi version that has no appropriate driver available.')
|
||
|
elif platform == platform_detect.BEAGLEBONE_BLACK:
|
||
|
extensions.append(Extension("Adafruit_DHT.Beaglebone_Black_Driver",
|
||
|
["source/_Beaglebone_Black_Driver.c", "source/common_dht_read.c", "source/Beaglebone_Black/bbb_dht_read.c", "source/Beaglebone_Black/bbb_mmio.c"],
|
||
|
libraries=['rt'],
|
||
|
extra_compile_args=['-std=gnu99']))
|
||
|
elif platform == 'TEST':
|
||
|
extensions.append(Extension("Adafruit_DHT.Test_Driver",
|
||
|
["source/_Test_Driver.c", "source/Test/test_dht_read.c"],
|
||
|
extra_compile_args=['-std=gnu99']))
|
||
|
else:
|
||
|
print('Could not detect if running on the Raspberry Pi or Beaglebone Black. If this failure is unexpected, you can run again with --force-pi or --force-bbb parameter to force using the Raspberry Pi or Beaglebone Black respectively.')
|
||
|
sys.exit(1)
|
||
|
|
||
|
classifiers = ['Development Status :: 4 - Beta',
|
||
|
'Operating System :: POSIX :: Linux',
|
||
|
'License :: OSI Approved :: MIT License',
|
||
|
'Intended Audience :: Developers',
|
||
|
'Programming Language :: Python :: 2.7',
|
||
|
'Programming Language :: Python :: 3',
|
||
|
'Topic :: Software Development',
|
||
|
'Topic :: System :: Hardware']
|
||
|
|
||
|
# Call setuptools setup function to install package.
|
||
|
setup(name = 'Adafruit_DHT',
|
||
|
version = '1.4.0',
|
||
|
author = 'Tony DiCola',
|
||
|
author_email = 'tdicola@adafruit.com',
|
||
|
description = 'Library to get readings from the DHT11, DHT22, and AM2302 humidity and temperature sensors on a Raspberry Pi or Beaglebone Black.',
|
||
|
long_description = read('README.md'),
|
||
|
license = 'MIT',
|
||
|
classifiers = classifiers,
|
||
|
url = 'https://github.com/adafruit/Adafruit_Python_DHT/',
|
||
|
packages = find_packages(),
|
||
|
ext_modules = extensions)
|