64bit support status

334 views
Skip to first unread message

kou

unread,
May 4, 2011, 10:56:01 AM5/4/11
to RubyInstaller
Hi,

I have a library(*1) that requires 64bit OS.

(*1) groonga - fulltext search engine and column store: http://groonga.org/
rroonga - Ruby bindings for groonga: http://groonga.rubyforge.org/
Both URLs are Japanese only. Sorry. They will support English
soon.

The library just supports Linux for now but it will support Windows.
I need x64-mingw64 RubyInstaller at that time. :-)


Could you tell me about the current 64bit support status?
I may help you about it.

Here are problems that I met:

- Ruby trunk can't be cross compiled. (*2)
- rake-compiler doesn't support Ruby trunk.
I have a commit for it: https://github.com/kou/rake-compiler/commit/d74c75e9f0efd3cff71e5064f811f73d7d849110
I will emit a pull request soon. :-)
- Ruby installer for MinGW build doesn't exit. (Ruby package that uses
msvcrt.dll)
(NougakuDo uses MSVC. It uses msvcr100.dll not msvcrt.dll. We can't
use both of them at a time.
http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx )


ref.: https://github.com/luislavena/rake-compiler/pull/39


(*2) I got the following error but Luislavena didn't met it.
compiling encdb.c
linking encoding encdb.so
enc/encdb.o: In function `Init_encdb':
/home/kou/.rake-compiler/builds/ruby-1.9.3/./encdb.h:1: undefined
reference to `rb_encdb_declare'
/home/kou/.rake-compiler/builds/ruby-1.9.3/./encdb.h:2: undefined
reference to `rb_encdb_declare'
/home/kou/.rake-compiler/builds/ruby-1.9.3/./encdb.h:3: undefined
reference to `rb_encdb_declare'
/home/kou/.rake-compiler/builds/ruby-1.9.3/./encdb.h:4: undefined
reference to `rb_encdb_declare'
/home/kou/.rake-compiler/builds/ruby-1.9.3/./encdb.h:5: undefined
reference to `rb_encdb_declare'
...

configure arguments: --host=x86_64-w64-mingw32 --target=x86_64-w64-
mingw32 --build=x86_64-pc-linux-gnu --enable-shared --disable-install-
doc --without-tk --without-tcl --prefix=/home/kou/.rake-compiler/ruby/
ruby-1.9.3


Thanks,
--
kou

Dr Nic Williams

unread,
May 4, 2011, 11:18:37 AM5/4/11
to rubyin...@googlegroups.com
Possibly try the 64b JRuby installer? JRuby now attempts to support C extensions. You might have luck with that?

Nic

-- 
Dr Nic Williams
Engine Yard, VP Technology
SV Ruby Club, President

--
You received this message because you are subscribed to the Google Groups "RubyInstaller" group.
To post to this group, send email to rubyin...@googlegroups.com.
To unsubscribe from this group, send email to rubyinstalle...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyinstaller?hl=en.

Jon

unread,
May 4, 2011, 12:06:45 PM5/4/11
to rubyin...@googlegroups.com
> Could you tell me about the current 64bit support status?
> I may help you about it.

Luis and/or Bosko may also comment, but we are working toward a 64-bit RubyInstaller that will most likely use a 64-bit toolkit from http://mingw-w64.sourceforge.net/

As part of our 64-bit efforts we've been testing a 32-bit version of mingw-w64 toolkit and have made mods to our build recipes to fix some of the issues. We believe these mods (and others) will be useful for the 64-bit toolkit.

https://github.com/oneclick/rubyinstaller/commit/d04878a6bc56aa96bd39098f4a42038f7756b6be


If you're up for trying to build a 64-bit Ruby from source using our build recipes, we'd love to have the help and feedback.

Here's what I would suggest:

1) clone our git://github.com/oneclick/rubyinstaller.git repo

2) create a new branch and update https://github.com/oneclick/rubyinstaller/blob/master/config/compilers/mingw64.rb#L36-52 similar to the 32-bit version above it and make sure you also update https://github.com/oneclick/rubyinstaller/blob/master/config/compilers/001_dkcompiler_init.rb#L8-17 to include a "dkver name" for the 64-bit toolchain. For example, call it "mingw64-64-4.5.3"

3) try building a 64-bit Ruby with no dependencies using something similar to the following cmd line from the root dir of your cloned rubyinstaller repo. Note that this assumes you have a local Ruby source repo locally and have it sitting on the branch you want to build. For example, I have a clone of https://github.com/ruby/ruby at C:\Users\Jon\Documents\RubyDev\ruby-git.

rake ruby19 local=c:\path\to\your\ruby\source\repo dkver=mingw64-64-4.5.3 nodeps=1


Don't hesitate to ask any further questions on how to update or use the recipes. If you've not used our recipes before, it will take some time to download all the build artifacts and you may have to correct some issues caused by network errors. For example, if a network error causes a 0-byte artifact in the downloads/ subdir you'll need to delete the artifact and try again.


Jon

---
blog: http://jonforums.github.com/
twitter: @jonforums

Jon

unread,
May 4, 2011, 12:18:25 PM5/4/11
to rubyin...@googlegroups.com
Hit send too early...to be clear that I _haven't_ tried these steps to confirm they actually work...you'll likely run into other issues (eg - toolkit deps?)

Kouhei Sutou

unread,
May 4, 2011, 10:50:40 PM5/4/11
to rubyin...@googlegroups.com
Hi,

2011/5/5 Dr Nic Williams <drnicw...@gmail.com>:


> Possibly try the 64b JRuby installer? JRuby now attempts to support C
> extensions. You might have luck with that?
> Nic

Thanks for your comment!
I want to build gems that include built binaries on my Debian GNU/Linux.
I need to add JRuby C extension support to rake-compiler first...


Thanks,
--
kou

Kouhei Sutou

unread,
May 4, 2011, 11:03:39 PM5/4/11
to rubyin...@googlegroups.com
Hi,

2011/5/5 Jon <jon.f...@gmail.com>:


>> Could you tell me about the current 64bit support status?
>> I may help you about it.
>
> Luis and/or Bosko may also comment, but we are working toward a 64-bit RubyInstaller that will most likely use a 64-bit toolkit from http://mingw-w64.sourceforge.net/
>
> As part of our 64-bit efforts we've been testing a 32-bit version of mingw-w64 toolkit and have made mods to our build recipes to fix some of the issues.  We believe these mods (and others) will be useful for the 64-bit toolkit.
>
> https://github.com/oneclick/rubyinstaller/commit/d04878a6bc56aa96bd39098f4a42038f7756b6be
>
>
> If you're up for trying to build a 64-bit Ruby from source using our build recipes, we'd love to have the help and feedback.

Thanks!

> Here's what I would suggest:

It's helpful.
I wanted to work on my Debian GNU/Linux but it seems that it's too difficult...
OK, I'll try it on Cygwin.


Thanks,
--
kou

Luis Lavena

unread,
May 5, 2011, 8:50:20 AM5/5/11
to rubyin...@googlegroups.com
On Thu, May 5, 2011 at 12:03 AM, Kouhei Sutou <kou...@gmail.com> wrote:
>
> It's helpful.
> I wanted to work on my Debian GNU/Linux but it seems that it's too difficult...
> OK, I'll try it on Cygwin.
>

I've working on a small project to ease the process of cross
compilation. That project will be used by RubyInstaller in a later
phase to compile all the building blocks.

However, to reach that point takes some time, specially due the
dependency tree Ruby has.

This is not ready for consumption, but one of the targets is be able
to cross compile the full RubyInstaller stack.

--
Luis Lavena
AREA 17
-
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry

rogerdpack

unread,
May 5, 2011, 8:51:31 AM5/5/11
to RubyInstaller
> I have a library(*1) that requires 64bit OS.

It requires a 64 bit OS and 64 bit ruby?
-r

Jon

unread,
May 5, 2011, 10:19:30 AM5/5/11
to rubyin...@googlegroups.com
> > As part of our 64-bit efforts we've been testing a 32-bit version of mingw-w64 toolkit and have made mods to our build recipes to fix some of the issues.  We believe these mods (and others) will be useful for the 64-bit toolkit.
> >
> > https://github.com/oneclick/rubyinstaller/commit/d04878a6bc56aa96bd39098f4a42038f7756b6be
> >
> >
> > If you're up for trying to build a 64-bit Ruby from source using our build recipes, we'd love to have the help and feedback.
>
> Thanks!
>
> > Here's what I would suggest:
>
> It's helpful.
> I wanted to work on my Debian GNU/Linux but it seems that it's too difficult...
> OK, I'll try it on Cygwin.

Yeh, I saw you were working on Linux but I had hoped you also had access to a Win7 64-bit system and I could somehow entice you to investigate building 64-bit from Win7 ;)

IMO, adding Cygwin to the mix is an unwelcome dependency/complexity.


tl;dr from here on....


While Luis has shared that he's working on a tasty little project that will be folded back into the RubyInstaller, I'd also like to see what short-term mods could be made to the existing recipes to build 64-bit Ruby (on Windows with a 64-bit mingw-w64 toolchain) and some subset of it's dependencies.

I think there's value in tweaking the existing recipes to first get a "no deps" 64-bit Ruby build, then tweak to get a "minimal deps" (libffi, libyaml, zlib, openssl) 64-bit build. This will help flush out any Windows/mingw-w64 specific issues with the Ruby source/build infrastructure and allow more time to test, stabilize, and optimize a 64-bit RubyInstaller.

I don't think the short-term recipe mods necessarily duplicate efforts with what Luis is working on...and we may learn things that are relevant to Luis' project.

Breaking the effort down into smaller pieces allows multiple people to hack on 64-bit support without feeling the need to solve the entire problem at once. IMO this is the strongest reason as each of us only has so much time and energy.

A few areas come to mind:

* mods to the msys/mingw toolkit [1] and interpreter [2] recipes (maybe configure.in?) to get a no deps 64-bit build using x86_64-w64-mingw32
* build each of the "minimal deps" libraries (libffi,libyaml,zlib,openssl) standalone with x86_64-w64-mingw32 to determine what specific mods need to be made their build recipes https://github.com/oneclick/rubyinstaller/tree/master/recipes/dependencies


[1] https://github.com/oneclick/rubyinstaller/blob/master/config/devkit.rb#L27-64
https://github.com/oneclick/rubyinstaller/blob/master/config/compilers/mingw64.rb#L36
https://github.com/oneclick/rubyinstaller/blob/master/config/compilers/001_dkcompiler_init.rb#L17
[2] https://github.com/oneclick/rubyinstaller/blob/master/recipes/interpreter/ruby19.rake#L106-111

Kouhei Sutou

unread,
May 5, 2011, 10:40:13 AM5/5/11
to rubyin...@googlegroups.com
Hi,

2011/5/5 Luis Lavena <luisl...@gmail.com>:

> I've working on a small project to ease the process of cross
> compilation. That project will be used by RubyInstaller in a later
> phase to compile all the building blocks.

It's very interesting.


Thanks,
--
kou

Kouhei Sutou

unread,
May 5, 2011, 10:41:09 AM5/5/11
to rubyin...@googlegroups.com
Hi,

2011/5/5 rogerdpack <roger...@gmail.com>:


>> I have a library(*1) that requires 64bit OS.
>
> It requires a 64 bit OS and 64 bit ruby?

Yes. If I use 32 bit Ruby, the library must be 32 bit.


Thanks,
--
kou

Luis Lavena

unread,
May 5, 2011, 10:45:23 AM5/5/11
to rubyin...@googlegroups.com

I think Roger question was more towards "why this library requires to
be in 64bits?" and "can you compile it in 32bits instead for stable
RubyInstaller?"

(rough translation from what I think Roger meant to ask)

Kouhei Sutou

unread,
May 5, 2011, 10:53:09 AM5/5/11
to rubyin...@googlegroups.com
Hi,

2011/5/5 Jon <jon.f...@gmail.com>:

>> I wanted to work on my Debian GNU/Linux but it seems that it's too difficult...
>> OK, I'll try it on Cygwin.
>
> Yeh, I saw you were working on Linux but I had hoped you also had access to a Win7 64-bit system and I could somehow entice you to investigate building 64-bit from Win7 ;)
>
> IMO, adding Cygwin to the mix is an unwelcome dependency/complexity.

Oh...

Here is my work today:
https://github.com/kou/rubyinstaller/tree/mingw-w64

- I could build for Ruby trunk.
> ruby -v
ruby 1.9.3dev (2011-05-05 trunk 31439) [x64-mingw32]

- I couldn't build zlib.so Ruby bindings.
We also need to build zlib1.dll or download x64 binary.
gnome.org has it: http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/

- I could build psych.so.
> ruby.exe -e 'puts require "psych"'
true

- I could build fiddle.so.
> ruby.exe -e 'puts require "fiddle"'
true

- I could build openssl.so.
> ruby.exe -e 'puts require "openssl"'
true


I hope that you check my work today.


Thanks,
--
kou

Luis Lavena

unread,
May 5, 2011, 10:57:24 AM5/5/11
to rubyin...@googlegroups.com
On Thu, May 5, 2011 at 11:53 AM, Kouhei Sutou <kou...@gmail.com> wrote:
> Hi,
>
> Oh...
>
> Here is my work today:
> https://github.com/kou/rubyinstaller/tree/mingw-w64
>
> - I could build for Ruby trunk.
>> ruby -v
> ruby 1.9.3dev (2011-05-05 trunk 31439) [x64-mingw32]
>
> - I couldn't build zlib.so Ruby bindings.
> We also need to build zlib1.dll or download x64 binary.
> gnome.org has it: http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/
>

Yes, we are relying on 32bits binaries and not compiling ourselves, it fails.

> - I could build psych.so.
>> ruby.exe -e 'puts require "psych"'
> true
>
> - I could build fiddle.so.
>> ruby.exe -e 'puts require "fiddle"'
> true
>
> - I could build openssl.so.
>> ruby.exe -e 'puts require "openssl"'
> true
>

All the above works since libyaml, libffi and openssl respectively are
compiled by RubyInstaller recipes.

> I hope that you check my work today.
>

I'll take a look and see how we can merge them. OpenSSL is
particularly a PITA since it requires a specific flag during configure
process to make it right...

> Thanks,

Thanks to you!

Kouhei Sutou

unread,
May 5, 2011, 10:57:52 AM5/5/11
to rubyin...@googlegroups.com
Hi,

2011/5/5 Luis Lavena <luisl...@gmail.com>:

>> 2011/5/5 rogerdpack <roger...@gmail.com>:


>>>> I have a library(*1) that requires 64bit OS.
>>>
>>> It requires a 64 bit OS and 64 bit ruby?
>>
>> Yes. If I use 32 bit Ruby, the library must be 32 bit.
>>
>
> I think Roger question was more towards "why this library requires to
> be in 64bits?" and "can you compile it in 32bits instead for stable
> RubyInstaller?"

Sorry. I misunderstood.

The library uses large logical memory space by CreateFileMapping().
We cannot use large logical memory space on a 32 bit OS.


Thanks,
--
kou

Jon

unread,
May 5, 2011, 11:24:37 AM5/5/11
to rubyin...@googlegroups.com

Fantastic! I'm also taking a quick hi-level look of

https://github.com/kou/rubyinstaller/compare/master...mingw-w64


A couple of questions:

1) what Windows system are you building on?
2) what happens when you type "rake devkit:sh" after a build? it should bring you into a msys shell and if it does would you type something like the following and see what happens?

export PATH=/c/path/to/your/sandbox/ruby19_mingw/bin:$PATH
ruby --version
cd sandbox/ruby19_build
make test-all TESTS='openssl psych fiddle'

I'm particularly interested in the openssl test results as I see you removed the 'mingw' configure option and I wonder how OpenSSL's Configure (perl) handles this case. Although, it seems to have built fine.

Kouhei Sutou

unread,
May 5, 2011, 11:30:27 AM5/5/11
to rubyin...@googlegroups.com
Hi,

2011/5/6 Jon <jon.f...@gmail.com>:

> A couple of questions:
>
> 1) what Windows system are you building on?

Windows 7 64bit Home edition and Cygwin 1.7.

> 2) what happens when you type "rake devkit:sh" after a build? it should bring you into a msys shell and if it does would you type something like the following and see what happens?
>
> export PATH=/c/path/to/your/sandbox/ruby19_mingw/bin:$PATH
> ruby --version
> cd sandbox/ruby19_build
> make test-all TESTS='openssl psych fiddle'

--
export PATH=$PWD/sandbox/ruby19_mingw/bin:$PATH
ruby --version


ruby 1.9.3dev (2011-05-05 trunk 31439) [x64-mingw32]

cd sandbox/ruby19_build
make test-all TESTS='openssl psych fiddle'

./miniruby.exe -I../../../ruby/lib -I. -I.ext/common
../../../ruby/tool/runruby.rb --extout=.ext --
"../../../ruby/test/runner.rb" --ruby="./miniruby.exe
-I../../../ruby/lib -I. -I.ext/common ../../../ruby/tool/runruby.rb
--extout=.ext --" openssl psych fiddle
bash.exe: warning: could not find /tmp, please create!
Run options: "--ruby=./miniruby.exe -I../../../ruby/lib -I.
-I.ext/common ../../../ruby/tool/runruby.rb --extout=.ext --"

# Running tests:

..........................................................................................................................S....................................................................................................................................................................................................................................................................................................................................................................................................................................................

Finished tests in 15.178826s, 36.8276 tests/s, 170.1713 assertions/s.

1) Skipped:
test_not_started_session(OpenSSL::TestSSL)
[c:/cygwin/home/kou/work/ruby/ruby/test/openssl/test_ssl.rb:158]:
non socket argument of SSLSocket.new is not supported on this platform

559 tests, 2583 assertions, 0 failures, 0 errors, 1 skips
--

> I'm particularly interested in the openssl test results as I see you removed the 'mingw' configure option and I wonder how OpenSSL's Configure (perl) handles this case.  Although, it seems to have built fine.

I removed 'mingw' option and added 'mingw64' option.


Thanks,
--
kou

Luis Lavena

unread,
May 5, 2011, 11:31:18 AM5/5/11
to rubyin...@googlegroups.com
On Thu, May 5, 2011 at 12:24 PM, Jon <jon.f...@gmail.com> wrote:
>
> I'm particularly interested in the openssl test results as I see you removed the 'mingw' configure option and I wonder how OpenSSL's Configure (perl) handles this case.  Although, it seems to have built fine.
>

The option got moved to DevKit helpers method:

https://github.com/kou/rubyinstaller/blob/mingw-w64/config/devkit.rb#L80

based on bits it uses mingw or mingw64 option

Jon

unread,
May 5, 2011, 11:47:06 AM5/5/11
to rubyin...@googlegroups.com
> > 2) what happens when you type "rake devkit:sh" after a build? it should bring you into a msys shell and if it does would you type something like the following and see what happens?
> >
> > export PATH=/c/path/to/your/sandbox/ruby19_mingw/bin:$PATH
> > ruby --version
> > cd sandbox/ruby19_build
> > make test-all TESTS='openssl psych fiddle'
>
> --
> export PATH=$PWD/sandbox/ruby19_mingw/bin:$PATH
> ruby --version
> ruby 1.9.3dev (2011-05-05 trunk 31439) [x64-mingw32]
> cd sandbox/ruby19_build
> make test-all TESTS='openssl psych fiddle'
>
> ....[SNIP]...

>
> Finished tests in 15.178826s, 36.8276 tests/s, 170.1713 assertions/s.
>
> 1) Skipped:
> test_not_started_session(OpenSSL::TestSSL)
> [c:/cygwin/home/kou/work/ruby/ruby/test/openssl/test_ssl.rb:158]:
> non socket argument of SSLSocket.new is not supported on this platform
>
> 559 tests, 2583 assertions, 0 failures, 0 errors, 1 skips


Great! How does "make test" work?

I'm guessing a recipes/dependencies/zlib.rake recipe needs to be created that kicks in only for 64-bit builds.


> > I'm particularly interested in the openssl test results as I see you removed the 'mingw' configure option and I wonder how OpenSSL's Configure (perl) handles this case.  Although, it seems to have built fine.
>
> I removed 'mingw' option and added 'mingw64' option.

Sorry, I see it now.

A couple more...

1) should recipes/dependencies/ffi.rake have a "32-bit guard" to prevent the patch from being applied to 32-bit builds?
2) do you expect any problems if Cygwin is _not_ used?


Your results look really great so far...thank you Kou!

Jon

unread,
May 5, 2011, 12:09:08 PM5/5/11
to rubyin...@googlegroups.com
> Great! How does "make test" work?

FWIW, on trunk in 32-bit mode on the 39th (??) test of test_thread.rb (test/ruby/test_thread.rb) takes forever and appears to hang my system...but it finally does complete with no errors. I haven't looked into it.

Kouhei Sutou

unread,
May 5, 2011, 11:45:35 PM5/5/11
to rubyin...@googlegroups.com
Hi,

2011/5/6 Jon <jon.f...@gmail.com>:

> Great!  How does "make test" work?

Here is a result of "make test". But I disabled test/ruby/test_thread.rb by
- class TestThread < Test::Unit::TestCase
+ class TestThread # < Test::Unit::TestCase
because it takes forever without CPU time as you said.

--
export PATH=$PWD/sandbox/ruby19_mingw/bin:$PATH
ruby --version

cd sandbox/ruby19_build
make test
test_attr.rb ..
test_autoload.rb ...........
test_block.rb .......................................................
test_class.rb .............................................
test_eval.rb ....................................
test_exception.rb .................................
test_finalizer.rb .
test_flip.rb .
test_flow.rb ................................................
test_fork.rb ....
test_gc.rb ..
test_io.rb .................
test_jump.rb .............................
test_literal.rb
......................................................................................................................................................
test_load.rb ..
test_marshal.rb .
test_massign.rb ..................................
test_method.rb .............................................................................................................................................................................................................................
test_objectspace.rb ...
test_proc.rb ..................................
test_struct.rb .
test_syntax.rb ..........................................................................................................................................................
test_thread.rb ..................................................
PASS all 934 tests


./miniruby.exe -I../../../ruby/lib -I. -I.ext/common
../../../ruby/tool/runruby.rb --extout=.ext --

"../../../ruby/bootstraptest/runner.rb" --ruby="ruby.exe"
../../../ruby/KNOWNBUGS.rb


bash.exe: warning: could not find /tmp, please create!

2011-05-06 10:10:56 +0900
Driver is ruby 1.9.3dev (2011-05-05 trunk 31439) [x64-mingw32]
Target is ruby 1.9.3dev (2011-05-05 trunk 31439) [x64-mingw32]


KNOWNBUGS.rb .
PASS all 1 tests
--

And here is a result of "make test-all". I disabled test/dl/test_cptr.rb by
- class TestCPtr < TestBase
+ class TestCPtr # < TestBase
because the test was crashed.

--
make test-all


./miniruby.exe -I../../../ruby/lib -I. -I.ext/common
../../../ruby/tool/runruby.rb --extout=.ext --
"../../../ruby/test/runner.rb" --ruby="./miniruby.exe
-I../../../ruby/lib -I. -I.ext/common ../../../ruby/tool/runruby.rb
--extout=.ext --"

bash.exe: warning: could not find /tmp, please create!

c:/cygwin/home/kou/work/ruby/ruby/test/csv/test_features.rb: cannot
load such file -- zlib

c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_win32ole_event.rb
skipped(ActiveX Data Object Library not found.)

c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_win32ole_variant_outarg.rb
skipped(ActiveX Data Object Library not found.)

c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_word.rb
skipped(Microsoft Word not found.)
c:/cygwin/home/kou/work/ruby/ruby/test/open-uri/test_open-uri.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rake/test_package_task.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rexml/test_order.rb: cannot
load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_config.rb: cannot
load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem.rb: cannot
load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_builder.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_build_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_cert_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_check_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_contents_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_dependency_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_environment_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_fetch_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_generate_index_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_install_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_list_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_lock_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_outdated_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_owner_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_pristine_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_push_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_query_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_server_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_sources_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_specification_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_stale_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_uninstall_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_unpack_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_update_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_commands_which_command.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_command_manager.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_config_file.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_dependency.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_dependency_installer.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_dependency_list.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_doc_manager.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_ext_configure_builder.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_ext_ext_conf_builder.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_ext_rake_builder.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_format.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_gemcutter_utilities.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_gem_path_searcher.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_gem_runner.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_indexer.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_installer.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_install_update_options.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_local_remote_options.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_package_tar_header.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_package_tar_input.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_package_tar_output.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_package_tar_reader.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_package_tar_reader_entry.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_package_tar_writer.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_package_task.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_platform.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_remote_fetcher.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_requirement.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_security.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_server.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_silent_ui.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_source_index.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_specification.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_spec_fetcher.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_stream_ui.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_text.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_uninstaller.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_validator.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_version.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_gem_version_option.rb:
cannot load such file -- zlib
c:/cygwin/home/kou/work/ruby/ruby/test/rubygems/test_kernel.rb: cannot
load such file -- zlib


Run options: "--ruby=./miniruby.exe -I../../../ruby/lib -I.
-I.ext/common ../../../ruby/tool/runruby.rb --extout=.ext --"

# Running tests:

.................................S..........................................................................................................................................................................................................E.S..............................................................................................................................................................................................................................................................................................................................S..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................F....................F.....F.E......F..F..........F.F..F...FFFFFFF............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................E.....E...............................................F.........................................................................................................................................................................................F..............................................................................................................................................................................................................................................S..SSS.....SS......................................................................................................................................................S........S....S...........S....................................S.............................SS............................................................................................................................................................................................................................................FFFF.FFF...................................................................F...........................S..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................Fc:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_process.rb:443:
warning: cannot close fd before spawn

c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_win32ole_variant.rb:263:TestWIN32OLE_VARIANT.test_s_new_with_i8_byref
is skipped

c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_win32ole_variant.rb:275:TestWIN32OLE_VARIANT.test_s_new_with_ui8_byref
is skipped.
........................................................................................................................................................................................................................................F..............E...............................................................................................................SSSSSSSSSS................................................................................................................................................................................................S...................................................................................................................................S.........SS...................................................................S.....SS.SS.S.S............................................................................................................................................................................................................................................................................F...F........................................................................................................................................................................................................................................................................................................S....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................S....................................................................................................................................................................................................................................................................E........................................................................S................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................E.................................................................F.......................................................................................................................................................................................................................................................................................................................................................................................................F..............................................................................................................F......................................................................................................................................................................................................................E..............................................................................

Finished tests in 655.372752s, 12.9590 tests/s, 2859.8382 assertions/s.

1) Skipped:
test_0002_correctly_guess_the_label_width_even_when_not_given(Benchmark::bm)
[c:/cygwin/home/kou/work/ruby/ruby/test/benchmark/test_benchmark.rb:85]:
not_implemented

2) Error:
test_initialize_noargs(DL::TestHandle):
DL::DLError: unknown symbol "rb_str_new"
c:/cygwin/home/kou/work/ruby/ruby/test/dl/test_handle.rb:110:in `[]'
c:/cygwin/home/kou/work/ruby/ruby/test/dl/test_handle.rb:110:in
`test_initialize_noargs'

3) Skipped:
test_static_sym(DL::TestHandle)
[c:/cygwin/home/kou/work/ruby/ruby/test/dl/test_handle.rb:25]:
DL::Handle.sym is not supported

4) Skipped:


test_not_started_session(OpenSSL::TestSSL)
[c:/cygwin/home/kou/work/ruby/ruby/test/openssl/test_ssl.rb:158]:
non socket argument of SSLSocket.new is not supported on this platform

5) Failure:
test_ceil(TestBigDecimal)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:679]:
<3.142> expected but was
<#<BigDecimal:980b778,'0.3142Ezd',zu(zu)>>.

6) Failure:
test_floor(TestBigDecimal)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:672]:
<3.141> expected but was
<#<BigDecimal:9c23248,'0.3141Ezd',zu(zu)>>.

7) Failure:
test_inspect(TestBigDecimal)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:712]:
Expected /^#<BigDecimal:[0-9a-f]+,'0.12345678E4',18\(18\)>$/ to match
"#<BigDecimal:1970238,'0.12345678Ezd',zu(zu)>".

8) Error:
test_marshal(TestBigDecimal):
TypeError: load failed: invalid character in the marshaled string
c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:375:in
`_load'
c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:375:in
`load'
c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:375:in
`test_marshal'

9) Failure:
test_power(TestBigDecimal)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:718]:
<0.012345679012345678> expected but was
<#<BigDecimal:4f121c0,'0.1234567901 2345679012 3456790123 4567901234
5679012345 6790123456 79Ezd',zu(zu)>>.

10) Failure:
test_round(TestBigDecimal)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:620]:
<3.142> expected but was
<#<BigDecimal:547d4c0,'0.3142Ezd',zu(zu)>>.

11) Failure:
test_to_f(TestBigDecimal)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:434]:
<1.0> expected but was
<0.1>.

12) Failure:
test_to_s(TestBigDecimal)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:687]:
<"0.1234567890123456789E3"> expected but was
<"0.1234567890123456789Ezd">.

13) Failure:
test_truncate(TestBigDecimal)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:665]:
<3.141> expected but was
<#<BigDecimal:7f30f50,'0.3141Ezd',zu(zu)>>.

14) Failure:
test_atan(TestBigMath)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:59]:
Expected 1.5707963267948966 - 0.15707963267948966192Ezd
(1.413716694115407) to be < 0.001.

15) Failure:
test_const(TestBigMath)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:13]:
Expected 3.141592653589793 -
0.3141592653589793238462643383279502883919859293521427Ezd
(2.827433388230814) to be < 0.001.

16) Failure:
test_cos(TestBigMath)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:42]:
Expected 1.0 - 0.1Ezd (0.9) to be < 0.001.

17) Failure:
test_exp(TestBigMath)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:65]:
Expected 2.718281828459045 - 0.27182818284590452354Ezd
(2.4464536456131407) to be < 0.00027182818284590454.

18) Failure:
test_log(TestBigMath)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:82]:
Expected 1.0 - 0.10000000000000000000000000000000000023031819506058204Ezd
(0.9) to be < 0.001.

19) Failure:
test_sin(TestBigMath)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:30]:
Expected 1.0 - 0.10000000000000000000000000000000000007840848318977895Ezd
(0.9) to be < 0.001.

20) Failure:
test_sqrt(TestBigMath)
[c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:18]:
Expected 1.4142135623730951 -
0.141421356237309504880168872420969807825Ezd (1.2727922061357857) to
be < 0.001.

21) Error:
test_filename_as_bytes_extutf8(TestDir_M17N):
Errno::EINVAL: Invalid argument -
C:/Users/kou/AppData/Local/Temp/d20110506-3296-l77ztc/?
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_dir_m17n.rb:7:in
`with_tmpdir'
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_dir_m17n.rb:48:in
`test_filename_as_bytes_extutf8'
../../../ruby/test/runner.rb:13:in `<main>'

22) Error:
test_filename_extutf8_inteucjp_unrepresentable(TestDir_M17N):
Errno::EINVAL: Invalid argument -
C:/Users/kou/AppData/Local/Temp/d20110506-3296-1c1tbmo/?
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_dir_m17n.rb:7:in
`with_tmpdir'
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_dir_m17n.rb:116:in
`test_filename_extutf8_inteucjp_unrepresentable'
../../../ruby/test/runner.rb:13:in `<main>'

23) Failure:
test_find(TestEncoding)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_encoding.rb:47]:
ruby exit status is not success: #<Process::Status: pid 596 exit 1>

24) Failure:
test_err_in_callback(TestErrInCallBack)
[c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_err_in_callback.rb:34]:
Expected /NameError/ to match "ruby 1.9.3dev (2011-05-05 trunk 31439)
[x64-mingw32]\nc:/cygwin/home/kou/work/ruby/ruby/test/win32ole/err_in_callback.rb:2:in
`initialize': failed to create WIN32OLE object from `ADODB.Connection'
(WIN32OLERuntimeError)\n HRESULT error code:0x8007007e\n The
specified module could not be found.\n\tfrom
c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/err_in_callback.rb:2:in
`new'\n\tfrom c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/err_in_callback.rb:2:in
`<main>'\n".

25) Skipped:
test_change_dir_to_symlink_loop(TestFind)
[c:/cygwin/home/kou/work/ruby/ruby/test/test_find.rb:191]:
symlink is not supported.

26) Skipped:
test_dangling_symlink(TestFind)
[c:/cygwin/home/kou/work/ruby/ruby/test/test_find.rb:131]:
symlink is not supported.

27) Skipped:
test_dangling_symlink_stat_error(TestFind)
[c:/cygwin/home/kou/work/ruby/ruby/test/test_find.rb:145]:
symlink is not supported.

28) Skipped:
test_dont_follow_symlink(TestFind)
[c:/cygwin/home/kou/work/ruby/ruby/test/test_find.rb:51]:
symlink is not supported.

29) Skipped:
test_unreadable_dir(TestFind)
[c:/cygwin/home/kou/work/ruby/ruby/test/test_find.rb:94]:
no meaning test on Windows

30) Skipped:
test_unsearchable_dir(TestFind)
[c:/cygwin/home/kou/work/ruby/ruby/test/test_find.rb:118]:
no meaning test on Windows

31) Skipped:
test_close_on_exec(TestIO)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io.rb:1217]:
IO#close_on_exec is not implemented.

32) Skipped:
test_copy_stream(TestIO)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io.rb:394]:
nonblocking IO for pipe is not implemented

33) Skipped:
test_copy_stream_rbuf(TestIO)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io.rb:503]:
pread(2) is not implemtented.

34) Skipped:
test_cross_thread_close_fd(TestIO)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io.rb:1845]:
cross thread close causes hung-up if pipe.

35) Skipped:
test_read_nonblock_error(TestIO)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io.rb:962]:
IO#read_nonblock is not supported on file/pipe.

36) Skipped:
test_write_nonblock(TestIO)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io.rb:951]:
IO#write_nonblock is not supported on file/pipe.

37) Skipped:
test_write_nonblock_error(TestIO)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io.rb:974]:
IO#write_nonblock is not supported on file/pipe.

38) Failure:
test_nread(TestIOWait)
[c:/cygwin/home/kou/work/ruby/ruby/test/io/wait/test_io_wait.rb:22]:
<1> expected but was
<0>.

39) Failure:
test_nread_buffered(TestIOWait)
[c:/cygwin/home/kou/work/ruby/ruby/test/io/wait/test_io_wait.rb:28]:
<1> expected but was
<0>.

40) Failure:
test_ready?(TestIOWait)
[c:/cygwin/home/kou/work/ruby/ruby/test/io/wait/test_io_wait.rb:34]:
Failed assertion, no message given.

41) Failure:
test_wait(TestIOWait)
[c:/cygwin/home/kou/work/ruby/ruby/test/io/wait/test_io_wait.rb:44]:
Expected false to be nil.

42) Failure:
test_wait_eof(TestIOWait)
[c:/cygwin/home/kou/work/ruby/ruby/test/io/wait/test_io_wait.rb:62]:
Expected false to be nil.

43) Failure:
test_wait_forever(TestIOWait)
[c:/cygwin/home/kou/work/ruby/ruby/test/io/wait/test_io_wait.rb:57]:
<#<IO:fd 15>> expected but was
<false>.

44) Failure:
test_binary(TestIO_M17N)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io_m17n.rb:1728]:
<"a\nb\rc\r\nd\n"> expected but was
<"a\nb\nc\nd\n">.

45) Failure:
test_read_newline_conversion_with_encoding_conversion(TestIO_M17N)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io_m17n.rb:1505]:
<"a\r\nb\r\n"> expected but was
<"a\nb\n">.

46) Skipped:
test_stdin_external_encoding_with_reopen(TestIO_M17N)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_io_m17n.rb:1112]:
passing non-stdio fds is not supported

47) Failure:
test_sizeof_builtin(TestMkmf::TestSizeof)
[c:/cygwin/home/kou/work/ruby/ruby/test/mkmf/test_sizeof.rb:16]:
x86_64-w64-mingw32-gcc -E -I.
-Ic:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/.ext/include/x64-mingw32
-Ic:/cygwin/home/kou/work/ruby/ruby/include -I../../../ruby/test
-O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long
-Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings
-Wdeclaration-after-statement -Wimplicit-function-declaration
conftest.c |
x86_64-w64-mingw32-gcc -E -I.
-Ic:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/.ext/include/x64-mingw32
-Ic:/cygwin/home/kou/work/ruby/ruby/include -I../../../ruby/test
-O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long
-Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings
-Wdeclaration-after-statement -Wimplicit-function-declaration
conftest.c |
x86_64-w64-mingw32-gcc -E -I.
-Ic:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/.ext/include/x64-mingw32
-Ic:/cygwin/home/kou/work/ruby/ruby/include -I../../../ruby/test
-O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long
-Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings
-Wdeclaration-after-statement -Wimplicit-function-declaration
conftest.c |
x86_64-w64-mingw32-gcc -E -I.
-Ic:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/.ext/include/x64-mingw32
-Ic:/cygwin/home/kou/work/ruby/ruby/include -I../../../ruby/test
-O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long
-Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings
-Wdeclaration-after-statement -Wimplicit-function-declaration
conftest.c |
x86_64-w64-mingw32-gcc -E -I.
-Ic:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/.ext/include/x64-mingw32
-Ic:/cygwin/home/kou/work/ruby/ruby/include -I../../../ruby/test
-O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long
-Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings
-Wdeclaration-after-statement -Wimplicit-function-declaration
conftest.c |
check_sizeof: checking size of char... -------------------- 1

checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <winsock2.h>
4: #include <windows.h>
5: typedef char rbcv_typedef_;
6: static rbcv_typedef_ *rbcv_ptr_;
7:
8: #include <stdio.h>
9: /*top*/
10: int conftest_const = (int)(sizeof((*rbcv_ptr_)));
11: int main() {printf("%d\n", conftest_const); return 0;}
/* end */

--------------------

check_sizeof: checking size of short... -------------------- 2

checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <winsock2.h>
4: #include <windows.h>
5: typedef short rbcv_typedef_;
6: static rbcv_typedef_ *rbcv_ptr_;
7:
8: #include <stdio.h>
9: /*top*/
10: int conftest_const = (int)(sizeof((*rbcv_ptr_)));
11: int main() {printf("%d\n", conftest_const); return 0;}
/* end */

--------------------

check_sizeof: checking size of int... -------------------- 4

checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <winsock2.h>
4: #include <windows.h>
5: typedef int rbcv_typedef_;
6: static rbcv_typedef_ *rbcv_ptr_;
7:
8: #include <stdio.h>
9: /*top*/
10: int conftest_const = (int)(sizeof((*rbcv_ptr_)));
11: int main() {printf("%d\n", conftest_const); return 0;}
/* end */

--------------------

check_sizeof: checking size of long... -------------------- failed

c:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/devkit/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/bin/ld.exe:
cannot open output file conftest.exe: Permission denied
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <winsock2.h>
4: #include <windows.h>
5: typedef long rbcv_typedef_;
6: static rbcv_typedef_ *rbcv_ptr_;
7:
8: #include <stdio.h>
9: /*top*/
10: int conftest_const = (int)(sizeof((*rbcv_ptr_)));
11: int main() {printf("%d\n", conftest_const); return 0;}
/* end */

--------------------

.
Expected nil to be a kind of Integer, not NilClass.

48) Failure:
test_commandline(TestOpen3)
[c:/cygwin/home/kou/work/ruby/ruby/test/test_open3.rb:64]:
<"quux\n"> expected but was
<"quux\r\n">.

49) Error:
test_proxy(TestOpenURISSL):
ArgumentError: invalid byte sequence in UTF-8
c:/cygwin/home/kou/work/ruby/ruby/test/open-uri/test_ssl.rb:86:in
`block in test_proxy'
c:/cygwin/home/kou/work/ruby/ruby/test/open-uri/test_ssl.rb:30:in
`block in with_https'
c:/cygwin/home/kou/work/ruby/ruby/test/open-uri/test_ssl.rb:16:in
`with_https'
c:/cygwin/home/kou/work/ruby/ruby/test/open-uri/test_ssl.rb:65:in
`test_proxy'
../../../ruby/test/runner.rb:13:in `<main>'

50) Skipped:
test_jobs_status(TestParallel::TestParallel)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:125]:
parallel testing doesn't support Windows yet.

51) Skipped:
test_no_retry_option(TestParallel::TestParallel)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:125]:
parallel testing doesn't support Windows yet.

52) Skipped:
test_should_retry_failed_on_workers(TestParallel::TestParallel)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:125]:
parallel testing doesn't support Windows yet.

53) Skipped:
test_should_run_all_without_any_leaks(TestParallel::TestParallel)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:125]:
parallel testing doesn't support Windows yet.

54) Skipped:
test_accept_run_command_multiple_times(TestParallel::TestParallelWorker)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:12]:
parallel testing doesn't support Windows yet.

55) Skipped:
test_done(TestParallel::TestParallelWorker)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:12]:
parallel testing doesn't support Windows yet.

56) Skipped:
test_p(TestParallel::TestParallelWorker)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:12]:
parallel testing doesn't support Windows yet.

57) Skipped:
test_quit(TestParallel::TestParallelWorker)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:12]:
parallel testing doesn't support Windows yet.

58) Skipped:
test_run(TestParallel::TestParallelWorker)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:12]:
parallel testing doesn't support Windows yet.

59) Skipped:
test_run_multiple_testcase_in_one_file(TestParallel::TestParallelWorker)
[c:/cygwin/home/kou/work/ruby/ruby/test/testunit/test_parallel.rb:12]:
parallel testing doesn't support Windows yet.

60) Skipped:
test_grpowned?(TestPathname)
[c:/cygwin/home/kou/work/ruby/ruby/test/pathname/test_pathname.rb:995]:
Unix file owner test

61) Skipped:
test_sticky?(TestPathname)
[c:/cygwin/home/kou/work/ruby/ruby/test/pathname/test_pathname.rb:1102]:
Unix file mode bit test

62) Skipped:
test_world_readable?(TestPathname)
[c:/cygwin/home/kou/work/ruby/ruby/test/pathname/test_pathname.rb:1050]:
Unix file mode bit test

63) Skipped:
test_world_writable?(TestPathname)
[c:/cygwin/home/kou/work/ruby/ruby/test/pathname/test_pathname.rb:1124]:
Unix file mode bit test

64) Skipped:
test_execopts_close_others(TestProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_process.rb:649]:
inheritance of fd other than stdin,stdout and stderr is not supported

65) Skipped:
test_execopts_pgroup(TestProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_process.rb:154]:
system(:pgroup) is not supported

66) Skipped:
test_execopts_popen(TestProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_process.rb:574]:
inheritance of fd other than stdin,stdout and stderr is not supported

67) Skipped:
test_execopts_redirect_dup2_child(TestProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_process.rb:529]:
inheritance of fd other than stdin,stdout and stderr is not supported

68) Skipped:
test_execopts_redirect_self(TestProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_process.rb:723]:
IO#close_on_exec= is not supported

69) Skipped:
test_execopts_umask(TestProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_process.rb:326]:
umask is not supported

70) Skipped:
test_fd_inheritance(TestProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_process.rb:605]:
inheritance of fd other than stdin,stdout and stderr is not supported

71) Failure:
test_include_file_encoding_incompatible(TestRDocMarkupPreProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/rdoc/test_rdoc_markup_pre_process.rb:72]:
Expected "?\r\n", not "?\n".

72) Failure:
test_include_file(TestRDocMarkupPreProcess)
[c:/cygwin/home/kou/work/ruby/ruby/test/rdoc/test_rdoc_markup_pre_process.rb:48]:
Expected "Regular expressions (<i>regexp</i>s) are patterns which
describe the\r\ncontents of a string.\r\n", not "Regular expressions
(<i>regexp</i>s) are patterns which describe the\ncontents of a
string.\n".

73) Skipped:
test_check_files(TestRDocOptions)
[c:/cygwin/home/kou/work/ruby/ruby/test/rdoc/test_rdoc_options.rb:20]:
assumes UNIX permission model

74) Skipped:
test_relative_symlink(TestRequire)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_require.rb:330]:
File.symlink is not implemented

75) Error:
test_segv_test(TestRubyOptions):
Timeout::Error: Timeout::Error
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/envutil.rb:68:in `invoke_ruby'
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/envutil.rb:152:in
`assert_in_out_err'
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_rubyoptions.rb:411:in
`test_segv_test'

76) Skipped:
test_s_open_error(TestSDBM)
[c:/cygwin/home/kou/work/ruby/ruby/test/sdbm/test_sdbm.rb:123]:
doesn't support to avoid read access by owner on Windows

77) Error:
test_abort_on_exception(TestThread):
IOError: stream closed
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/envutil.rb:60:in `read'
c:/cygwin/home/kou/work/ruby/ruby/test/ruby/envutil.rb:60:in
`block in invoke_ruby'
c:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/.ext/common/win32ole.rb:13:in
`call'
c:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/.ext/common/win32ole.rb:13:in
`block in initialize'

78) Failure:
test_strftime(TestTime)
[c:/cygwin/home/kou/work/ruby/ruby/test/ruby/test_time.rb:651]:
<"3000000000"> expected but was
<"-1294967296">.

79) Failure:
test_offset_vtbl(TestWIN32OLE_METHOD)
[c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_win32ole_method.rb:117]:
<24> expected but was
<48>.

80) Failure:
test_wait_for_invalid_fd(TestWaitForSingleFD)
[c:/cygwin/home/kou/work/ruby/ruby/test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb:27]:
Errno::EBADF expected but nothing was raised.

81) Error:
test_short_filename(WEBrick::TestFileHandler):
ArgumentError: invalid byte sequence in UTF-8
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/test_filehandler.rb:222:in
`match'
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/test_filehandler.rb:222:in
`match'
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/test_filehandler.rb:222:in
`block (2 levels) in test_short_filename'
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/test_filehandler.rb:221:in
`chdir'
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/test_filehandler.rb:221:in
`block in test_short_filename'
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/utils.rb:41:in `yield'
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/utils.rb:41:in `start_server'
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/utils.rb:52:in
`start_httpserver'
c:/cygwin/home/kou/work/ruby/ruby/test/webrick/test_filehandler.rb:217:in
`test_short_filename'

8493 tests, 1874260 assertions, 32 failures, 8 errors, 41 skips
make: *** [yes-test-all] Error 40
--

> I'm guessing a recipes/dependencies/zlib.rake recipe needs to be created that kicks in only for 64-bit builds.

Or we can use a binary provided by gnome.org.

> 1) should recipes/dependencies/ffi.rake have a "32-bit guard" to prevent the patch from being applied to 32-bit builds?

It isn't needed because patched sources aren't used in 32-bit build.

> 2) do you expect any problems if Cygwin is _not_ used?

I think that we don't have any problems on Cygwin if we run rake via .bat file.
If we run rake (or ruby) from .bat, we are out of Cygwin.
(I'm not an expert for Cygwin and/or Windows. So my expectation may be
wrong. :<)

> Your results look really great so far...thank you Kou!

Thanks!

--
kou

Kouhei Sutou

unread,
May 5, 2011, 11:48:58 PM5/5/11
to rubyin...@googlegroups.com
Hi,

2011/5/6 Kouhei Sutou <kou...@gmail.com>:

>> 2) do you expect any problems if Cygwin is _not_ used?
>
> I think that we don't have any problems on Cygwin if we run rake via .bat file.
> If we run rake (or ruby) from .bat, we are out of Cygwin.
> (I'm not an expert for Cygwin and/or Windows. So my expectation may be
> wrong. :<)

I said wrong thing as I said... :<

Here is my command line:
% /cygdrive/c/Ruby187/bin/ruby.exe c:/Ruby187/bin/rake devkit:sh
LOCAL='C:\Cygwin\home\kou\work\ruby\ruby' ProgramFiles='c:\Program
Files (x86)' dkver=mingw64-64-4.5.4

I didn't use .bat file...


Thanks,
--
kou

Kouhei Sutou

unread,
May 5, 2011, 11:50:31 PM5/5/11
to rubyin...@googlegroups.com
Hi,

2011/5/6 Kouhei Sutou <kou...@gmail.com>:

>> 2) do you expect any problems if Cygwin is _not_ used?


>
> I think that we don't have any problems on Cygwin if we run rake via .bat file.
> If we run rake (or ruby) from .bat, we are out of Cygwin.
> (I'm not an expert for Cygwin and/or Windows. So my expectation may be
> wrong. :<)

I said wrong thing as I said... :<

Jon

unread,
May 6, 2011, 10:42:22 AM5/6/11
to rubyin...@googlegroups.com
Thank you for the details. For future posts that have a lot of info would you mind putting them in a gist and including the gist link instead?

Comments embedded below...


> PASS all 934 tests
> ./miniruby.exe -I../../../ruby/lib -I. -I.ext/common
> ../../../ruby/tool/runruby.rb --extout=.ext --
> "../../../ruby/bootstraptest/runner.rb" --ruby="ruby.exe"
> ../../../ruby/KNOWNBUGS.rb
> bash.exe: warning: could not find /tmp, please create!
> 2011-05-06 10:10:56 +0900
> Driver is ruby 1.9.3dev (2011-05-05 trunk 31439) [x64-mingw32]
> Target is ruby 1.9.3dev (2011-05-05 trunk 31439) [x64-mingw32]
>
>
> KNOWNBUGS.rb .
> PASS all 1 tests

Promising...looks like we also need to find a patch for test_thread.rb and submit to ruby-core since its failing on both 32 and 64bit.

> make test-all
> ./miniruby.exe -I../../../ruby/lib -I. -I.ext/common
> ../../../ruby/tool/runruby.rb --extout=.ext --
> "../../../ruby/test/runner.rb" --ruby="./miniruby.exe
> -I../../../ruby/lib -I. -I.ext/common ../../../ruby/tool/runruby.rb
> --extout=.ext --"
> bash.exe: warning: could not find /tmp, please create!
> c:/cygwin/home/kou/work/ruby/ruby/test/csv/test_features.rb: cannot
> load such file -- zlib

In your branch I see you're using win64 zlib v1.2.3 from gnome. I wonder if all the zlib failures are due to the directory structure of sandbox/zlib (using the gnome binaries) isn't what the recipes expect. In 32bit builds, the dir structure is:

sandbox/zlib
├──bin
│ zlib1.dll

├──include
│ zconf.h
│ zlib.h

└──lib
libz.a
libzdll.a

Do you see the same when using the gnome zlib binary?


> c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_win32ole_event.rb
> skipped(ActiveX Data Object Library not found.)
>
> c:/cygwin/home/kou/work/ruby/ruby/test/win32ole/test_win32ole_variant_outarg.rb
> skipped(ActiveX Data Object Library not found.)

IIRC didn't MSFT decide not to support DAO libs in 64bit? Need to confirm but since the test was skipped it's probably not a "real" issue.

For many of the other failures, I wonder if Cygwin is affecting the results (eg - differing line endings, etc). Have you tried building without using Cygwin to see how the recipes behave? We should see if we can replicate your Cygwin-based test results with a non-Cygwin build.


And these types of failures are odd.



> 13) Failure:
> test_truncate(TestBigDecimal)
> [c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigdecimal.rb:665]:
> <3.141> expected but was
> <#<BigDecimal:7f30f50,'0.3141Ezd',zu(zu)>>.
>
> 14) Failure:
> test_atan(TestBigMath)
> [c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:59]:
> Expected 1.5707963267948966 - 0.15707963267948966192Ezd
> (1.413716694115407) to be < 0.001.
>
> 15) Failure:
> test_const(TestBigMath)
> [c:/cygwin/home/kou/work/ruby/ruby/test/bigdecimal/test_bigmath.rb:13]:
> Expected 3.141592653589793 -
> 0.3141592653589793238462643383279502883919859293521427Ezd
> (2.827433388230814) to be < 0.001.


For the "test_sizeof_builtin" failures, do you think failures were due only to the "permission denied" failure of the following, or something else like incorrect data types in the source?


> check_sizeof: checking size of long... -------------------- failed
>
> c:/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/devkit/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/bin/ld.exe:
> cannot open output file conftest.exe: Permission denied
> collect2: ld returned 1 exit status
> checked program was:
> /* begin */
> 1: #include "ruby.h"
> 2:
> 3: #include <winsock2.h>
> 4: #include <windows.h>
> 5: typedef long rbcv_typedef_;
> 6: static rbcv_typedef_ *rbcv_ptr_;
> 7:
> 8: #include <stdio.h>
> 9: /*top*/
> 10: int conftest_const = (int)(sizeof((*rbcv_ptr_)));
> 11: int main() {printf("%d\n", conftest_const); return 0;}
> /* end */
>
> --------------------


> > 1) should recipes/dependencies/ffi.rake have a "32-bit guard" to prevent the patch from being applied to 32-bit builds?
>
> It isn't needed because patched sources aren't used in 32-bit build.

OK. What specific build error (ld?) did the ffi patch fix?

As the patch modifies "_" prefixing I'm wondering whether this is x86_64-w64-mingw32 tool-specific in how it handles symbol naming/lookup. Is a patch the right solution or could this be a bug/pecularity of x86_64-w64-mingw32 that should be discussed with the mingw-w64 project? My preference is that the recipes require as few source patches as possible.

Finally, as I don't have a 64bit system to replicate your results with, we're quickly reaching the point where my feedback stops adding value. Someone with a 64bit system needs to jump into the discussion.

Kouhei Sutou

unread,
May 8, 2011, 7:19:04 AM5/8/11
to rubyin...@googlegroups.com
Hi,

2011/5/6 Jon <jon.f...@gmail.com>:


> Thank you for the details. For future posts that have a lot of info would you mind putting them in a gist and including the gist link instead?

OK. I'm sorry for bothering you.

> Promising...looks like we also need to find a patch for test_thread.rb and submit to ruby-core since its failing on both 32 and 64bit.

I think so too.

> In your branch I see you're using win64 zlib v1.2.3 from gnome. I wonder if all the zlib failures are due to the directory structure of sandbox/zlib (using the gnome binaries) isn't what the recipes expect. In 32bit builds, the dir structure is:
> sandbox/zlib
> ├──bin
> │     zlib1.dll
> │
> ├──include
> │     zconf.h
> │     zlib.h
> │
> └──lib
>      libz.a
>      libzdll.a
>
> Do you see the same when using the gnome zlib binary?

It seems that it uses the same structure:

% unzip /tmp/zlib_1.2.3-1_win64.zip
Archive: /tmp/zlib_1.2.3-1_win64.zip
inflating: bin/zlib1.dll
inflating: manifest/zlib_1.2.3-1_win64.mft
% unzip /tmp/zlib-dev_1.2.3-1_win64.zip
Archive: /tmp/zlib-dev_1.2.3-1_win64.zip
inflating: lib/libz.dll.a
inflating: lib/zdll.lib
inflating: lib/zlib.def
inflating: include/zconf.h
inflating: include/zlib.h
inflating: src/tml/make/zlib_1.2.3-1_win64.sh
inflating: src/tml/make/zlib_1.2.3-1_win64.log
inflating: manifest/zlib-dev_1.2.3-1_win64.mft


> For many of the other failures, I wonder if Cygwin is affecting the results (eg - differing line endings, etc).  Have you tried building without using Cygwin to see how the recipes behave?  We should see if we can replicate your Cygwin-based test results with a non-Cygwin build.

I'm trying it...

> For the "test_sizeof_builtin" failures, do you think failures were due only to the "permission denied" failure of the following, or something else like incorrect data types in the source?

I'm sorry. I don't know about it because I didn't trace the test result...

> OK. What specific build error (ld?) did the ffi patch fix?

Here are error messages on cmd.exe built:

make[2]: Entering directory
`/c/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/ext/fiddle'
linking shared-object fiddle.so
C:\cygwin\home\kou\work\ruby\rubyinstaller.w64\sandbox\libffi\lib/libffi.a(ffi.o):
In function `ffi_call':
C:\cygwin\home\kou\work\ruby\rubyinstaller.w64\sandbox\src-libffi/src/x86/ffi.c:320:
undefined reference to `ffi_call_win64'
C:\cygwin\home\kou\work\ruby\rubyinstaller.w64\sandbox\libffi\lib/libffi.a(ffi.o):
In function `ffi_prep_closure_loc':
C:\cygwin\home\kou\work\ruby\rubyinstaller.w64\sandbox\src-libffi/src/x86/ffi.c:547:
undefined reference to `ffi_closure_win64'


collect2: ld returned 1 exit status

make[2]: *** [../../.ext/x64-mingw32/fiddle.so] Error 1


> As the patch modifies "_" prefixing I'm wondering whether this is x86_64-w64-mingw32 tool-specific in how it handles symbol naming/lookup. Is a patch the right solution or could this be a bug/pecularity of x86_64-w64-mingw32 that should be discussed with the mingw-w64 project? My preference is that the recipes require as few source patches as possible.

