Project

General

Profile

Bug #11940

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

Hello, 

 When I select to include all ext static linked and between them there is openssl, ruby fails to build. 

 ~~~ 

 $ ./configure --disable-install-doc       --disable-install-rdoc       --disable-install-capi     --with-static-linked-ext 
 $ make 
 $ make install 
 (...) 
 ./miniruby -I./lib -I. -I.ext/common    ./tool/runruby.rb --extout=.ext    -- --disable-gems -r./x86_64-linux-fake ./tool/rbinstall.rb --make="make" --dest-dir="" --extout=".ext" --mflags="" --make-flags="" --data-mode=0644 --prog-mode=0755 --installed-list .installed.list --mantype="doc" 
 /tmp/ruby-2.3.0/lib/rubygems/security.rb:344:in `<module:Security>': uninitialized constant OpenSSL::Digest::SHA1 (NameError) 
	 from /tmp/ruby-2.3.0/lib/rubygems/security.rb:332:in `<top (required)>' 
	 from /tmp/ruby-2.3.0/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
	 from /tmp/ruby-2.3.0/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
	 from /tmp/ruby-2.3.0/lib/rubygems/package.rb:44:in `<top (required)>' 
	 from /tmp/ruby-2.3.0/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
	 from /tmp/ruby-2.3.0/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
	 from /tmp/ruby-2.3.0/lib/rubygems/installer.rb:10:in `<top (required)>' 
	 from /tmp/ruby-2.3.0/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
	 from /tmp/ruby-2.3.0/lib/rubygems/core_ext/kernel_require.rb:55:in `require' 
	 from ./tool/rbinstall.rb:657:in `<module:RbInstall>' 
	 from ./tool/rbinstall.rb:585:in `<main>' 
 uncommon.mk:267: recipe for target 'do-install-nodoc' failed 
 make: *** [do-install-nodoc] Error 1 

 ~~~ 



 It seems that `OpenSSL::Digest` OpenSSL::Digest is defined by the builtin ext (in miniruby?!), which breaks the logic at: 

 ~~~ruby ~~~ 

   DIGEST_ALGORITHM = 
     if defined?(OpenSSL::Digest) then 
       OpenSSL::Digest::SHA1 
     end 

 ~~~ 

 `OpenSSL::Digest` OpenSSL::Digest is defined (because it has methods like `digest` digest and `hexdigest`) hexdigest) but not `OpenSSL::Digest::SHA1`. OpenSSL::Digest::SHA1.

Back