diff -ur src/configure upd/configure --- src/configure 2014-05-19 07:19:40.000000000 +0200 +++ upd/configure 2014-05-20 16:46:14.000000000 +0200 @@ -817,6 +817,9 @@ enable_big_digits with_computed_gotos with_ensurepip +with_ssl +with_ssl_includes +with_ssl_libs ' ac_precious_vars='build_alias host_alias @@ -1502,6 +1505,12 @@ default on supported compilers) --with(out)-ensurepip=[=upgrade] "install" or "upgrade" using bundled pip + --with-ssl=PATH specify an alternate OpenSSL installation directory + --with-ssl-includes=PATH + specify an alternate OpenSSL includes directory + defaults to SSL_PATH/include when --with-ssl set + --with-ssl-libs=PATH specify an alternate OpenSSL libraries directory + defaults to SSL_PATH/lib when --with-ssl set Some influential environment variables: MACHDEP name for machine-dependent library files @@ -9101,6 +9110,44 @@ $as_echo "default" >&6; } fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-ssl" >&5 +$as_echo_n "checking for --with-ssl... " >&6; } + +# Check whether --with-ssl was given. +if test "${with_ssl+set}" = set; then : + withval=$with_ssl; +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +$as_echo "$withval" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: default" >&5 +$as_echo "default" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-ssl-includes" >&5 +$as_echo_n "checking for --with-ssl-includes... " >&6; } + +# Check whether --with-ssl-includes was given. +if test "${with_ssl_includes+set}" = set; then : + withval=$with_ssl_includes; +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +$as_echo "$withval" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: default" >&5 +$as_echo "default" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-ssl-libs" >&5 +$as_echo_n "checking for --with-ssl-libs... " >&6; } + +# Check whether --with-ssl-libs was given. +if test "${with_ssl_libs+set}" = set; then : + withval=$with_ssl_libs; +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +$as_echo "$withval" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: default" >&5 +$as_echo "default" >&6; } +fi # Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5 diff -ur src/setup.py upd/setup.py --- src/setup.py 2014-05-19 07:19:40.000000000 +0200 +++ upd/setup.py 2014-05-20 16:42:55.000000000 +0200 @@ -162,6 +162,13 @@ log.info("WARNING: multiple copies of %s found"%module) return os.path.join(list[0], module) +def get_config_args_option( option ): + for arg in sysconfig.get_config_var("CONFIG_ARGS").split(): + params = arg.strip("'").split('=', 1) + if params[0] == option: + return '' if len(params) < 1 else params[1] + return None + class PyBuildExt(build_ext): def __init__(self, dist): @@ -750,22 +757,29 @@ exts.append( Extension('_socket', ['socketmodule.c'], depends = ['socketmodule.h']) ) # Detect SSL support for the socket module (via _ssl) - search_for_ssl_incs_in = [ - '/usr/local/ssl/include', - '/usr/contrib/ssl/include/' - ] - ssl_incs = find_file('openssl/ssl.h', inc_dirs, - search_for_ssl_incs_in - ) - if ssl_incs is not None: - krb5_h = find_file('krb5.h', inc_dirs, - ['/usr/kerberos/include']) - if krb5_h: - ssl_incs += krb5_h - ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs, - ['/usr/local/ssl/lib', - '/usr/contrib/ssl/lib/' - ] ) + with_ssl = get_config_args_option('--with-ssl') + with_ssl_include = get_config_args_option('--with-ssl-includes') + with_ssl_libs = get_config_args_option('--with-ssl-libs') + if with_ssl or (with_ssl_include and with_ssl_libs): + ssl_incs = [with_ssl_include or os.path.join(with_ssl, 'include')] + ssl_libs = [with_ssl_libs or os.path.join(with_ssl, 'lib')] + else: + search_for_ssl_incs_in = [ + '/usr/local/ssl/include', + '/usr/contrib/ssl/include/' + ] + ssl_incs = find_file('openssl/ssl.h', inc_dirs, + search_for_ssl_incs_in + ) + if ssl_incs is not None: + krb5_h = find_file('krb5.h', inc_dirs, + ['/usr/kerberos/include']) + if krb5_h: + ssl_incs += krb5_h + ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs, + ['/usr/local/ssl/lib', + '/usr/contrib/ssl/lib/' + ] ) if (ssl_incs is not None and ssl_libs is not None): @@ -782,9 +796,8 @@ openssl_ver_re = re.compile( '^\s*#\s*define\s+OPENSSL_VERSION_NUMBER\s+(0x[0-9a-fA-F]+)' ) - # look for the openssl version header on the compiler search path. - opensslv_h = find_file('openssl/opensslv.h', [], - inc_dirs + search_for_ssl_incs_in) + # look for the openssl version header of the selected openssl. + opensslv_h = find_file('openssl/opensslv.h', [], ssl_incs) if opensslv_h: name = os.path.join(opensslv_h[0], 'openssl/opensslv.h') if host_platform == 'darwin' and is_macosx_sdk_path(name):