@@ -642,6 +642,10 @@ MODULE__TESTINTERNALCAPI_FALSE
642642MODULE__TESTINTERNALCAPI_TRUE
643643MODULE__TESTCAPI_FALSE
644644MODULE__TESTCAPI_TRUE
645+ MODULE__HASHLIB_FALSE
646+ MODULE__HASHLIB_TRUE
647+ MODULE__SSL_FALSE
648+ MODULE__SSL_TRUE
645649MODULE__LZMA_FALSE
646650MODULE__LZMA_TRUE
647651MODULE__BZ2_FALSE
@@ -20297,6 +20301,16 @@ rm -f core conftest.err conftest.$ac_objext \
2029720301
2029820302
2029920303# rpath to libssl and libcrypto
20304+ if test "x$GNULD" = xyes; then :
20305+
20306+ rpath_arg="-Wl,--enable-new-dtags,-rpath="
20307+
20308+ else
20309+
20310+ rpath_arg="-Wl,-rpath="
20311+
20312+ fi
20313+
2030020314{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-openssl-rpath" >&5
2030120315$as_echo_n "checking for --with-openssl-rpath... " >&6; }
2030220316
@@ -20310,12 +20324,26 @@ fi
2031020324
2031120325case $with_openssl_rpath in #(
2031220326 auto|yes) :
20313- OPENSSL_RPATH=auto ;; #(
20327+
20328+ OPENSSL_RPATH=auto
20329+ for arg in "$OPENSSL_LDFLAGS"; do
20330+ case $arg in #(
20331+ -L*) :
20332+ OPENSSL_LDFLAGS_RPATH="$OPENSSL_LDFLAGS_RPATH ${rpath_arg}$(echo $arg | cut -c3-)"
20333+ ;; #(
20334+ *) :
20335+ ;;
20336+ esac
20337+ done
20338+ ;; #(
2031420339 no) :
2031520340 OPENSSL_RPATH= ;; #(
2031620341 *) :
2031720342 if test -d "$with_openssl_rpath"; then :
20318- OPENSSL_RPATH="$with_openssl_rpath"
20343+
20344+ OPENSSL_RPATH="$with_openssl_rpath"
20345+ OPENSSL_LDFLAGS_RPATH="${rpath_arg}$with_openssl_rpath"
20346+
2031920347else
2032020348 as_fn_error $? "--with-openssl-rpath \"$with_openssl_rpath\" is not a directory" "$LINENO" 5
2032120349fi
@@ -20326,71 +20354,163 @@ esac
2032620354$as_echo "$OPENSSL_RPATH" >&6; }
2032720355
2032820356
20357+ # This static linking is NOT OFFICIALLY SUPPORTED and not advertised.
20358+ # Requires static OpenSSL build with position-independent code. Some features
20359+ # like DSO engines or external OSSL providers don't work. Only tested with GCC
20360+ # and clang on X86_64.
20361+ if test "x$PY_UNSUPPORTED_OPENSSL_BUILD" = xstatic; then :
20362+
20363+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsupported static openssl build" >&5
20364+ $as_echo_n "checking for unsupported static openssl build... " >&6; }
20365+ new_OPENSSL_LIBS=
20366+ for arg in $OPENSSL_LIBS; do
20367+ case $arg in #(
20368+ -l*) :
20369+
20370+ libname=$(echo $arg | cut -c3-)
20371+ new_OPENSSL_LIBS="$new_OPENSSL_LIBS -l:lib${libname}.a -Wl,--exclude-libs,lib${libname}.a"
20372+ ;; #(
20373+ *) :
20374+ new_OPENSSL_LIBS="$new_OPENSSL_LIBS $arg"
20375+ ;;
20376+ esac
20377+ done
20378+ OPENSSL_LIBS="$new_OPENSSL_LIBS $ZLIB_LIBS"
20379+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENSSL_LIBS" >&5
20380+ $as_echo "$OPENSSL_LIBS" >&6; }
20381+
20382+ fi
20383+
20384+ LIBCRYPTO_LIBS=
20385+ for arg in $OPENSSL_LIBS; do
20386+ case $arg in #(
20387+ -l*ssl*|-Wl*ssl*) :
20388+ ;; #(
20389+ *) :
20390+ LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS $arg"
20391+ ;;
20392+ esac
20393+ done
20394+
2032920395# check if OpenSSL libraries work as expected
20330- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides required APIs" >&5
20331- $as_echo_n "checking whether OpenSSL provides required APIs... " >&6; }
20332- if ${ac_cv_working_openssl+:} false; then :
20396+ save_CFLAGS=$CFLAGS
20397+ save_CPPFLAGS=$CPPFLAGS
20398+ save_LDFLAGS=$LDFLAGS
20399+ save_LIBS=$LIBS
20400+
20401+
20402+ LIBS="$LIBS $OPENSSL_LIBS"
20403+ CFLAGS="$CFLAGS $OPENSSL_INCLUDES"
20404+ LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH"
20405+
20406+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides required ssl module APIs" >&5
20407+ $as_echo_n "checking whether OpenSSL provides required ssl module APIs... " >&6; }
20408+ if ${ac_cv_working_openssl_ssl+:} false; then :
2033320409 $as_echo_n "(cached) " >&6
2033420410else
2033520411
20336- save_LIBS="$LIBS"
20337- save_CFLAGS="$CFLAGS"
20338- save_LDFLAGS="$LDFLAGS"
20339- LIBS="$LIBS $OPENSSL_LIBS"
20340- CFLAGS="$CFLAGS_NODIST $OPENSSL_INCLUDES"
20341- LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS"
20342-
20343- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20412+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2034420413/* end confdefs.h. */
2034520414
20346- #include <openssl/opensslv.h>
20347- #include <openssl/evp.h>
20348- #include <openssl/ssl.h>
20415+ #include <openssl/opensslv.h>
20416+ #include <openssl/ssl.h>
20417+ #if OPENSSL_VERSION_NUMBER < 0x10101000L
20418+ #error "OpenSSL >= 1.1.1 is required"
20419+ #endif
20420+ static void keylog_cb(const SSL *ssl, const char *line) {}
2034920421
20350- #if OPENSSL_VERSION_NUMBER < 0x10101000L
20351- #error "OpenSSL >= 1.1.1 is required"
20352- #endif
20422+ int
20423+ main ()
20424+ {
20425+
20426+ SSL_CTX *ctx = SSL_CTX_new(TLS_client_method());
20427+ SSL_CTX_set_keylog_callback(ctx, keylog_cb);
20428+ SSL *ssl = SSL_new(ctx);
20429+ X509_VERIFY_PARAM *param = SSL_get0_param(ssl);
20430+ X509_VERIFY_PARAM_set1_host(param, "python.org", 0);
20431+ SSL_free(ssl);
20432+ SSL_CTX_free(ctx);
20433+
20434+ ;
20435+ return 0;
20436+ }
20437+ _ACEOF
20438+ if ac_fn_c_try_link "$LINENO"; then :
20439+ ac_cv_working_openssl_ssl=yes
20440+ else
20441+ ac_cv_working_openssl_ssl=no
20442+ fi
20443+ rm -f core conftest.err conftest.$ac_objext \
20444+ conftest$ac_exeext conftest.$ac_ext
20445+
20446+ fi
20447+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_openssl_ssl" >&5
20448+ $as_echo "$ac_cv_working_openssl_ssl" >&6; }
20449+
20450+ CFLAGS=$save_CFLAGS
20451+ CPPFLAGS=$save_CPPFLAGS
20452+ LDFLAGS=$save_LDFLAGS
20453+ LIBS=$save_LIBS
20454+
20455+
20456+
20457+ save_CFLAGS=$CFLAGS
20458+ save_CPPFLAGS=$CPPFLAGS
20459+ save_LDFLAGS=$LDFLAGS
20460+ save_LIBS=$LIBS
20461+
20462+
20463+ LIBS="$LIBS $LIBCRYPTO_LIBS"
20464+ CFLAGS="$CFLAGS $OPENSSL_INCLUDES"
20465+ LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH"
20466+
20467+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides required hashlib module APIs" >&5
20468+ $as_echo_n "checking whether OpenSSL provides required hashlib module APIs... " >&6; }
20469+ if ${ac_cv_working_openssl_hashlib+:} false; then :
20470+ $as_echo_n "(cached) " >&6
20471+ else
20472+
20473+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20474+ /* end confdefs.h. */
2035320475
20354- static void keylog_cb(const SSL *ssl, const char *line) {}
20476+ #include <openssl/opensslv.h>
20477+ #include <openssl/evp.h>
20478+ #if OPENSSL_VERSION_NUMBER < 0x10101000L
20479+ #error "OpenSSL >= 1.1.1 is required"
20480+ #endif
2035520481
2035620482int
2035720483main ()
2035820484{
2035920485
20360- /* SSL APIs */
20361- SSL_CTX *ctx = SSL_CTX_new(TLS_client_method());
20362- SSL_CTX_set_keylog_callback(ctx, keylog_cb);
20363- SSL *ssl = SSL_new(ctx);
20364- X509_VERIFY_PARAM *param = SSL_get0_param(ssl);
20365- X509_VERIFY_PARAM_set1_host(param, "python.org", 0);
20366- SSL_free(ssl);
20367- SSL_CTX_free(ctx);
20368-
20369- /* hashlib APIs */
20370- OBJ_nid2sn(NID_md5);
20371- OBJ_nid2sn(NID_sha1);
20372- OBJ_nid2sn(NID_sha3_512);
20373- OBJ_nid2sn(NID_blake2b512);
20374- EVP_PBE_scrypt(NULL, 0, NULL, 0, 2, 8, 1, 0, NULL, 0);
20486+ OBJ_nid2sn(NID_md5);
20487+ OBJ_nid2sn(NID_sha1);
20488+ OBJ_nid2sn(NID_sha3_512);
20489+ OBJ_nid2sn(NID_blake2b512);
20490+ EVP_PBE_scrypt(NULL, 0, NULL, 0, 2, 8, 1, 0, NULL, 0);
2037520491
2037620492 ;
2037720493 return 0;
2037820494}
2037920495_ACEOF
2038020496if ac_fn_c_try_link "$LINENO"; then :
20381- ac_cv_working_openssl =yes
20497+ ac_cv_working_openssl_hashlib =yes
2038220498else
20383- ac_cv_working_openssl =no
20499+ ac_cv_working_openssl_hashlib =no
2038420500fi
2038520501rm -f core conftest.err conftest.$ac_objext \
2038620502 conftest$ac_exeext conftest.$ac_ext
20387- LIBS="$save_LIBS"
20388- CFLAGS="$save_CFLAGS"
20389- LDFLAGS="$save_LDFLAGS"
2039020503
2039120504fi
20392- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_openssl" >&5
20393- $as_echo "$ac_cv_working_openssl" >&6; }
20505+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_openssl_hashlib" >&5
20506+ $as_echo "$ac_cv_working_openssl_hashlib" >&6; }
20507+
20508+ CFLAGS=$save_CFLAGS
20509+ CPPFLAGS=$save_CPPFLAGS
20510+ LDFLAGS=$save_LDFLAGS
20511+ LIBS=$save_LIBS
20512+
20513+
2039420514
2039520515# ssl module default cipher suite string
2039620516
@@ -21800,6 +21920,79 @@ $as_echo "$py_cv_module__lzma" >&6; }
2180021920
2180121921
2180221922
21923+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _ssl" >&5
21924+ $as_echo_n "checking for stdlib extension module _ssl... " >&6; }
21925+ case $py_stdlib_not_available in #(
21926+ *_ssl*) :
21927+ py_cv_module__ssl=n/a ;; #(
21928+ *) :
21929+ if true; then :
21930+ if test "$ac_cv_working_openssl_ssl" = yes; then :
21931+ py_cv_module__ssl=yes
21932+ else
21933+ py_cv_module__ssl=missing
21934+ fi
21935+ else
21936+ py_cv_module__ssl=disabled
21937+ fi
21938+ ;;
21939+ esac
21940+ as_fn_append MODULE_BLOCK "MODULE__SSL=$py_cv_module__ssl$as_nl"
21941+ if test "x$py_cv_module__ssl" = xyes; then :
21942+
21943+ as_fn_append MODULE_BLOCK "MODULE__SSL_CFLAGS=$OPENSSL_INCLUDES$as_nl"
21944+ as_fn_append MODULE_BLOCK "MODULE__SSL_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $OPENSSL_LIBS$as_nl"
21945+
21946+ fi
21947+ if test "$py_cv_module__ssl" = yes; then
21948+ MODULE__SSL_TRUE=
21949+ MODULE__SSL_FALSE='#'
21950+ else
21951+ MODULE__SSL_TRUE='#'
21952+ MODULE__SSL_FALSE=
21953+ fi
21954+
21955+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__ssl" >&5
21956+ $as_echo "$py_cv_module__ssl" >&6; }
21957+
21958+
21959+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _hashlib" >&5
21960+ $as_echo_n "checking for stdlib extension module _hashlib... " >&6; }
21961+ case $py_stdlib_not_available in #(
21962+ *_hashlib*) :
21963+ py_cv_module__hashlib=n/a ;; #(
21964+ *) :
21965+ if true; then :
21966+ if test "$ac_cv_working_openssl_hashlib" = yes; then :
21967+ py_cv_module__hashlib=yes
21968+ else
21969+ py_cv_module__hashlib=missing
21970+ fi
21971+ else
21972+ py_cv_module__hashlib=disabled
21973+ fi
21974+ ;;
21975+ esac
21976+ as_fn_append MODULE_BLOCK "MODULE__HASHLIB=$py_cv_module__hashlib$as_nl"
21977+ if test "x$py_cv_module__hashlib" = xyes; then :
21978+
21979+ as_fn_append MODULE_BLOCK "MODULE__HASHLIB_CFLAGS=$OPENSSL_INCLUDES$as_nl"
21980+ as_fn_append MODULE_BLOCK "MODULE__HASHLIB_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS$as_nl"
21981+
21982+ fi
21983+ if test "$py_cv_module__hashlib" = yes; then
21984+ MODULE__HASHLIB_TRUE=
21985+ MODULE__HASHLIB_FALSE='#'
21986+ else
21987+ MODULE__HASHLIB_TRUE='#'
21988+ MODULE__HASHLIB_FALSE=
21989+ fi
21990+
21991+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__hashlib" >&5
21992+ $as_echo "$py_cv_module__hashlib" >&6; }
21993+
21994+
21995+
2180321996 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testcapi" >&5
2180421997$as_echo_n "checking for stdlib extension module _testcapi... " >&6; }
2180521998 case $py_stdlib_not_available in #(
@@ -22481,6 +22674,14 @@ if test -z "${MODULE__LZMA_TRUE}" && test -z "${MODULE__LZMA_FALSE}"; then
2248122674 as_fn_error $? "conditional \"MODULE__LZMA\" was never defined.
2248222675Usually this means the macro was only invoked conditionally." "$LINENO" 5
2248322676fi
22677+ if test -z "${MODULE__SSL_TRUE}" && test -z "${MODULE__SSL_FALSE}"; then
22678+ as_fn_error $? "conditional \"MODULE__SSL\" was never defined.
22679+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
22680+ fi
22681+ if test -z "${MODULE__HASHLIB_TRUE}" && test -z "${MODULE__HASHLIB_FALSE}"; then
22682+ as_fn_error $? "conditional \"MODULE__HASHLIB\" was never defined.
22683+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
22684+ fi
2248422685if test -z "${MODULE__TESTCAPI_TRUE}" && test -z "${MODULE__TESTCAPI_FALSE}"; then
2248522686 as_fn_error $? "conditional \"MODULE__TESTCAPI\" was never defined.
2248622687Usually this means the macro was only invoked conditionally." "$LINENO" 5
0 commit comments