I agree with you.


> Finally, as I don't have a 64bit system to replicate your results with, we're quickly reaching the point where my feedback stops adding value. Someone with a 64bit system needs to jump into the discussion.

I'm waiting for you! :-)


Thanks,
--
kou

Kouhei Sutou

unread,
May 8, 2011, 12:09:25 PM5/8/11
to rubyin...@googlegroups.com
Hi,

2011/5/8 Kouhei Sutou <k...@cozmixng.org>:

>> For many of the other failures, I wonder if Cygwin is affecting the results (eg - differing line endings, etc).  Have you tried building without using Cygwin to see how the recipes behave?  We should see if we can replicate your Cygwin-based test results with a non-Cygwin build.
>
> I'm trying it...

Here is the result: https://gist.github.com/961463


Thanks,
--
kou

Jon

unread,
May 9, 2011, 10:48:24 AM5/9/11
to rubyin...@googlegroups.com
> >> For many of the other failures, I wonder if Cygwin is affecting the results (eg - differing line endings, etc).  Have you tried building without using Cygwin to see how the recipes behave?  We should see if we can replicate your Cygwin-based test results with a non-Cygwin build.
> >
> > I'm trying it...
>
> Here is the result: https://gist.github.com/961463

Nice, incremental progress...30 failures, 7 errors instead of 32 failures, 8 errors and it seems to show that Cygwin isn't needed.

:)

Jon

unread,
May 9, 2011, 11:47:38 AM5/9/11
to rubyin...@googlegroups.com
> > Promising...looks like we also need to find a patch for test_thread.rb and submit to ruby-core since its failing on both 32 and 64bit.
>
> I think so too.

Oddly, I'm able to get test_thread.rb to sometimes pass. I don't know whether it's recent ruby-core thread changes or toolkit issues. Looking into it on 32-bit and will pass along any info I find.

> > Do you see the same when using the gnome zlib binary?
>
> It seems that it uses the same structure:

Hmm...I wonder if the build tookit is conflicting with ext/zlib/extconf.rb and/or ruby's mkmf.rb? What does your mkmf.log file from sandbox/ruby19_build/ext/zlib look like?

> > OK. What specific build error (ld?) did the ffi patch fix?
>
> Here are error messages on cmd.exe built:
>
> make[2]: Entering directory
> `/c/cygwin/home/kou/work/ruby/rubyinstaller.w64/sandbox/ruby19_build/ext/fiddle'
> linking shared-object fiddle.so
> C:\cygwin\home\kou\work\ruby\rubyinstaller.w64\sandbox\libffi\lib/libffi.a(ffi.o):
> In function `ffi_call':
> C:\cygwin\home\kou\work\ruby\rubyinstaller.w64\sandbox\src-libffi/src/x86/ffi.c:320:
> undefined reference to `ffi_call_win64'
> C:\cygwin\home\kou\work\ruby\rubyinstaller.w64\sandbox\libffi\lib/libffi.a(ffi.o):
> In function `ffi_prep_closure_loc':
> C:\cygwin\home\kou\work\ruby\rubyinstaller.w64\sandbox\src-libffi/src/x86/ffi.c:547:
> undefined reference to `ffi_closure_win64'
> collect2: ld returned 1 exit status
> make[2]: *** [../../.ext/x64-mingw32/fiddle.so] Error 1

What's your mkmf.log file look like (without the patch) in sandbox/ruby19_build/ext/fiddle? Did libffi build OK for you without applying the patch?

It would be interesting if this libffi symbol issue is similar to the zlib issue and caused by something we don't yet understand with the mingw-w64 toolkit and symbols. I'm going to play around a bit with libffi/fiddle on 32-bit and external symbol naming.

BTW, http://sourceforge.net/mailarchive/message.php?msg_id=27416198 doesn't appear relevant to us because we're using newer toolkits. However, this comment from the thread makes me wonder if you're not seeing something similar.

"Win64-targeting builds from mingw-w64 up to 2010-04-27 didn't
follow MSVC x64 convention and did *not* prepend an undersocore
to the symbols: this is why you are seeing the incompatibilities
with the newer toolchains."

> > Finally, as I don't have a 64bit system to replicate your results with, we're quickly reaching the point where my feedback stops adding value. Someone with a 64bit system needs to jump into the discussion.
>
> I'm waiting for you! :-)

Hehehe...looks like it's time to open up the wallet and build that ASUS P8P67 + i7-2600K system and try to catch up with you!

And...time to shame the others on this list that I _know_ have Win7 64bit systems to jump in...stir things up a bit and see if we can get them off the sidelines and their real work/life ;)

Boško Ivanišević

unread,
May 9, 2011, 2:00:06 PM5/9/11
to rubyin...@googlegroups.com
Hehe, I bet I'm one of "the others". I will try to catch up with this (was a little busy these days) ;-)

--
Regards,
Boško Ivanišević

Kouhei Sutou

unread,
May 14, 2011, 3:31:21 AM5/14/11
to rubyin...@googlegroups.com
Hi,

2011/5/10 Jon <jon.f...@gmail.com>:

>> > Do you see the same when using the gnome zlib binary?
>>
>> It seems that it uses the same structure:
>
> Hmm...I wonder if the build tookit is conflicting with ext/zlib/extconf.rb and/or ruby's mkmf.rb?  What does your mkmf.log file from sandbox/ruby19_build/ext/zlib look like?

Maybe tasks in recipies/dependencies/zlib.rake overrides them.
I moved zlib for 64bit configurations to config/ruby_installer.rb from
config/compilers/mingw64.rb.
https://github.com/kou/rubyinstaller/tree/mingw-w64

> What's your mkmf.log file look like (without the patch) in sandbox/ruby19_build/ext/fiddle?  Did libffi build OK for you without applying the patch?

I checked the latest RC release (3.1.10rc8) and it had been fixed this issue.
So I removed my patch and changed to use the latest RC release.


Here is a Ruby installer for "ruby 1.9.3dev (2011-05-14) [x64-mingw32]":
http://pub.cozmixng.org/~kou/archives/rubyinstaller-1.9.2-p180.exe

I could install Rails gem by the Ruby with "gem install rails".

(The installer name is still rubyinstaller-1.9.2-p180.exe. Please don't care.
It's just a test installer.)


Thanks,
--
kou

Luis Lavena

unread,
May 14, 2011, 8:47:55 AM5/14/11
to rubyin...@googlegroups.com

Sorry for the top posting, limited device.

Awesome work kou! We will review and merge the changes soon. I'm traveling right now so is complicated for me.

I personally appreciate you taking the time to get this done!

On May 14, 2011 4:31 AM, "Kouhei Sutou" <k...@cozmixng.org> wrote:

Kouhei Sutou

unread,
May 14, 2011, 10:50:44 AM5/14/11
to rubyin...@googlegroups.com
Hi,

2011/5/14 Luis Lavena <luisl...@gmail.com>:

> Awesome work kou! We will review and merge the changes soon. I'm traveling
> right now so is complicated for me.

Thanks!
Please enjoy your trip!

> I personally appreciate you taking the time to get this done!

You're welcome. :-)


Thanks,
--
kou

Jon

unread,
May 14, 2011, 2:26:27 PM5/14/11
to rubyin...@googlegroups.com
> > What's your mkmf.log file look like (without the patch) in sandbox/ruby19_build/ext/fiddle?  Did libffi build OK for you without applying the patch?
>
> I checked the latest RC release (3.1.10rc8) and it had been fixed this issue.
> So I removed my patch and changed to use the latest RC release.

Great! I'll also try building with the RC8 on 32bit with different toolchains.


> Here is a Ruby installer for "ruby 1.9.3dev (2011-05-14) [x64-mingw32]":
> http://pub.cozmixng.org/~kou/archives/rubyinstaller-1.9.2-p180.exe
>
> I could install Rails gem by the Ruby with "gem install rails".
>
> (The installer name is still rubyinstaller-1.9.2-p180.exe. Please don't care.
> It's just a test installer.)

Very nice. Given how far you've gotten we need to double check the Inno installer scripts for correct 64bit settings and the registry is still being used correctly.

http://www.jrsoftware.org/ishelp/index.php?topic=32vs64bitinstalls

Kou, thanks again for your continued efforts on 64bit.

Reply all
Reply to author
Forward
0 new messages