Bug #10796
closedbigdecimal gem update error
Description
C:\Zend\Apache2\htdocs\u3c>gem update
Updating installed gems
Updating bigdecimal
Building native extensions. This could take a while...
ERROR: Error installing bigdecimal:
ERROR: Failed to build gem native extension.
C:/Ruby21-x64/bin/ruby.exe -r ./siteconf20150128-10504-1w9xw9b.rb extconf.rb
checking for labs() in stdlib.h... yes
checking for llabs() in stdlib.h... yes
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
generating bigdecimal-x64-mingw32.def
compiling bigdecimal.c
bigdecimal.c: In function 'GetVpValueWithPrec':
bigdecimal.c:238:6: warning: implicit declaration of function 'rb_rational_num' [-Wimplicit-function-declaration]
bigdecimal.c:242:6: warning: implicit declaration of function 'rb_rational_den' [-Wimplicit-function-declaration]
linking shared-object bigdecimal.so
bigdecimal.o: In function `is_zero':
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2126: undefined reference to `rb_rational_num'
bigdecimal.o: In function `is_one':
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2149: undefined reference to `rb_rational_num'
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2150: undefined reference to `rb_rational_den'
bigdecimal.o: In function `GetVpValueWithPrec':
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:238: undefined reference to `rb_rational_num'
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:242: undefined reference to `rb_rational_den'
bigdecimal.o: In function `BigMath_s_log':
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2924: undefined reference to `rb_rational_num'
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2924: undefined reference to `rb_rational_num'
bigdecimal.o: In function `BigDecimal_power':
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2256: undefined reference to `rb_rational_num'
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2262: undefined reference to `rb_rational_den'
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2263: undefined reference to `rb_rational_num'
bigdecimal.o: In function `is_zero':
C:\Ruby21-x64\lib\ruby\gems\2.1.0\gems\bigdecimal-1.2.6/bigdecimal.c:2126: undefined reference to `rb_rational_num'
collect2.exe: error: ld returned 1 exit status
make: *** [bigdecimal.so] Error 1
make failed, exit code 2
Gem files will remain installed in C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/bigdecimal-1.2.6 for inspection.
Results logged to C:/Ruby21-x64/lib/ruby/gems/2.1.0/extensions/x64-mingw32/2.1.0/bigdecimal-1.2.6/gem_make.out
Updating psych
Fetching: psych-2.0.12.gem (100%)
Building native extensions. This could take a while...
Successfully installed psych-2.0.12
Parsing documentation for psych-2.0.12
Installing ri documentation for psych-2.0.12
Installing darkfish documentation for psych-2.0.12
Done installing documentation for psych after 2 seconds
Parsing documentation for psych-2.0.12
Done installing documentation for psych after 1 seconds
Gems updated: bigdecimal psych
C:\Zend\Apache2\htdocs\u3c>gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.5
- RUBY VERSION: 2.1.5 (2014-11-13 patchlevel 273) [x64-mingw32]
- INSTALLATION DIRECTORY: C:/Ruby21-x64/lib/ruby/gems/2.1.0
- RUBY EXECUTABLE: C:/Ruby21-x64/bin/ruby.exe
- EXECUTABLE DIRECTORY: C:/Ruby21-x64/bin
- SPEC CACHE DIRECTORY: C:/Users/Emanuel/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: C:/ProgramData
- RUBYGEMS PLATFORMS:
- ruby
- x64-mingw32
- GEM PATHS:
- C:/Ruby21-x64/lib/ruby/gems/2.1.0
- C:/Users/Emanuel/.gem/ruby/2.1.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- c:\DevKit\bin
- c:\DevKit\mingw\bin
- C:\Program Files\ConEmu\ConEmu
- C:\Program Files\ConEmu
- C:\ProgramData\Oracle\Java\javapath
- C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
- C:\Windows\system32
- C:\Windows
- C:\Windows\System32\Wbem
- C:\Windows\System32\WindowsPowerShell\v1.0\
- C:\Program Files (x86)\MySQL\MySQL Utilities\
- C:\Program Files (x86)\MySQL\MySQL Utilities\Doctrine extensions for PHP\
- C:\Windows\System32\WindowsPowerShell\v1.0\
- C:\Zend\ZendServer\share\ZendFramework\bin
- C:\Zend\ZendServer\bin
- C:\Program Files\TortoiseHg\
- C:\ProgramData\ComposerSetup\bin
- C:\Program Files (x86)\Git\cmd
- C:\nodejs\
- C:\Ruby21-x64\bin
- C:\ProgramData\chocolatey\bin
- C:\Users\Emanuel\AppData\Roaming\npm
C:\Zend\Apache2\htdocs\u3c>
I also opened this: https://github.com/rubygems/rubygems/issues/1155
but I was told to come here.
Files
Updated by jonforums (Jon Forums) almost 10 years ago
Due to the same undefined reference link errors, 1.2.6 causes gem install failures in 32bit versions of 2.0.0p617 and 2.1.5p285 on my win8.1 x64 system.
Bigdecimal 1.2.6 installs fine in 64bit 2.1.5p277 on my ubuntu server 14.10 x64 vm.
Updated by usa (Usaku NAKAMURA) almost 10 years ago
- Status changed from Open to Assigned
- Assignee set to mrkn (Kenta Murata)
Jon Forums wrote:
Bigdecimal 1.2.6 installs fine in 64bit 2.1.5p277 on my ubuntu server 14.10 x64 vm.
Perhaps the installation was successful, but merely error has been delayed until run time :-P
rb_rational_num() and rb_rational_dem() are new APIs from 2.2.
So, Bigdecimal gem 1.2.6 never works with ruby 2.1 or earlier.
Updated by hsbt (Hiroshi SHIBATA) almost 10 years ago
- File bigdecimal-10796.patch bigdecimal-10796.patch added
bigdecimal-1.2.6 is only works ruby 2.2.0 or later.
gemspec of bigdecimal needs require_ruby_version section.
I attached tiny patch.
mrkn
Please confirm this issue and release bigdecimal-1.2.7 and yank 1.2.6.
Updated by mrkn (Kenta Murata) almost 10 years ago
- Status changed from Assigned to Closed
I've fixed the problem and released bigdecimal 1.2.7.
Please check the new version.
Thanks.
Updated by mrkn (Kenta Murata) almost 10 years ago
- Status changed from Closed to Assigned
- Assignee changed from mrkn (Kenta Murata) to naruse (Yui NARUSE)
- Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: REQUIRED
Please backport r49440 to ruby_2_2 branch.
Updated by usa (Usaku NAKAMURA) almost 10 years ago
- Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: REQUIRED to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED
Updated by usa (Usaku NAKAMURA) almost 10 years ago
Ah, is this change really required for ruby_2_2?
IMO this is needed only for bigdecimal gem.
We can build current ext/bigdecimal implementations bundled with each ruby branches.
Updated by SAnDAnGE (Emanuel D) almost 10 years ago
Problem fixed at least for the case I reported.
Thank you.
Updated by jonforums (Jon Forums) almost 10 years ago
Usaku NAKAMURA wrote:
Jon Forums wrote:
Bigdecimal 1.2.6 installs fine in 64bit 2.1.5p277 on my ubuntu server 14.10 x64 vm.
Perhaps the installation was successful, but merely error has been delayed until run time :-P
rb_rational_num() and rb_rational_dem() are new APIs from 2.2.
So, Bigdecimal gem 1.2.6 never works with ruby 2.1 or earlier.
:) I also thought Bigdecimal 1.2.6 should fail with 2.1.x due to using 2.2 APIs. I expected the following quicktest to fail, but oddly it worked. Perhaps the quicktest is too simple and fails to exercise the correct code path at runtime. Strange. I didn't see any win vs. nix #ifdef issues in bigdecimal.{c,h} but did not investigate ruby's main headers or configure.in.
jon@ubusvr64:~$ uname -a
Linux ubusvr64 3.16.0-29-generic #39-Ubuntu SMP Mon Dec 15 22:27:29 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
jon@ubusvr64:~$ gem li bigdecimal
*** LOCAL GEMS ***
bigdecimal (1.2.6)
jon@ubusvr64:~$ ruby --version
ruby 2.1.5p277 (2015-01-06 revision 49158) [x86_64-linux]
jon@ubusvr64:~$ irb -rbigdecimal
irb(main):001:0> BigDecimal.new('-1.0') / BigDecimal.new('0.0')
=> #<BigDecimal:21e2600,'-Infinity',9(36)>
Regardless, the 1.2.7 gem installs OK on win8.1 x64 in these 32bit rubies using mingw-w64 gcc 4.9.2
C:\Users\Jon\Documents\RubyDev\ruby-git>uru gem li bigdecimal
ruby 2.0.0p617 (2015-01-22 revision 49382) [i386-mingw32]
*** LOCAL GEMS ***
bigdecimal (1.2.7)
ruby 2.2.0p36 (2015-01-22 revision 49375) [i386-mingw32]
*** LOCAL GEMS ***
bigdecimal (1.2.7, 1.2.6)
ruby 2.1.5p285 (2015-01-22 revision 49383) [i386-mingw32]
*** LOCAL GEMS ***
bigdecimal (1.2.7)
Bigdecimal 1.2.7 gem also installs OK on my arch 3.18.4-1 x64 (mri 2.2.0p37) and ubuntu server 14.10 x64 (mri 2.1.5p77) systems.
Updated by naruse (Yui NARUSE) almost 10 years ago
- Status changed from Assigned to Closed
- Backport changed from 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONTNEED