@@ -642,6 +642,10 @@ MODULE__TESTINTERNALCAPI_FALSE
642
642
MODULE__TESTINTERNALCAPI_TRUE
643
643
MODULE__TESTCAPI_FALSE
644
644
MODULE__TESTCAPI_TRUE
645
+ MODULE__HASHLIB_FALSE
646
+ MODULE__HASHLIB_TRUE
647
+ MODULE__SSL_FALSE
648
+ MODULE__SSL_TRUE
645
649
MODULE__LZMA_FALSE
646
650
MODULE__LZMA_TRUE
647
651
MODULE__BZ2_FALSE
@@ -20297,6 +20301,16 @@ rm -f core conftest.err conftest.$ac_objext \
20297
20301
20298
20302
20299
20303
# 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
+
20300
20314
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-openssl-rpath" >&5
20301
20315
$as_echo_n "checking for --with-openssl-rpath... " >&6; }
20302
20316
@@ -20310,12 +20324,26 @@ fi
20310
20324
20311
20325
case $with_openssl_rpath in #(
20312
20326
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
+ ;; #(
20314
20339
no) :
20315
20340
OPENSSL_RPATH= ;; #(
20316
20341
*) :
20317
20342
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
+
20319
20347
else
20320
20348
as_fn_error $? "--with-openssl-rpath \"$with_openssl_rpath\" is not a directory" "$LINENO" 5
20321
20349
fi
@@ -20326,71 +20354,163 @@ esac
20326
20354
$as_echo "$OPENSSL_RPATH" >&6; }
20327
20355
20328
20356
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
+
20329
20395
# 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 :
20333
20409
$as_echo_n "(cached) " >&6
20334
20410
else
20335
20411
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
20344
20413
/* end confdefs.h. */
20345
20414
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) {}
20349
20421
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. */
20353
20475
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
20355
20481
20356
20482
int
20357
20483
main ()
20358
20484
{
20359
20485
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);
20375
20491
20376
20492
;
20377
20493
return 0;
20378
20494
}
20379
20495
_ACEOF
20380
20496
if ac_fn_c_try_link "$LINENO"; then :
20381
- ac_cv_working_openssl =yes
20497
+ ac_cv_working_openssl_hashlib =yes
20382
20498
else
20383
- ac_cv_working_openssl =no
20499
+ ac_cv_working_openssl_hashlib =no
20384
20500
fi
20385
20501
rm -f core conftest.err conftest.$ac_objext \
20386
20502
conftest$ac_exeext conftest.$ac_ext
20387
- LIBS="$save_LIBS"
20388
- CFLAGS="$save_CFLAGS"
20389
- LDFLAGS="$save_LDFLAGS"
20390
20503
20391
20504
fi
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
+
20394
20514
20395
20515
# ssl module default cipher suite string
20396
20516
@@ -21800,6 +21920,79 @@ $as_echo "$py_cv_module__lzma" >&6; }
21800
21920
21801
21921
21802
21922
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
+
21803
21996
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testcapi" >&5
21804
21997
$as_echo_n "checking for stdlib extension module _testcapi... " >&6; }
21805
21998
case $py_stdlib_not_available in #(
@@ -22481,6 +22674,14 @@ if test -z "${MODULE__LZMA_TRUE}" && test -z "${MODULE__LZMA_FALSE}"; then
22481
22674
as_fn_error $? "conditional \"MODULE__LZMA\" was never defined.
22482
22675
Usually this means the macro was only invoked conditionally." "$LINENO" 5
22483
22676
fi
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
22484
22685
if test -z "${MODULE__TESTCAPI_TRUE}" && test -z "${MODULE__TESTCAPI_FALSE}"; then
22485
22686
as_fn_error $? "conditional \"MODULE__TESTCAPI\" was never defined.
22486
22687
Usually this means the macro was only invoked conditionally." "$LINENO" 5
0 commit comments