-
Notifications
You must be signed in to change notification settings - Fork 177
Open
Description
MacOS Monterey 12.6.2 (Interl-based iMac), OpenSSL-1.1.1s (also have OpenSSL-3.0.7, but it fails to build extension exactly the same way), Macports-installed Ruby-3.2 (same results with Ruby-3.1).
The problem seems to be with openssl-3.1.0/ext/openssl/openssl_missing.h
file, which improperly re-defines certain functions:
$ sudo gem install openssl -- --with-openssl-dir=/opt/local/libexec/openssl11
Fetching openssl-3.1.0.gem
Building native extensions with: '--with-openssl-dir=/opt/local/libexec/openssl11'
This could take a while...
ERROR: Error installing openssl:
ERROR: Failed to build gem native extension.
current directory: /opt/local/lib/ruby3.2/gems/3.2.0/gems/openssl-3.1.0/ext/openssl
/opt/local/bin/ruby3.2 -I /opt/local/lib/ruby3.2/3.2.0 extconf.rb --with-openssl-dir\=/opt/local/libexec/openssl11
checking for rb_io_maybe_wait(0, Qnil, Qnil, Qnil) in ruby/io.h... yes
checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
checking for openssl/ssl.h... yes
checking for CRYPTO_malloc() in -lcrypto... yes
checking for SSL_new() in -lssl... yes
checking for LIBRESSL_VERSION_NUMBER in openssl/opensslv.h... no
checking for OpenSSL version >= 1.0.2... yes
checking for RAND_egd() in openssl/rand.h... no
checking for ENGINE_load_dynamic() in openssl/engine.h... yes
checking for ENGINE_load_4758cca() in openssl/engine.h... no
checking for ENGINE_load_aep() in openssl/engine.h... no
checking for ENGINE_load_atalla() in openssl/engine.h... no
checking for ENGINE_load_chil() in openssl/engine.h... no
checking for ENGINE_load_cswift() in openssl/engine.h... no
checking for ENGINE_load_nuron() in openssl/engine.h... no
checking for ENGINE_load_sureware() in openssl/engine.h... no
checking for ENGINE_load_ubsec() in openssl/engine.h... no
checking for ENGINE_load_padlock() in openssl/engine.h... no
checking for ENGINE_load_capi() in openssl/engine.h... no
checking for ENGINE_load_gmp() in openssl/engine.h... no
checking for ENGINE_load_gost() in openssl/engine.h... no
checking for ENGINE_load_cryptodev() in openssl/engine.h... yes
checking for SSL.ctx in openssl/ssl.h... no
checking for EVP_MD_CTX_new() in openssl/evp.h... yes
checking for EVP_MD_CTX_free(NULL) in openssl/evp.h... yes
checking for EVP_MD_CTX_pkey_ctx(NULL) in openssl/evp.h... no
checking for X509_STORE_get_ex_data(NULL, 0) in openssl/x509.h... yes
checking for X509_STORE_set_ex_data(NULL, 0, NULL) in openssl/x509.h... yes
checking for X509_STORE_get_ex_new_index(0, NULL, NULL, NULL, NULL) in openssl/x509.h... yes
checking for X509_CRL_get0_signature(NULL, NULL, NULL) in openssl/x509.h... yes
checking for X509_REQ_get0_signature(NULL, NULL, NULL) in openssl/x509.h... yes
checking for X509_REVOKED_get0_serialNumber(NULL) in openssl/x509.h... yes
checking for X509_REVOKED_get0_revocationDate(NULL) in openssl/x509.h... yes
checking for X509_get0_tbs_sigalg(NULL) in openssl/x509.h... yes
checking for X509_STORE_CTX_get0_untrusted(NULL) in openssl/x509.h... yes
checking for X509_STORE_CTX_get0_cert(NULL) in openssl/x509.h... yes
checking for X509_STORE_CTX_get0_chain(NULL) in openssl/x509.h... yes
checking for OCSP_SINGLERESP_get0_id(NULL) in openssl/ocsp.h... yes
checking for SSL_CTX_get_ciphers(NULL) in openssl/ssl.h... yes
checking for X509_up_ref(NULL) in openssl/x509.h... yes
checking for X509_CRL_up_ref(NULL) in openssl/x509.h... yes
checking for X509_STORE_up_ref(NULL) in openssl/x509.h... yes
checking for SSL_SESSION_up_ref(NULL) in openssl/ssl.h... yes
checking for EVP_PKEY_up_ref(NULL) in openssl/evp.h... yes
checking for SSL_CTX_set_min_proto_version(NULL, 0) in openssl/ssl.h... yes
checking for SSL_CTX_get_security_level(NULL) in openssl/ssl.h... yes
checking for X509_get0_notBefore(NULL) in openssl/x509.h... yes
checking for SSL_SESSION_get_protocol_version(NULL) in openssl/ssl.h... yes
checking for TS_STATUS_INFO_get0_status(NULL) in openssl/ts.h... yes
checking for TS_STATUS_INFO_get0_text(NULL) in openssl/ts.h... yes
checking for TS_STATUS_INFO_get0_failure_info(NULL) in openssl/ts.h... yes
checking for TS_VERIFY_CTS_set_certs(NULL, NULL) in openssl/ts.h... no
checking for TS_VERIFY_CTX_set_store(NULL, NULL) in openssl/ts.h... yes
checking for TS_VERIFY_CTX_add_flags(NULL, 0) in openssl/ts.h... yes
checking for TS_RESP_CTX_set_time_cb(NULL, NULL, NULL) in openssl/ts.h... yes
checking for EVP_PBE_scrypt("", 0, (unsigned char *)"", 0, 0, 0, 0, 0, NULL, 0) in openssl/evp.h... yes
checking for SSL_CTX_set_post_handshake_auth(NULL, 0) in openssl/ssl.h... yes
checking for EVP_PKEY_check(NULL) in openssl/evp.h... yes
checking for EVP_PKEY_new_raw_private_key(0, NULL, (unsigned char *)"", 0) in openssl/evp.h... yes
checking for SSL_CTX_set_ciphersuites(NULL, "") in openssl/ssl.h... yes
checking for SSL_set0_tmp_dh_pkey(NULL, NULL) in openssl/ssl.h... no
checking for ERR_get_error_all(NULL, NULL, NULL, NULL, NULL) in openssl/err.h... no
checking for TS_VERIFY_CTX_set_certs(NULL, NULL) in openssl/ts.h... no
checking for SSL_CTX_load_verify_file(NULL, "") in openssl/ssl.h... no
checking for BN_check_prime(NULL, NULL, NULL) in openssl/bn.h... no
checking for EVP_MD_CTX_get0_md(NULL) in openssl/evp.h... no
checking for EVP_MD_CTX_get_pkey_ctx(NULL) in openssl/evp.h... no
checking for EVP_PKEY_eq(NULL, NULL) in openssl/evp.h... no
checking for EVP_PKEY_dup(NULL) in openssl/evp.h... no
creating extconf.h
creating Makefile
current directory: /opt/local/lib/ruby3.2/gems/3.2.0/gems/openssl-3.1.0/ext/openssl
make DESTDIR\= sitearchdir\=./.gem.20230103-46694-yflkd8 sitelibdir\=./.gem.20230103-46694-yflkd8 clean
current directory: /opt/local/lib/ruby3.2/gems/3.2.0/gems/openssl-3.1.0/ext/openssl
make DESTDIR\= sitearchdir\=./.gem.20230103-46694-yflkd8 sitelibdir\=./.gem.20230103-46694-yflkd8
compiling openssl_missing.c
compiling ossl.c
compiling ossl_asn1.c
compiling ossl_bio.c
compiling ossl_bn.c
compiling ossl_cipher.c
compiling ossl_config.c
compiling ossl_digest.c
compiling ossl_engine.c
compiling ossl_hmac.c
ossl_hmac.c:249:35: error: incomplete definition of type 'struct evp_md_ctx_st'
pkey = EVP_PKEY_CTX_get0_pkey(EVP_MD_CTX_get_pkey_ctx(ctx));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
./openssl_missing.h:230:41: note: expanded from macro 'EVP_MD_CTX_get_pkey_ctx'
# define EVP_MD_CTX_get_pkey_ctx(x) (x)->pctx
~~~^
/opt/local/libexec/openssl11/include/openssl/ossl_typ.h:92:16: note: forward declaration of 'struct evp_md_ctx_st'
typedef struct evp_md_ctx_st EVP_MD_CTX;
^
1 error generated.
make: *** [ossl_hmac.o] Error 1
make failed, exit code 2
Gem files will remain installed in /opt/local/lib/ruby3.2/gems/3.2.0/gems/openssl-3.1.0 for inspection.
Results logged to /opt/local/lib/ruby3.2/gems/3.2.0/extensions/x86_64-darwin-21/3.2.0/openssl-3.1.0/gem_make.out
Attempts to edit the offending file locally and recompile succeed - but the gem cannot be installed:
$ sudo gem spec ../../cache/openssl-3.1.0.gem --ruby > /tmp/openssl.gemspec
[/opt/local/lib/ruby3.2/gems/3.2.0/specifications/openssl-3.1.0.gemspec] isn't a Gem::Specification (NilClass instead).
$ sudo cp !!:$ ../../cache/openssl-3.1.0.gem
sudo cp /tmp/openssl.gemspec ../../cache/openssl-3.1.0.gem
$ sync
$ gem list openssl
[/opt/local/lib/ruby3.2/gems/3.2.0/specifications/openssl-3.1.0.gemspec] isn't a Gem::Specification (NilClass instead).
*** LOCAL GEMS ***
[/opt/local/lib/ruby3.2/gems/3.2.0/specifications/openssl-3.1.0.gemspec] isn't a Gem::Specification (NilClass instead).
openssl (default: 3.1.0)
$
openssl-3.0.1
gem installs fine.
Rukeith and YodaLightsabr
Metadata
Metadata
Assignees
Labels
No labels