Convert CRLF to LF
This commit is contained in:
parent
4065f7dc40
commit
4ff3cfd56c
5 changed files with 1276 additions and 1276 deletions
|
@ -1,3 +1,3 @@
|
||||||
include telldus.c
|
include telldus.c
|
||||||
include telldus-core.h
|
include telldus-core.h
|
||||||
recursive-include example/*
|
recursive-include example/*
|
||||||
|
|
|
@ -1,47 +1,47 @@
|
||||||
|
|
||||||
import telldus
|
import telldus
|
||||||
import time
|
import time
|
||||||
|
|
||||||
telldus.tdInit()
|
telldus.tdInit()
|
||||||
devices = telldus.tdGetNumberOfDevices()
|
devices = telldus.tdGetNumberOfDevices()
|
||||||
print "Devices: %d\n" % devices
|
print "Devices: %d\n" % devices
|
||||||
|
|
||||||
allMethods = telldus.TELLSTICK_TURNON | telldus.TELLSTICK_TURNOFF | telldus.TELLSTICK_BELL | telldus.TELLSTICK_DIM
|
allMethods = telldus.TELLSTICK_TURNON | telldus.TELLSTICK_TURNOFF | telldus.TELLSTICK_BELL | telldus.TELLSTICK_DIM
|
||||||
|
|
||||||
for i in xrange(devices):
|
for i in xrange(devices):
|
||||||
deviceid = telldus.tdGetDeviceId(i)
|
deviceid = telldus.tdGetDeviceId(i)
|
||||||
|
|
||||||
if deviceid:
|
if deviceid:
|
||||||
name = telldus.tdGetName(deviceid)
|
name = telldus.tdGetName(deviceid)
|
||||||
|
|
||||||
print "%s - %s\n" % (deviceid, name)
|
print "%s - %s\n" % (deviceid, name)
|
||||||
|
|
||||||
methods = telldus.tdMethods(deviceid, allMethods)
|
methods = telldus.tdMethods(deviceid, allMethods)
|
||||||
|
|
||||||
if methods & telldus.TELLSTICK_TURNON:
|
if methods & telldus.TELLSTICK_TURNON:
|
||||||
print " * TurnOn\n"
|
print " * TurnOn\n"
|
||||||
telldus.tdTurnOn(deviceid)
|
telldus.tdTurnOn(deviceid)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
if methods & telldus.TELLSTICK_TURNOFF:
|
if methods & telldus.TELLSTICK_TURNOFF:
|
||||||
print " * TurnOff\n"
|
print " * TurnOff\n"
|
||||||
telldus.tdTurnOff(deviceid)
|
telldus.tdTurnOff(deviceid)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
if methods & telldus.TELLSTICK_BELL:
|
if methods & telldus.TELLSTICK_BELL:
|
||||||
print " * Bell\n"
|
print " * Bell\n"
|
||||||
telldus.tdBell(deviceid)
|
telldus.tdBell(deviceid)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
if methods & telldus.TELLSTICK_TOGGLE:
|
if methods & telldus.TELLSTICK_TOGGLE:
|
||||||
print " * Toggle\n"
|
print " * Toggle\n"
|
||||||
|
|
||||||
if methods & telldus.TELLSTICK_DIM:
|
if methods & telldus.TELLSTICK_DIM:
|
||||||
print " * Dim\n"
|
print " * Dim\n"
|
||||||
telldus.tdDim(deviceid, 128)
|
telldus.tdDim(deviceid, 128)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
telldus.tdClose()
|
telldus.tdClose()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,38 +1,38 @@
|
||||||
import threading
|
import threading
|
||||||
import telldus
|
import telldus
|
||||||
import time
|
import time
|
||||||
|
|
||||||
telldus.tdInit()
|
telldus.tdInit()
|
||||||
|
|
||||||
def turnOn():
|
def turnOn():
|
||||||
print "turning on"
|
print "turning on"
|
||||||
telldus.tdTurnOn(1)
|
telldus.tdTurnOn(1)
|
||||||
|
|
||||||
def turnOff():
|
def turnOff():
|
||||||
print "turning off"
|
print "turning off"
|
||||||
telldus.tdTurnOff(1)
|
telldus.tdTurnOff(1)
|
||||||
|
|
||||||
def callback(deviceId, method, value, callbackId):
|
def callback(deviceId, method, value, callbackId):
|
||||||
print "callback"
|
print "callback"
|
||||||
print "DeviceId: %i Method: %i Value: %s" % (deviceId, method, value)
|
print "DeviceId: %i Method: %i Value: %s" % (deviceId, method, value)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
#function to be called when device event occurs, even for unregistered devices
|
#function to be called when device event occurs, even for unregistered devices
|
||||||
def rawcallback(data, controllerId, callbackId):
|
def rawcallback(data, controllerId, callbackId):
|
||||||
print "raw callback"
|
print "raw callback"
|
||||||
print "Data: %s ControllerId: %i" % (data, controllerId)
|
print "Data: %s ControllerId: %i" % (data, controllerId)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
callbackid = telldus.tdRegisterDeviceEvent(callback)
|
callbackid = telldus.tdRegisterDeviceEvent(callback)
|
||||||
rawcallbackid = telldus.tdRegisterRawDeviceEvent(rawcallback)
|
rawcallbackid = telldus.tdRegisterRawDeviceEvent(rawcallback)
|
||||||
|
|
||||||
print callbackid, rawcallbackid
|
print callbackid, rawcallbackid
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while(1):
|
while(1):
|
||||||
time.sleep(0.5) #don't exit
|
time.sleep(0.5) #don't exit
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print "Exiting"
|
print "Exiting"
|
||||||
telldus.tdUnregisterCallback(callbackid)
|
telldus.tdUnregisterCallback(callbackid)
|
||||||
telldus.tdUnregisterCallback(rawcallbackid)
|
telldus.tdUnregisterCallback(rawcallbackid)
|
||||||
telldus.tdClose()
|
telldus.tdClose()
|
||||||
|
|
|
@ -1,345 +1,345 @@
|
||||||
import sys
|
import sys
|
||||||
from distutils.core import setup, Extension
|
from distutils.core import setup, Extension
|
||||||
|
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|
||||||
PLATFORM_IS_WINDOWS = sys.platform.lower().startswith('win')
|
PLATFORM_IS_WINDOWS = sys.platform.lower().startswith('win')
|
||||||
|
|
||||||
if PLATFORM_IS_WINDOWS:
|
if PLATFORM_IS_WINDOWS:
|
||||||
|
|
||||||
__doc__="""This is a distutils setup-script for the telldus extension
|
__doc__="""This is a distutils setup-script for the telldus extension
|
||||||
|
|
||||||
To build the telldus extensions, simply execute:
|
To build the telldus extensions, simply execute:
|
||||||
python setup.py -q build
|
python setup.py -q build
|
||||||
or
|
or
|
||||||
python setup.py -q install
|
python setup.py -q install
|
||||||
to build and install into your current Python installation.
|
to build and install into your current Python installation.
|
||||||
|
|
||||||
These extensions require a number of libraries to build, some of which may
|
These extensions require a number of libraries to build, some of which may
|
||||||
require you to install special SDKs or toolkits. This script will attempt
|
require you to install special SDKs or toolkits. This script will attempt
|
||||||
to build as many as it can, and at the end of the build will report any
|
to build as many as it can, and at the end of the build will report any
|
||||||
extension modules that could not be built and why.
|
extension modules that could not be built and why.
|
||||||
|
|
||||||
This has got complicated due to the various different versions of
|
This has got complicated due to the various different versions of
|
||||||
Visual Studio used - some VS versions are not compatible with some SDK
|
Visual Studio used - some VS versions are not compatible with some SDK
|
||||||
versions. Below are the Windows SDK versions required (and the URL - although
|
versions. Below are the Windows SDK versions required (and the URL - although
|
||||||
these are subject to being changed by MS at any time:)
|
these are subject to being changed by MS at any time:)
|
||||||
|
|
||||||
Python 2.6+:
|
Python 2.6+:
|
||||||
|
|
||||||
Build using Microsoft Visual Studio 2008 Express Edition:
|
Build using Microsoft Visual Studio 2008 Express Edition:
|
||||||
http://www.microsoft.com/en-us/download/details.aspx?id=6506
|
http://www.microsoft.com/en-us/download/details.aspx?id=6506
|
||||||
http://jenshuebel.wordpress.com/2009/02/12/visual-c-2008-express-edition-and-64-bit-targets/
|
http://jenshuebel.wordpress.com/2009/02/12/visual-c-2008-express-edition-and-64-bit-targets/
|
||||||
http://www.cppblog.com/Files/xcpp/VCE64BIT_WIN7SDK.zip
|
http://www.cppblog.com/Files/xcpp/VCE64BIT_WIN7SDK.zip
|
||||||
|
|
||||||
For 32bit build:
|
For 32bit build:
|
||||||
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5
|
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5
|
||||||
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b
|
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b
|
||||||
Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvars32.bat to
|
Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvars32.bat to
|
||||||
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
|
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
|
||||||
|
|
||||||
For 64bit build:
|
For 64bit build:
|
||||||
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO) GRMSDKX_EN_DVD.iso
|
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO) GRMSDKX_EN_DVD.iso
|
||||||
http://www.microsoft.com/en-us/download/details.aspx?id=18950
|
http://www.microsoft.com/en-us/download/details.aspx?id=18950
|
||||||
Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvars64.bat to
|
Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvars64.bat to
|
||||||
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
|
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
|
||||||
|
|
||||||
Python 2.3->2.5:
|
Python 2.3->2.5:
|
||||||
|
|
||||||
Microsoft Windows Software Development Kit Update for Windows Vista (version 6.0)
|
Microsoft Windows Software Development Kit Update for Windows Vista (version 6.0)
|
||||||
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065
|
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065
|
||||||
** If you want to build Python 2.3, be sure to install the SDK compilers
|
** If you want to build Python 2.3, be sure to install the SDK compilers
|
||||||
too - although we don't use them, this setup option installs some .lib
|
too - although we don't use them, this setup option installs some .lib
|
||||||
files we do need.
|
files we do need.
|
||||||
**
|
**
|
||||||
|
|
||||||
If you multiple SDK versions on a single machine, set the MSSDK environment
|
If you multiple SDK versions on a single machine, set the MSSDK environment
|
||||||
variable to point at the one you want to use. Note that using the SDK for
|
variable to point at the one you want to use. Note that using the SDK for
|
||||||
a particular platform (eg, Windows 7) doesn't force you to use that OS as your
|
a particular platform (eg, Windows 7) doesn't force you to use that OS as your
|
||||||
build environment. If the links above don't work, use google to find them.
|
build environment. If the links above don't work, use google to find them.
|
||||||
|
|
||||||
Building:
|
Building:
|
||||||
---------
|
---------
|
||||||
|
|
||||||
To install the telldus extension, execute:
|
To install the telldus extension, execute:
|
||||||
python setup.py -q install
|
python setup.py -q install
|
||||||
|
|
||||||
This will install the built extensions into your site-packages directory,
|
This will install the built extensions into your site-packages directory,
|
||||||
create an appropriate .pth file, and should leave everything ready to use.
|
create an appropriate .pth file, and should leave everything ready to use.
|
||||||
There is no need to modify the registry.
|
There is no need to modify the registry.
|
||||||
|
|
||||||
To build or install debug (_d) versions of these extensions, ensure you have
|
To build or install debug (_d) versions of these extensions, ensure you have
|
||||||
built or installed a debug version of Python itself, then pass the "--debug"
|
built or installed a debug version of Python itself, then pass the "--debug"
|
||||||
flag to the build command - eg:
|
flag to the build command - eg:
|
||||||
python setup.py -q build --debug
|
python setup.py -q build --debug
|
||||||
or to build and install a debug version:
|
or to build and install a debug version:
|
||||||
python setup.py -q build --debug install
|
python setup.py -q build --debug install
|
||||||
|
|
||||||
To build 64bit versions of this:
|
To build 64bit versions of this:
|
||||||
|
|
||||||
* py2.5 and earlier - sorry, I've given up in disgust. Using VS2003 with
|
* py2.5 and earlier - sorry, I've given up in disgust. Using VS2003 with
|
||||||
the Vista SDK is just too painful to make work, and VS2005 is not used for
|
the Vista SDK is just too painful to make work, and VS2005 is not used for
|
||||||
any released versions of Python. See revision 1.69 of this file for the
|
any released versions of Python. See revision 1.69 of this file for the
|
||||||
last version that attempted to support and document this process.
|
last version that attempted to support and document this process.
|
||||||
|
|
||||||
* 2.6 and later: On a 64bit OS, just build as you would on a 32bit platform.
|
* 2.6 and later: On a 64bit OS, just build as you would on a 32bit platform.
|
||||||
On a 32bit platform (ie, to cross-compile), you must use VS2008 to
|
On a 32bit platform (ie, to cross-compile), you must use VS2008 to
|
||||||
cross-compile Python itself. Note that by default, the 64bit tools are not
|
cross-compile Python itself. Note that by default, the 64bit tools are not
|
||||||
installed with VS2008, so you may need to adjust your VS2008 setup (see "For 64bit build"). Then
|
installed with VS2008, so you may need to adjust your VS2008 setup (see "For 64bit build"). Then
|
||||||
use:
|
use:
|
||||||
vcs
|
vcs
|
||||||
setup.py build --plat-name=win-amd64
|
setup.py build --plat-name=win-amd64
|
||||||
|
|
||||||
see the distutils cross-compilation documentation for more details.
|
see the distutils cross-compilation documentation for more details.
|
||||||
"""
|
"""
|
||||||
# Originally by Thomas Heller, started in 2000 or so.
|
# Originally by Thomas Heller, started in 2000 or so.
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
is_py3k = sys.version_info > (3,) # get this out of the way early on...
|
is_py3k = sys.version_info > (3,) # get this out of the way early on...
|
||||||
# We have special handling for _winreg so our setup3.py script can avoid
|
# We have special handling for _winreg so our setup3.py script can avoid
|
||||||
# using the 'imports' fixer and therefore start much faster...
|
# using the 'imports' fixer and therefore start much faster...
|
||||||
if is_py3k:
|
if is_py3k:
|
||||||
import winreg as _winreg
|
import winreg as _winreg
|
||||||
else:
|
else:
|
||||||
import _winreg
|
import _winreg
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from distutils import log
|
from distutils import log
|
||||||
except ImportError:
|
except ImportError:
|
||||||
class Log:
|
class Log:
|
||||||
def debug(self, msg, *args):
|
def debug(self, msg, *args):
|
||||||
print msg % args
|
print msg % args
|
||||||
def info(self, msg, *args):
|
def info(self, msg, *args):
|
||||||
print msg % args
|
print msg % args
|
||||||
log = Log()
|
log = Log()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
this_file = __file__
|
this_file = __file__
|
||||||
except NameError:
|
except NameError:
|
||||||
this_file = sys.argv[0]
|
this_file = sys.argv[0]
|
||||||
|
|
||||||
this_file = os.path.abspath(this_file)
|
this_file = os.path.abspath(this_file)
|
||||||
# We get upset if the cwd is not our source dir, but it is a PITA to
|
# We get upset if the cwd is not our source dir, but it is a PITA to
|
||||||
# insist people manually CD there first!
|
# insist people manually CD there first!
|
||||||
if os.path.dirname(this_file):
|
if os.path.dirname(this_file):
|
||||||
os.chdir(os.path.dirname(this_file))
|
os.chdir(os.path.dirname(this_file))
|
||||||
|
|
||||||
|
|
||||||
# We need to know the platform SDK dir before we can list the extensions.
|
# We need to know the platform SDK dir before we can list the extensions.
|
||||||
def find_platform_sdk_dir():
|
def find_platform_sdk_dir():
|
||||||
# Finding the Platform SDK install dir is a treat. There can be some
|
# Finding the Platform SDK install dir is a treat. There can be some
|
||||||
# dead ends so we only consider the job done if we find the "windows.h"
|
# dead ends so we only consider the job done if we find the "windows.h"
|
||||||
# landmark.
|
# landmark.
|
||||||
landmark = "include\\windows.h"
|
landmark = "include\\windows.h"
|
||||||
# 1. The use might have their current environment setup for the
|
# 1. The use might have their current environment setup for the
|
||||||
# SDK, in which case the "MSSdk" env var is set.
|
# SDK, in which case the "MSSdk" env var is set.
|
||||||
sdkdir = os.environ.get("MSSdk")
|
sdkdir = os.environ.get("MSSdk")
|
||||||
if sdkdir:
|
if sdkdir:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print "PSDK: try %%MSSdk%%: '%s'" % sdkdir
|
print "PSDK: try %%MSSdk%%: '%s'" % sdkdir
|
||||||
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
||||||
return sdkdir
|
return sdkdir
|
||||||
# 2. The "Install Dir" value in the
|
# 2. The "Install Dir" value in the
|
||||||
# HKLM\Software\Microsoft\MicrosoftSDK\Directories registry key
|
# HKLM\Software\Microsoft\MicrosoftSDK\Directories registry key
|
||||||
# sometimes points to the right thing. However, after upgrading to
|
# sometimes points to the right thing. However, after upgrading to
|
||||||
# the "Platform SDK for Windows Server 2003 SP1" this is dead end.
|
# the "Platform SDK for Windows Server 2003 SP1" this is dead end.
|
||||||
try:
|
try:
|
||||||
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
|
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
|
||||||
r"Software\Microsoft\MicrosoftSDK\Directories")
|
r"Software\Microsoft\MicrosoftSDK\Directories")
|
||||||
sdkdir, ignore = _winreg.QueryValueEx(key, "Install Dir")
|
sdkdir, ignore = _winreg.QueryValueEx(key, "Install Dir")
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print r"PSDK: try 'HKLM\Software\Microsoft\MicrosoftSDK"\
|
print r"PSDK: try 'HKLM\Software\Microsoft\MicrosoftSDK"\
|
||||||
"\Directories\Install Dir': '%s'" % sdkdir
|
"\Directories\Install Dir': '%s'" % sdkdir
|
||||||
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
||||||
return sdkdir
|
return sdkdir
|
||||||
# 3. Each installed SDK (not just the platform SDK) seems to have GUID
|
# 3. Each installed SDK (not just the platform SDK) seems to have GUID
|
||||||
# subkey of HKLM\Software\Microsoft\MicrosoftSDK\InstalledSDKs and
|
# subkey of HKLM\Software\Microsoft\MicrosoftSDK\InstalledSDKs and
|
||||||
# it *looks* like the latest installed Platform SDK will be the
|
# it *looks* like the latest installed Platform SDK will be the
|
||||||
# only one with an "Install Dir" sub-value.
|
# only one with an "Install Dir" sub-value.
|
||||||
try:
|
try:
|
||||||
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
|
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
|
||||||
r"Software\Microsoft\MicrosoftSDK\InstalledSDKs")
|
r"Software\Microsoft\MicrosoftSDK\InstalledSDKs")
|
||||||
i = 0
|
i = 0
|
||||||
while True:
|
while True:
|
||||||
guid = _winreg.EnumKey(key, i)
|
guid = _winreg.EnumKey(key, i)
|
||||||
guidkey = _winreg.OpenKey(key, guid)
|
guidkey = _winreg.OpenKey(key, guid)
|
||||||
try:
|
try:
|
||||||
sdkdir, ignore = _winreg.QueryValueEx(guidkey, "Install Dir")
|
sdkdir, ignore = _winreg.QueryValueEx(guidkey, "Install Dir")
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print r"PSDK: try 'HKLM\Software\Microsoft\MicrosoftSDK"\
|
print r"PSDK: try 'HKLM\Software\Microsoft\MicrosoftSDK"\
|
||||||
"\InstallSDKs\%s\Install Dir': '%s'"\
|
"\InstallSDKs\%s\Install Dir': '%s'"\
|
||||||
% (guid, sdkdir)
|
% (guid, sdkdir)
|
||||||
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
||||||
return sdkdir
|
return sdkdir
|
||||||
i += 1
|
i += 1
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
pass
|
pass
|
||||||
# 4. Vista's SDK
|
# 4. Vista's SDK
|
||||||
try:
|
try:
|
||||||
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
|
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
|
||||||
r"Software\Microsoft\Microsoft SDKs\Windows")
|
r"Software\Microsoft\Microsoft SDKs\Windows")
|
||||||
sdkdir, ignore = _winreg.QueryValueEx(key, "CurrentInstallFolder")
|
sdkdir, ignore = _winreg.QueryValueEx(key, "CurrentInstallFolder")
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print r"PSDK: try 'HKLM\Software\Microsoft\MicrosoftSDKs"\
|
print r"PSDK: try 'HKLM\Software\Microsoft\MicrosoftSDKs"\
|
||||||
"\Windows\CurrentInstallFolder': '%s'" % sdkdir
|
"\Windows\CurrentInstallFolder': '%s'" % sdkdir
|
||||||
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
||||||
return sdkdir
|
return sdkdir
|
||||||
|
|
||||||
# 5. Failing this just try a few well-known default install locations.
|
# 5. Failing this just try a few well-known default install locations.
|
||||||
progfiles = os.environ.get("ProgramFiles", r"C:\Program Files")
|
progfiles = os.environ.get("ProgramFiles", r"C:\Program Files")
|
||||||
defaultlocs = [
|
defaultlocs = [
|
||||||
os.path.join(progfiles, "Microsoft Platform SDK"),
|
os.path.join(progfiles, "Microsoft Platform SDK"),
|
||||||
os.path.join(progfiles, "Microsoft SDK"),
|
os.path.join(progfiles, "Microsoft SDK"),
|
||||||
]
|
]
|
||||||
for sdkdir in defaultlocs:
|
for sdkdir in defaultlocs:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print "PSDK: try default location: '%s'" % sdkdir
|
print "PSDK: try default location: '%s'" % sdkdir
|
||||||
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
if os.path.isfile(os.path.join(sdkdir, landmark)):
|
||||||
return sdkdir
|
return sdkdir
|
||||||
|
|
||||||
|
|
||||||
# Some nasty hacks to prevent most of our extensions using a manifest, as
|
# Some nasty hacks to prevent most of our extensions using a manifest, as
|
||||||
# the manifest - even without a reference to the CRT assembly - is enough
|
# the manifest - even without a reference to the CRT assembly - is enough
|
||||||
# to prevent the extension from loading. For more details, see
|
# to prevent the extension from loading. For more details, see
|
||||||
# http://bugs.python.org/issue7833 - that issue has a patch, but it is
|
# http://bugs.python.org/issue7833 - that issue has a patch, but it is
|
||||||
# languishing and will probably never be fixed for Python 2.6...
|
# languishing and will probably never be fixed for Python 2.6...
|
||||||
if sys.version_info > (2,6):
|
if sys.version_info > (2,6):
|
||||||
from distutils.spawn import spawn
|
from distutils.spawn import spawn
|
||||||
from distutils.msvc9compiler import MSVCCompiler
|
from distutils.msvc9compiler import MSVCCompiler
|
||||||
MSVCCompiler._orig_spawn = MSVCCompiler.spawn
|
MSVCCompiler._orig_spawn = MSVCCompiler.spawn
|
||||||
MSVCCompiler._orig_link = MSVCCompiler.link
|
MSVCCompiler._orig_link = MSVCCompiler.link
|
||||||
|
|
||||||
# We need to override this method for versions where issue7833 *has* landed
|
# We need to override this method for versions where issue7833 *has* landed
|
||||||
# (ie, 2.7 and 3.2+)
|
# (ie, 2.7 and 3.2+)
|
||||||
def manifest_get_embed_info(self, target_desc, ld_args):
|
def manifest_get_embed_info(self, target_desc, ld_args):
|
||||||
_want_assembly_kept = getattr(self, '_want_assembly_kept', False)
|
_want_assembly_kept = getattr(self, '_want_assembly_kept', False)
|
||||||
if not _want_assembly_kept:
|
if not _want_assembly_kept:
|
||||||
return None
|
return None
|
||||||
for arg in ld_args:
|
for arg in ld_args:
|
||||||
if arg.startswith("/MANIFESTFILE:"):
|
if arg.startswith("/MANIFESTFILE:"):
|
||||||
orig_manifest = arg.split(":", 1)[1]
|
orig_manifest = arg.split(":", 1)[1]
|
||||||
if target_desc==self.EXECUTABLE:
|
if target_desc==self.EXECUTABLE:
|
||||||
rid = 1
|
rid = 1
|
||||||
else:
|
else:
|
||||||
rid = 2
|
rid = 2
|
||||||
return orig_manifest, rid
|
return orig_manifest, rid
|
||||||
return None
|
return None
|
||||||
# always monkeypatch it in even though it will only be called in 2.7
|
# always monkeypatch it in even though it will only be called in 2.7
|
||||||
# and 3.2+.
|
# and 3.2+.
|
||||||
MSVCCompiler.manifest_get_embed_info = manifest_get_embed_info
|
MSVCCompiler.manifest_get_embed_info = manifest_get_embed_info
|
||||||
|
|
||||||
def monkeypatched_spawn(self, cmd):
|
def monkeypatched_spawn(self, cmd):
|
||||||
is_link = cmd[0].endswith("link.exe") or cmd[0].endswith('"link.exe"')
|
is_link = cmd[0].endswith("link.exe") or cmd[0].endswith('"link.exe"')
|
||||||
is_mt = cmd[0].endswith("mt.exe") or cmd[0].endswith('"mt.exe"')
|
is_mt = cmd[0].endswith("mt.exe") or cmd[0].endswith('"mt.exe"')
|
||||||
_want_assembly_kept = getattr(self, '_want_assembly_kept', False)
|
_want_assembly_kept = getattr(self, '_want_assembly_kept', False)
|
||||||
if not _want_assembly_kept and is_mt:
|
if not _want_assembly_kept and is_mt:
|
||||||
# We don't want mt.exe run...
|
# We don't want mt.exe run...
|
||||||
return
|
return
|
||||||
if not _want_assembly_kept and is_link:
|
if not _want_assembly_kept and is_link:
|
||||||
# remove /MANIFESTFILE:... and add MANIFEST:NO
|
# remove /MANIFESTFILE:... and add MANIFEST:NO
|
||||||
# (but note that for winxpgui, which specifies a manifest via a
|
# (but note that for winxpgui, which specifies a manifest via a
|
||||||
# .rc file, this is ignored by the linker - the manifest specified
|
# .rc file, this is ignored by the linker - the manifest specified
|
||||||
# in the .rc file is still added)
|
# in the .rc file is still added)
|
||||||
for i in range(len(cmd)):
|
for i in range(len(cmd)):
|
||||||
if cmd[i].startswith("/MANIFESTFILE:"):
|
if cmd[i].startswith("/MANIFESTFILE:"):
|
||||||
cmd[i] = "/MANIFEST:NO"
|
cmd[i] = "/MANIFEST:NO"
|
||||||
break
|
break
|
||||||
if _want_assembly_kept and is_mt:
|
if _want_assembly_kept and is_mt:
|
||||||
# We want mt.exe run with the original manifest
|
# We want mt.exe run with the original manifest
|
||||||
for i in range(len(cmd)):
|
for i in range(len(cmd)):
|
||||||
if cmd[i] == "-manifest":
|
if cmd[i] == "-manifest":
|
||||||
cmd[i+1] = cmd[i+1] + ".orig"
|
cmd[i+1] = cmd[i+1] + ".orig"
|
||||||
break
|
break
|
||||||
self._orig_spawn(cmd)
|
self._orig_spawn(cmd)
|
||||||
if _want_assembly_kept and is_link:
|
if _want_assembly_kept and is_link:
|
||||||
# We want a copy of the original manifest so we can use it later.
|
# We want a copy of the original manifest so we can use it later.
|
||||||
for i in range(len(cmd)):
|
for i in range(len(cmd)):
|
||||||
if cmd[i].startswith("/MANIFESTFILE:"):
|
if cmd[i].startswith("/MANIFESTFILE:"):
|
||||||
mfname = cmd[i][14:]
|
mfname = cmd[i][14:]
|
||||||
shutil.copyfile(mfname, mfname + ".orig")
|
shutil.copyfile(mfname, mfname + ".orig")
|
||||||
break
|
break
|
||||||
|
|
||||||
def monkeypatched_link(self, target_desc, objects, output_filename, *args, **kw):
|
def monkeypatched_link(self, target_desc, objects, output_filename, *args, **kw):
|
||||||
# no manifests for 3.3+
|
# no manifests for 3.3+
|
||||||
self._want_assembly_kept = sys.version_info < (3,3) and \
|
self._want_assembly_kept = sys.version_info < (3,3) and \
|
||||||
(os.path.basename(output_filename).startswith("PyISAPI_loader.dll") or \
|
(os.path.basename(output_filename).startswith("PyISAPI_loader.dll") or \
|
||||||
os.path.basename(output_filename).startswith("perfmondata.dll") or \
|
os.path.basename(output_filename).startswith("perfmondata.dll") or \
|
||||||
os.path.basename(output_filename).startswith("win32ui.pyd") or \
|
os.path.basename(output_filename).startswith("win32ui.pyd") or \
|
||||||
target_desc==self.EXECUTABLE)
|
target_desc==self.EXECUTABLE)
|
||||||
try:
|
try:
|
||||||
return self._orig_link(target_desc, objects, output_filename, *args, **kw)
|
return self._orig_link(target_desc, objects, output_filename, *args, **kw)
|
||||||
finally:
|
finally:
|
||||||
delattr(self, '_want_assembly_kept')
|
delattr(self, '_want_assembly_kept')
|
||||||
MSVCCompiler.spawn = monkeypatched_spawn
|
MSVCCompiler.spawn = monkeypatched_spawn
|
||||||
MSVCCompiler.link = monkeypatched_link
|
MSVCCompiler.link = monkeypatched_link
|
||||||
|
|
||||||
def find_telldus_dev_dir():
|
def find_telldus_dev_dir():
|
||||||
landmark = "telldus-core.h"
|
landmark = "telldus-core.h"
|
||||||
dev_dir = os.environ.get("TELLDUS_DEVDIR")
|
dev_dir = os.environ.get("TELLDUS_DEVDIR")
|
||||||
if dev_dir:
|
if dev_dir:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print "Telldus dev dir:" % dev_dir
|
print "Telldus dev dir:" % dev_dir
|
||||||
if os.path.isfile(os.path.join(dev_dir, landmark)):
|
if os.path.isfile(os.path.join(dev_dir, landmark)):
|
||||||
return dev_dir
|
return dev_dir
|
||||||
|
|
||||||
progfiles = os.environ.get("ProgramFiles", r"C:\Program Files")
|
progfiles = os.environ.get("ProgramFiles", r"C:\Program Files")
|
||||||
defaultlocs = [
|
defaultlocs = [
|
||||||
os.path.join(progfiles + ' (x86)', "Telldus", "Development"),
|
os.path.join(progfiles + ' (x86)', "Telldus", "Development"),
|
||||||
os.path.join(progfiles, "Telldus", "Development"),
|
os.path.join(progfiles, "Telldus", "Development"),
|
||||||
]
|
]
|
||||||
for dev_dir in defaultlocs:
|
for dev_dir in defaultlocs:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print "Telldus dev dir: '%s'" % dev_dir
|
print "Telldus dev dir: '%s'" % dev_dir
|
||||||
if os.path.isfile(os.path.join(dev_dir, landmark)):
|
if os.path.isfile(os.path.join(dev_dir, landmark)):
|
||||||
return dev_dir
|
return dev_dir
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print "Telldus dev dir not found, make sure dev code is installed. Or set TELLDUS_DEVDIR."
|
print "Telldus dev dir not found, make sure dev code is installed. Or set TELLDUS_DEVDIR."
|
||||||
|
|
||||||
sdk_dir = find_platform_sdk_dir()
|
sdk_dir = find_platform_sdk_dir()
|
||||||
sdk_include_dir = os.path.join(sdk_dir, 'Include')
|
sdk_include_dir = os.path.join(sdk_dir, 'Include')
|
||||||
|
|
||||||
telldus_dev_dir = find_telldus_dev_dir()
|
telldus_dev_dir = find_telldus_dev_dir()
|
||||||
telldus_platform = os.environ.get("TELLDUS_PLATFORM", 'x86_64')
|
telldus_platform = os.environ.get("TELLDUS_PLATFORM", 'x86_64')
|
||||||
telldus_library_dir = os.path.join(telldus_dev_dir, telldus_platform)
|
telldus_library_dir = os.path.join(telldus_dev_dir, telldus_platform)
|
||||||
|
|
||||||
include_dirs = [sdk_include_dir, telldus_dev_dir]
|
include_dirs = [sdk_include_dir, telldus_dev_dir]
|
||||||
library_dirs = [telldus_library_dir]
|
library_dirs = [telldus_library_dir]
|
||||||
libraries = ['python%i%i' % (sys.version_info[0], sys.version_info[1]) , 'TelldusCore']
|
libraries = ['python%i%i' % (sys.version_info[0], sys.version_info[1]) , 'TelldusCore']
|
||||||
define_macros = [('_WINDOWS', 1)]
|
define_macros = [('_WINDOWS', 1)]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
include_dirs = ['/usr/include', '/usr/local/include']
|
include_dirs = ['/usr/include', '/usr/local/include']
|
||||||
library_dirs = ['/usr/lib', '/usr/local/lib']
|
library_dirs = ['/usr/lib', '/usr/local/lib']
|
||||||
libraries = ['telldus-core']
|
libraries = ['telldus-core']
|
||||||
define_macros = []
|
define_macros = []
|
||||||
|
|
||||||
define_macros.extend([('DATA_LENGTH', 20), ('CALLBACK_LENGTH', 20)])
|
define_macros.extend([('DATA_LENGTH', 20), ('CALLBACK_LENGTH', 20)])
|
||||||
|
|
||||||
telldus = Extension(
|
telldus = Extension(
|
||||||
'telldus',
|
'telldus',
|
||||||
include_dirs = include_dirs,
|
include_dirs = include_dirs,
|
||||||
libraries = libraries,
|
libraries = libraries,
|
||||||
library_dirs = library_dirs,
|
library_dirs = library_dirs,
|
||||||
define_macros = define_macros,
|
define_macros = define_macros,
|
||||||
sources = ['telldus.c']
|
sources = ['telldus.c']
|
||||||
)
|
)
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name = 'telldus',
|
name = 'telldus',
|
||||||
version = '1.0',
|
version = '1.0',
|
||||||
description = 'Python bindings for telldus',
|
description = 'Python bindings for telldus',
|
||||||
author='Oyvind Saltvik',
|
author='Oyvind Saltvik',
|
||||||
author_email='oyvind.saltvik@gmail.com',
|
author_email='oyvind.saltvik@gmail.com',
|
||||||
url='http://github.com/fivethreeo/telldus/',
|
url='http://github.com/fivethreeo/telldus/',
|
||||||
ext_modules = [telldus]
|
ext_modules = [telldus]
|
||||||
)
|
)
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue