Project

General

Profile

Actions

Feature #7427

closed

Update Rubygems

Added by mame (Yusuke Endoh) over 11 years ago. Updated over 11 years ago.

Status:
Closed
Target version:
[ruby-core:49950]

Description

Eric Hodel is planning to update Rubygems by the end of November.
See [ruby-core:48212].

Eric, what's the status?

--
Yusuke Endoh


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #7485: ruby cannot build on mingw32 or FreeBSD 8 due to missing __sync_val_compare_and_swapCloseddrbrain (Eric Hodel)12/01/2012Actions

Updated by mame (Yusuke Endoh) over 11 years ago

  • Priority changed from Normal to 5

Updated by drbrain (Eric Hodel) over 11 years ago

I plan to commit RubyGems by Thursday Pacific Time.

Updated by mame (Yusuke Endoh) over 11 years ago

  • Priority changed from 5 to 6

drbrain, good work!

The current trunk seems to work on many platforms [1], but unfortunately, usa told me that it does not work on windows [2].

[1] http://rubyci.org/
[2] http://ci.rubyinstaller.org/job/ruby-trunk-x64-test-all/317/console

Can you investigate and fix them?

--
Yusuke Endoh

Updated by usa (Usaku NAKAMURA) over 11 years ago

  • Status changed from Assigned to Closed

I hope... I've fixed... all problems on Windows... cause by rubygems.....

Eric, check these revisions and merge your tree:
r38064, r38065, r38066, r38071, r38074, r38075 and r37077

I'm uncertain about r38071 and r38074.
Eric, please take care of these two commits.

Have a good weekend, especially, mame-san :)
Good-bye until Monday!

Updated by drbrain (Eric Hodel) over 11 years ago

Thank you for your assistance, usa!

I imported all these fixes and your RDoc fix.

r38074 was good. r38071 is fine. The message may not be completely correct, but without a windows environment it is difficult to tell. (I tried setting one up with MinGW this morning but failed.)

I also update r38075 for ruby 1.8.7 compatibility. Hopefully I won't need to support it soon!

Updated by jonforums (Jon Forums) over 11 years ago

r38074 was good. r38071 is fine. The message may not be completely correct, but without a windows environment it is difficult to tell. (I tried setting one up with MinGW this morning but failed.)

Eric, what windows version were you using and what specifically failed with your mingw setup this morning? Hopefully one of us can quickly get you up and running.

I'd really like to see you get a workable windows setup (vm or non-vm) given all you work on.

Assuming the problem wasn't standing up a windows system, here's a quick setup similar to what I use on my win7 32bit system. There are other ways, but I prefer this method as it gives more flexibility on tweaking ruby source.

  1. Separately git clone rubyinstaller build recipes and ruby into

c:\projects\rubyinstaller
c:\projects\ruby

  1. Ensure any antivirus real-time protection (eg - windows defender, avg, etc) excludes both of the dirs from (1)

  2. Checkout whatever ruby branch you want in c:\projects\ruby.

  3. cd c:\projects\rubyinstaller

    rake clean
    rake ruby19 local=c:\projects\ruby dkver=mingw64-32-4.7.2

    rake devkit:sh
    export PATH=/c/projects/rubyinstaller/sandbox/ruby19_mingw/bin:$PATH
    cd sandbox/ruby19_build/
    make test
    make test-all

This will download all the toolchain parts and pre-built native libs and try to build everything with mingw-w64 32bit gcc 4.7.2. Beware of network issues causing download problems for the artifacts and failing the build. Quickest way is to check in c:\projects\rubyinstaller\downloads for any 0-byte files, delete them, and re-run rake ruby19 local=...

If you're trying on a 64bit system, you'll need to use dkver=mingw64-64-4.7.2. I don't build on a 64bit system yet, but Hiroshi or Luis can add more info if needed.

Updated by drbrain (Eric Hodel) over 11 years ago

=begin
I have Windows XP running in VirtualBox. (I don't have a license for a newer version.) I believe I have it set up for 32bit operation, but I can't see how to check in VirtualBox or Windows.

I downloaded mingw-inst-get-20120426 and told it to use the latest packages upon install.

I have mingw32-gcc 4.7.2

When running make I get a link failure (typed by hand):

thread.o:thread.c:(.text=0x3326): undefined reference to `__sync_val_compare_and_swap_4'
collect2.exe: error: ld returned 1 exit status

I understand this function is a GCC builtin that isn't present on MinGW, but I didn't have time to investigate further due to lunch and whatnot.

I'll see what I can do with your setup instructions.
=end

Updated by jonforums (Jon Forums) over 11 years ago

Don't worry about installing a toolchain and double check that you have a minimal PATH and clean env vars; no pointers to an existing cygwin or mingw install.

We've made the build recipes self-contained so you don't have to worry about installing toolchains, using env vars to influence configure, etc. The rake ruby19 ... command first downloads all it needs into a download cache and then extracts, configures, and builds everything in a sandbox. There's other things (rake -T) you can do (build with a toolchain listed in rake devkit:ls) but my quick start should work.

re: WinXP 32bit...I don't have an XP system any more but I believe Hiroshi has semi-recently built on XP. If you run into compile/link errors with mingw64-32-4.7.2, do a rake clean (keeps the file download cache) followed by rake ruby19 local=c:\projects\ruby dkver=mingw-32-4.6.2 to build with the mingw.org toolkit rather than the mingw-w64 toolkit. They both should work even though there are header differences. The key (irrelevant to your scenario but an fyi) is to not mix-n-match building ruby with one toolkit while building a native gem with a different toolkit.

Good luck.

Hiroshi...any issues you've had building on XP 32bit I've forgotten?

Updated by drbrain (Eric Hodel) over 11 years ago

The RubyInstaller build tools are fantastic!

Unfortunately I fail at exactly the same spot, undefined reference to __sync_val_compare_and_swap_4.

Looking closer, ruby_atomic.h checks HAVE_GCC_ATOMIC_BUILTINS and assumes the one I need is there even though it is missing.

There is a check in configure for linux for this builtin, but not for mingw32.

Removing HAVE_GCC_ATOMIC_BUILTINS from config.h allows linking of miniruby

Updated by luislavena (Luis Lavena) over 11 years ago

drbrain (Eric Hodel) wrote:

The RubyInstaller build tools are fantastic!

Unfortunately I fail at exactly the same spot, undefined reference to __sync_val_compare_and_swap_4.

Looking closer, ruby_atomic.h checks HAVE_GCC_ATOMIC_BUILTINS and assumes the one I need is there even though it is missing.

That is weird, mingw-w64 provides that, which is the compiler we have been using for Ruby 2.0 (GCC 4.7.2)

Perhaps your other mingw-inst-get installation got in the way?

There is a check in configure for linux for this builtin, but not for mingw32.

Removing HAVE_GCC_ATOMIC_BUILTINS from config.h allows linking of miniruby

I'll take a look later tonight. I also have a drop and use package that contains the compilers, a base Ruby and everything to get you up and running quickly.

Updated by drbrain (Eric Hodel) over 11 years ago

It seems that using rubyinstaller downloaded its own compiler, so I don't think it got in the way. Since configure doesn't check for these GCC builtins I will submit a patch to check for them momentarily.

Updated by jonforums (Jon Forums) over 11 years ago

Odd. On both my trunk (mingw-w64 gcc 4.7.2) and ruby_1_9_3 (mingw.org gcc 4.6.2) builds, HAVE_GCC_ATOMIC_BUILTINS is defined and all is well on 32bit Win7. I think something else is interferring.

I'm going to try to talk a friend into letting me futz with her WinXP box and try from a fresh start.

From a Command Prompt, would you type set and put it in a gist along with ruby --version and gem env for good measure?

Updated by jonforums (Jon Forums) over 11 years ago

drbrain (Eric Hodel) wrote:

set and ruby -v: http://paste.segment7.net/ace.html

Looks ok.

gem env: http://paste.segment.net/acf.html

Bad link..should be http://paste.segment7.net/acf.html (missing 7). This in GEM_PATHS is troubling but may be a red-herring since PATH doesn't appear to have other mingw installs:

C:/MinGW/msys/1.0/home/drbrain/.gem/ruby/1.9.1

Try the following on this snippet http://pastie.org/5460872 copied to c:\projects\rubyinstaller as gcc_atomic.c

cd c:\projects\rubyinstaller
rake devkit dkver=mingw64-32-4.7.2
rake devit:sh
gcc --version # should be gcc.exe (rubenvb-4.7.2-release) 4.7.2
gcc -Wall -o atomics.exe gcc_atomic.c
atomics.exe # should be Got 1

If you try the same but with rake devkit dkver=mingw-32-4.6.2 you're rewarded with:

C:\Users\Jon\AppData\Local\Temp\ccgG9KBw.o:gcc_atomic.c:(.text+0x2e): undefined reference to `__sync_val_compare_and_swap_4'
collect2: ld returned 1 exit status

Don't know what this means just yet since I can build with both mingw64-32-4.7.2 and mingw-32-4.6. Back in awhile after I play on XP.

When you run the following, do you get something similar? Specifically the front part of PATH.

C:\projects\rubyinstaller-git>rake devkit dkver=mingw64-32-4.7.2
mkdir -p C:/projects/rubyinstaller-git/sandbox/.checkpoints
touch C:/projects/rubyinstaller-git/sandbox/.checkpoints/.msys-download
...SNIP...
touch C:/projects/rubyinstaller-git/sandbox/.checkpoints/.mingw-extract
rm -r sandbox/devkit/mingw/mingw32
touch C:/projects/rubyinstaller-git/sandbox/.checkpoints/.mingw-prepare

C:\projects\rubyinstaller-git>rake devkit:sh
Temporarily enhancing PATH to include DevKit...
sh-3.1$ echo $PATH
/usr/bin:/usr/mingw/bin:/c/Program Files/CollabNet/Subversion Client:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:
/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:
/c/Program Files/Microsoft Windows Performance Toolkit/:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/tools:
/c/Python27/Scripts:/c/Python27:/c/ruby193/bin:/c/scala/bin:/c/lua/bin:/c/groovy/bin:/c/gnuwin32/curl/bin:/c/gnuwin32/diff/bin:
/c/gnuwin32/grep/bin:/c/gnuwin32/findutils/bin:/c/gnuwin32/sed/bin:/c/gnuwin32/gawk/bin:/c/gnuwin32/less/bin:/c/gnuwin32/upx/bin:
/c/gnuwin32/coreutils/bin:/c/Apps/android-sdk/tools:/c/Apps/android-sdk/platform-tools:/c/Apps/Wix:/c/Apps/git/cmd:/c/Apps/Chocolatey/bin:.

sh-3.1$ gcc --version
gcc.exe (rubenvb-4.7.2-release) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Updated by jonforums (Jon Forums) over 11 years ago

I can build 2.0.0-preview1 on 32bit XP SP3 (right click My Computer -> properties) using the mingw-32-4.6.2 toolchain. make test has 0 errors, make test-all has 7 failures, 3 errors, 86 skips.

Unfortunately, our mingw64-32-4.7.2 toolchain blows up because the first conftest.c fails with an internal compiler error and an unhelpful log msg. And it seems rake devkit:sh behaves differently on XP and Win7. FYI for your scenario, but the gcc 4.7.2 issue is critical for us (rubyinstaller) to repro, find and fix.

Use the following instead of my previous versions. Remember to run a rake clean to clean out the build sandbox (devkit, ruby, libs, tools) unless you're in a C-tweak -> rebuild cycle and don't want to rebuild everything.

rake ruby19 local=c:\projects\ruby dkver=mingw-32-4.6.2
rake devkit:sh dkver=mingw-32-4.6.2

I'm out for the evening. If this doesn't get you moving again, hopefully one of the others will saunter in with a solution.

Hey, I'm impressed. A VB vm on your Mac running XP and checking out the two-step that can be mingw. What's this world coming to ;)

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0