Forum: Ruby Broken Gems on Windows (still)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
32b703cdb0ea03c3939b97a93205414f?d=identicon&s=25 John T. (johnt519)
on 2008-10-22 15:39
(I realized I posted this originally on the Rails mailing list, when it
probably should have been here... oops!)

Hello...

Is there any word on when the eventmachine 0.12.2 and sqlite3-ruby 1.2.4
gems are going to be fixed to work when updating gems on a Windows (xp)
system? Doing a 'gem update' will cause errors for both, which causes
the rest of the updated to installed gems to not be updated. I've been
using a workaround script that skips the errors and continues updating,
but I'd be nice to get updated gems.

(I'm also seeing a strange thing with the webby gem - when doing a 'gem
outdated', I see:

webby (0.9.3 < 0.9.3)

and updating causes the "new" version to be installed, but gem outdated
still gives that message.)


Here are the errors for sqlite3-ruby and eventmachine, for what it's
worth...

eventmachine:

updating eventmachine...
ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb update eventmachine
checking for windows.h... no

nmake
'nmake' is not recognized as an internal or external command,
operable program or batch file.


Gem files will remain installed in
c:/ruby/lib/ruby/gems/1.8/gems/eventmachine-0
.12.2 for inspection.
Results logged to
c:/ruby/lib/ruby/gems/1.8/gems/eventmachine-0.12.2/ext/gem_mak
e.out

sqlite3-ruby:

updating sqlite3-ruby...
ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb update sqlite3-ruby
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake
'nmake' is not recognized as an internal or external command,
operable program or batch file.


Gem files will remain installed in
c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1
.2.4 for inspection.
Results logged to
c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_
api/gem_make.out
Aee77dba395ece0a04c688b05b07cd63?d=identicon&s=25 Daniel Berger (Guest)
on 2008-10-22 17:17
(Received via mailing list)
Hi,

<snip>

> 'nmake' is not recognized as an internal or external command,
> operable program or batch file.

Looks like eventmachine is a C extension. You either don't have a
compiler installed, or your shell's environment isn't setup right.
Therefore, it fails.

Or did I miss the point of your question somehow?

Regards,

Dan
32b703cdb0ea03c3939b97a93205414f?d=identicon&s=25 John T. (johnt519)
on 2008-10-22 19:10
Daniel Berger wrote:
> Hi,
>
> <snip>
>
>> 'nmake' is not recognized as an internal or external command,
>> operable program or batch file.
>
> Looks like eventmachine is a C extension. You either don't have a
> compiler installed, or your shell's environment isn't setup right.
> Therefore, it fails.
>
> Or did I miss the point of your question somehow?
>
> Regards,
>
> Dan

Whoops...forgot to mention.. I do have (various version) of Visual
Studio loaded - VS 6, VS 2003, VS 2005, VS 2008. I've tried with each
versions of VSVARS32.bat, which sets the env vars for the various
environments.

This is the error, for eventmachine, after running the VSVARS32.bat:

ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb update eventmachine
checking for windows.h... yes
checking for winsock.h... yes
checking for main() in kernel32.lib... yes
checking for main() in rpcrt4.lib... yes
checking for main() in gdi32.lib... yes
checking for main() in ssleay32.lib... no
creating Makefile

nmake

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

        cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Zi
-O2b2xg- -G6
-DHAVE_WINDOWS_H -DHAVE_WINSOCK_H  -D OS_WIN32 -D BUILD_FOR_RUBY -EHs
-GR -D WI
HOUT_SSL -c -Tpbinder.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for
80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

binder.cpp
        cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Zi
-O2b2xg- -G6
-DHAVE_WINDOWS_H -DHAVE_WINSOCK_H  -D OS_WIN32 -D BUILD_FOR_RUBY -EHs
-GR -D WI
HOUT_SSL -c -Tpcmain.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for
80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

cmain.cpp
        cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Zi
-O2b2xg- -G6
-DHAVE_WINDOWS_H -DHAVE_WINSOCK_H  -D OS_WIN32 -D BUILD_FOR_RUBY -EHs
-GR -D WI
HOUT_SSL -c -Tpcplusplus.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for
80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

cplusplus.cpp
        cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Zi
-O2b2xg- -G6
-DHAVE_WINDOWS_H -DHAVE_WINSOCK_H  -D OS_WIN32 -D BUILD_FOR_RUBY -EHs
-GR -D WI
HOUT_SSL -c -Tped.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for
80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

ed.cpp
        cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Zi
-O2b2xg- -G6
-DHAVE_WINDOWS_H -DHAVE_WINSOCK_H  -D OS_WIN32 -D BUILD_FOR_RUBY -EHs
-GR -D WI
HOUT_SSL -c -Tpem.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for
80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

em.cpp
em.cpp(1193) : error C2374: 'i' : redefinition; multiple initialization
        em.cpp(1186) : see declaration of 'i'
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.


Gem files will remain installed in
c:/ruby/lib/ruby/gems/1.8/gems/eventmachine-
.12.2 for inspection.
Results logged to
c:/ruby/lib/ruby/gems/1.8/gems/eventmachine-0.12.2/ext/gem_ma
e.out
Aee77dba395ece0a04c688b05b07cd63?d=identicon&s=25 Daniel Berger (Guest)
on 2008-10-22 19:25
(Received via mailing list)
On Oct 22, 11:08 am, "John T." <joh...@charter.net> wrote:
> > Therefore, it fails.
> environments.
> checking for main() in rpcrt4.lib... yes
> -O2b2xg- -G6
> -DHAVE_WINDOWS_H -DHAVE_WINSOCK_H  -D OS_WIN32 -D BUILD_FOR_RUBY -EHs
> -GR -D WI
> HOUT_SSL -c -Tped.cpp
> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for
> 80x86
> Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
>
> em.cpp
> em.cpp(1193) : error C2374: 'i' : redefinition; multiple initialization
>         em.cpp(1186) : see declaration of 'i'
> NMAKE : fatal error U1077: 'cl' : return code '0x2'
> Stop.

Hm. I had to make one (seemingly unrelated) tweak to em.cpp to build
eventmachine 0.12.2 with VC++ 8 on Windows XP Pro:

--- em.orig     Wed Oct 22 11:13:48 2008
+++ em.cpp      Wed Oct 22 11:20:48 2008
@@ -31,6 +31,9 @@
 #ifdef OS_WIN32
 unsigned gTickCountTickover;
 unsigned gLastTickCount;
+#ifndef EINTR
+#define EINTR WSAEINTR
+#endif
 #endif

After I made that change it seemed to build fine.

In any case, it's not a gem issue, but an issue with eventmachine. I
noticed they aren't shipping a gem with a pre-built binary with the
latest release, which would definitely be handy for the Windows users.

Regards,

Dan
This topic is locked and can not be replied to.