Distribution and installation
The new module setup.py handles creation of package distributions in compressed formats, and performs installation of said distributions after decompression. Distribution strategy for PyDTLS is in the form of source distributions only. Building the OpenSSL library on Windows is non-trivial. Requirements include linking against the same version of the C runtime that is used by the Python interpreter, or else Microsoft redistributable installation may also need to be performed. For the convenience of Windows users, the distribution procedure includes creation of prebuilt versions of the OpenSSL library for both 32- and 64-bit versions of Windows. Despite containing binaries, these are still source distributions that are installed with "python setup.py install." A version of OpenSSL compiled with the MinGW toolchain is included. cygcrypto-1.0.0.dll and cygssl-1.0.0.dll contain symbols and can be debugged with gdb. All MinGW OpenSSL dll's link with msvcr90.dll. In order to avoid making installation a requirement after cloning, the package initializer looks for prebuilts of the currently executing platform and copies them into the dtls package directory before continuing module initialization. A distribution containing prebuilts for all platforms as well as those containing no prebuilts (appropriate for Linux) can be generated by issuing "python setup.py sdist --prebuilts."
This commit is contained in:
1 parent
8800ffa238
commit
62f30a1888
13 files changed
+167
No files matched your search
@@ -15,6 +15,29 @@ sockets.
|
||||
wrap_socket's parameters and their semantics have been maintained.
|
||||
"""
|
||||
|
||||
def _prep_bins():
|
||||
"""
|
||||
Support for running straight out of a cloned source directory instead
|
||||
of an installed distribution
|
||||
"""
|
||||
|
||||
from os import path
|
||||
from sys import platform, maxsize
|
||||
from shutil import copy
|
||||
bit_suffix = "-x86_64" if maxsize > 2**32 else "-x86"
|
||||
package_root = path.abspath(path.dirname(__file__))
|
||||
prebuilt_path = path.join(package_root, "prebuilt", platform + bit_suffix)
|
||||
config = {"MANIFEST_DIR": prebuilt_path}
|
||||
try:
|
||||
execfile(path.join(prebuilt_path, "manifest.pycfg"), config)
|
||||
except IOError:
|
||||
return # there are no prebuilts for this platform - nothing to do
|
||||
files = map(lambda x: path.join(prebuilt_path, x), config["FILES"])
|
||||
for prebuilt_file in files:
|
||||
copy(path.join(prebuilt_path, prebuilt_file), package_root)
|
||||
|
||||
_prep_bins() # prepare before module imports
|
||||
|
||||
from patch import do_patch
|
||||
from sslconnection import SSLConnection
|
||||
from demux import force_routing_demux, reset_default_demux
|
||||
Reference in new issue
Block a user