----- Original Message ----- > From: "Vít Ondruch" <vondr...@redhat.com> > To: ruby-sig@lists.fedoraproject.org > Sent: Tuesday, January 28, 2020 12:30:04 PM > Subject: Re: rubygem-openssl changes in rawhide > > I think it might happen like this: > > > 1) Vagrant loads OpenSSL: > > https://github.com/hashicorp/vagrant/blob/master/lib/vagrant.rb#L90 > > > 2) Later, net-ssh is required somewhere. When net-ssh is loaded, the > OpenSSH from gem is loaded due to dependencies: > > https://src.fedoraproject.org/rpms/rubygem-net-ssh/blob/master/f/rubygem-net-ssh.spec#_38
Well, yes, I've missed that it can be loaded twice. Thanks for spotting! > > > IOW the solution could be to pre-load net-ssh gem. May be we should even > consider to use Bundler to execute the test suite, because that would > pre-load the dependencies from the vagrant.gemspec. Well, apart from bundler. Wouldn't `require_once`, instead of `require` help in this case? Not sure how pre-loading helps, but I'll investigate. I'll also ask gem-openssl and Vagrant upstreams what they think is best. Regards, Pavel > > > Vít > > > > Dne 28. 01. 20 v 12:09 Vít Ondruch napsal(a): > > I think you focus on wrong problem. Of course the code construction in > > OpenSSL is weird: > > > > > > ~~~ > > > > # Deprecated. > > # > > # This class is only provided for backwards compatibility. > > # Use OpenSSL::Cipher. > > class Cipher < Cipher; end > > deprecate_constant :Cipher > > > > ~~~ > > > > > > But you should probably focus on the beginning of the test suite output: > > > > > > ~~~ > > > > /usr/lib64/gems/ruby/openssl-2.1.2/openssl.so: warning: already > > initialized constant OpenSSL::ASN1::CHARACTER_STRING > > /usr/lib64/gems/ruby/openssl-2.1.2/openssl.so: warning: already > > initialized constant OpenSSL::ASN1::BMPSTRING > > /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:18: warning: > > constant OpenSSL::Cipher::Cipher is deprecated > > /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:24: warning: > > already initialized constant OpenSSL::Cipher::AES > > /usr/share/ruby/openssl/cipher.rb:24: warning: previous definition of > > AES was here > > /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:18: warning: > > constant OpenSSL::Cipher::Cipher is deprecated > > /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:24: warning: > > already initialized constant OpenSSL::Cipher::CAST5 > > /usr/share/ruby/openssl/cipher.rb:24: warning: previous definition of > > CAST5 was here > > /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:18: warning: > > constant OpenSSL::Cipher::Cipher is deprecated > > /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:24: warning: > > already initialized constant OpenSSL::Cipher::BF > > /usr/share/ruby/openssl/cipher.rb:24: warning: previous definition of BF > > was here > > > > ~~~ > > > > > > To me, this seems as if the gemified OpenSSL were mixed with the OpenSSL > > linked into the StdLib and therefore some code is loaded twice and it > > might result in errors as the one you are pointing out. > > > > > > Vít > > > > > > Dne 28. 01. 20 v 11:49 Pavel Valena napsal(a): > > > >> Hello, > >> > >> it seems Ruby 2.7 came with some openssl surprise, because for some reason > >> Vagrant testsuite breaks: > >> > >> https://copr-be.cloud.fedoraproject.org/results/pvalena/vagrant/fedora-rawhide-x86_64/01195186-vagrant/builder-live.log.gz > >> https://koji.fedoraproject.org/koji/taskinfo?taskID=41097171 > >> > >> f.e.: > >> ``` > >> An error occurred while loading > >> ./test/unit/plugins/pushes/ftp/push_test.rb. > >> Failure/Error: class Cipher < Cipher; end > >> TypeError: > >> superclass mismatch for class Cipher > >> # /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:64:in > >> `<class:Cipher>' > >> # /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:16:in > >> `<module:OpenSSL>' > >> # /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:15:in `<top > >> (required)>' > >> # /usr/share/gems/gems/openssl-2.1.2/lib/openssl.rb:17:in `<top > >> (required)>' > >> # /usr/share/ruby/net/ftp.rb:23:in `<top (required)>' > >> # ./plugins/pushes/ftp/push.rb:1:in `<top (required)>' > >> # ./test/unit/plugins/pushes/ftp/push_test.rb:4:in `<top (required)>' > >> ``` > >> > >> But to my best efforts I wasn't able to trace it to the source. > >> > >> Ideas? > >> > >> Pavel _______________________________________________ ruby-sig mailing list -- ruby-sig@lists.fedoraproject.org To unsubscribe send an email to ruby-sig-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org