mirror of
https://github.com/python/cpython.git
synced 2025-07-19 01:05:26 +00:00
Break SSL support out of _socket module and place it into a new
helper module _ssl. The support for the RAND_* APIs in _ssl is now only enabled for OpenSSL 0.9.5 and up since they were added in that release. Note that socketmodule.* should really be renamed to _socket.* -- unfortunately, this seems to lose the CVS history of the file. Please review and test... I was only able to test the header file chaos in socketmodule.c/h on Linux. The test run through fine and compiles don't give errors or warnings. WARNING: This patch does *not* include changes to the various non-Unix build process files.
This commit is contained in:
parent
e4418609f7
commit
a5d2b4cb18
7 changed files with 747 additions and 577 deletions
43
setup.py
43
setup.py
|
@ -173,21 +173,26 @@ class PyBuildExt(build_ext):
|
|||
self.get_ext_filename(self.get_ext_fullname(ext.name)))
|
||||
try:
|
||||
imp.load_dynamic(ext.name, ext_filename)
|
||||
except ImportError:
|
||||
self.announce('WARNING: removing "%s" since importing it failed' %
|
||||
ext.name)
|
||||
assert not self.inplace
|
||||
fullname = self.get_ext_fullname(ext.name)
|
||||
ext_filename = os.path.join(self.build_lib,
|
||||
self.get_ext_filename(fullname))
|
||||
os.remove(ext_filename)
|
||||
except ImportError, why:
|
||||
|
||||
# XXX -- This relies on a Vile HACK in
|
||||
# distutils.command.build_ext.build_extension(). The
|
||||
# _built_objects attribute is stored there strictly for
|
||||
# use here.
|
||||
for filename in self._built_objects:
|
||||
os.remove(filename)
|
||||
if 1:
|
||||
self.announce('*** WARNING: removing "%s" since importing it'
|
||||
' failed: %s' % (ext.name, why))
|
||||
assert not self.inplace
|
||||
fullname = self.get_ext_fullname(ext.name)
|
||||
ext_filename = os.path.join(self.build_lib,
|
||||
self.get_ext_filename(fullname))
|
||||
os.remove(ext_filename)
|
||||
|
||||
# XXX -- This relies on a Vile HACK in
|
||||
# distutils.command.build_ext.build_extension(). The
|
||||
# _built_objects attribute is stored there strictly for
|
||||
# use here.
|
||||
for filename in self._built_objects:
|
||||
os.remove(filename)
|
||||
else:
|
||||
self.announce('*** WARNING: importing extension "%s" '
|
||||
'failed: %s' % (ext.name, why))
|
||||
|
||||
def get_platform (self):
|
||||
# Get value of sys.platform
|
||||
|
@ -359,7 +364,8 @@ class PyBuildExt(build_ext):
|
|||
exts.append( Extension('crypt', ['cryptmodule.c'], libraries=libs) )
|
||||
|
||||
# socket(2)
|
||||
# Detect SSL support for the socket module
|
||||
exts.append( Extension('_socket', ['socketmodule.c']) )
|
||||
# Detect SSL support for the socket module (via _ssl)
|
||||
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
|
||||
['/usr/local/ssl/include',
|
||||
'/usr/contrib/ssl/include/'
|
||||
|
@ -372,13 +378,10 @@ class PyBuildExt(build_ext):
|
|||
|
||||
if (ssl_incs is not None and
|
||||
ssl_libs is not None):
|
||||
exts.append( Extension('_socket', ['socketmodule.c'],
|
||||
exts.append( Extension('_ssl', ['_ssl.c'],
|
||||
include_dirs = ssl_incs,
|
||||
library_dirs = ssl_libs,
|
||||
libraries = ['ssl', 'crypto'],
|
||||
define_macros = [('USE_SSL',1)] ) )
|
||||
else:
|
||||
exts.append( Extension('_socket', ['socketmodule.c']) )
|
||||
libraries = ['ssl', 'crypto']) )
|
||||
|
||||
# Modules that provide persistent dictionary-like semantics. You will
|
||||
# probably want to arrange for at least one of them to be available on
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue