From: "alanwu (Alan Wu)" Date: 2022-11-16T00:26:00+00:00 Subject: [ruby-core:110772] [Ruby master Bug#19115] OpenSSL fails to autoload (macOS) Issue #19115 has been updated by alanwu (Alan Wu). The issue is specific to extensions that are statically linked into the build in `--with-static-linked-ext`. `autoload?` also doesn't work correctly with these extensions: ``` $ ruby --disable-all -ve 'autoload(:Ripper, "ripper"); p autoload?(:Ripper)' ruby 3.2.0dev (2022-11-15T17:26:51Z autoload 9751b54971) [arm64-darwin22] nil ``` This is coming from the special treatment for native extensions. They are [inserted][1] into `vm->loading_table` and so are treated as being in the middle of being required on boot even when they're not actually required yet. This weird loading state causes `autoload?` and `defined?` to return `nil` because it [looks like][2] querying the state of the constant while it is autoloading. I haven't tried making a patch, but it seems wise to stop using `vm->loading_table` for this purpose. [1]: https://github.com/ruby/ruby/blob/41b0f641ef0671d8cde397e56b1eb3c6b8e0f0db/load.c#L1298-L1307 [2]: https://github.com/ruby/ruby/blob/41b0f641ef0671d8cde397e56b1eb3c6b8e0f0db/spec/ruby/core/module/autoload_spec.rb#L398 ---------------------------------------- Bug #19115: OpenSSL fails to autoload (macOS) https://bugs.ruby-lang.org/issues/19115#change-100117 * Author: thomthom (Thomas Thomassen) * Status: Open * Priority: Normal * ruby -v: 3.1.2, 3.2.0dev * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- Related discussion: https://bugs.ruby-lang.org/issues/18876 We are seeing OpenSSL failing to autoload with the Ruby build we've been using. (We first observed this when using `Gem.install` that relies on autoload of OpenSSL). Our last working build was Ruby 2.7.2 with similar config. This causes RubyGems' `HAVE_OPENSSL` constant to be incorrectly initialized, and subsequent calls to `Gem.install` fails. There might be other scenarios that fail as a result of that, but we've not managed to identified that. ``` module Gem HAVE_OPENSSL = defined? OpenSSL::SSL # :nodoc: ``` Our Ruby 3.1.2 config: ``` '--prefix=/Users/user/.conan/data/ruby/3.1.2/sketchup/stable/build/bd95825b99dcb274d0e577fbdc953653a9ea0fb9' '--with-openssl-dir=/Users/user/.conan/data/openssl/1.1.1q/sketchup/stable/package/93ae0b0e7eebe0611c04d3e0d9bbf49fbce92332' '--with-libyaml-dir=/Users/user/.conan/data/libyaml/0.2.5/sketchup/stable/package/a56a950abed2e10dbdc26845400f0a034d97c454' '--disable-install-doc' '--disable-install-rdoc' '--enable-shared' '--enable-load-relative' '--with-static-linked-ext' '--without-debug' '--without-gdbm' '--without-gettext' '--without-irb' '--without-mkmf' '--without-rdoc' '--without-readline' '--without-tk' '--bindir=${prefix}/bin' '--sbindir=${prefix}/bin' '--libexecdir=${prefix}/bin' '--libdir=${prefix}/lib' '--includedir=${prefix}/include' '--oldincludedir=${prefix}/include' '--datarootdir=${prefix}/share' 'cflags=-mmacosx-version-min=10.14 -fdeclspec' 'cxxflags=-mmacosx-version-min=10.14 -fdeclspec' 'LDFLAGS=-mmacosx-version-min=10.14 -fdeclspec' ``` We also tested with latest build from master (November 8th 2022): ``` ./ruby -ve 'p RbConfig::CONFIG["configure_args"]' ruby 3.2.0dev (2022-11-07T19:35:21Z master b14f133054) [x86_64-darwin20] " '--prefix=/Users/vmehta/ruby/ruby-master/' '--with-openssl-dir=/Users/vmehta/.conan/data/openssl/1.1.1q/sketchup/stable/package/f2d937af1fa19d5fc4095849a65d1927e9e75ae7/' '--with-libyaml-dir=/Users/vmehta/.conan/data/libyaml/0.2.5/sketchup/stable/package/3fc084e254210603a5c5aece184b2d45e2509b30' '--disable-install-doc' '--disable-install-rdoc' '--enable-shared' '--enable-load-relative' '--with-static-linked-ext' '--without-debug' '--without-gdbm' '--without-gettext' '--without-irb' '--without-mkmf' '--without-rdoc' '--without-readline' '--without-tk'" ``` Using an RVM of Ruby 3.1.2 this appear to work as expected. But using out configuration, that we've used for the Ruby 2.x versions are now failing. We haven't been able to figure out the reason for this. -- https://bugs.ruby-lang.org/ Unsubscribe: