Daniel Berger
10/22/2008 5:24:00 PM
On Oct 22, 11:08=A0am, "John T." <joh...@charter.net> wrote:
> 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: =A0While executing gem ... (Gem::Installer::ExtensionBuildError)
> =A0 =A0 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 =A0 Version 6.00.8168.0
> Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
>
> =A0 =A0 =A0 =A0 cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Z=
i
> -O2b2xg- -G6
> -DHAVE_WINDOWS_H -DHAVE_WINSOCK_H =A0-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
> =A0 =A0 =A0 =A0 cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Z=
i
> -O2b2xg- -G6
> -DHAVE_WINDOWS_H -DHAVE_WINSOCK_H =A0-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
> =A0 =A0 =A0 =A0 cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Z=
i
> -O2b2xg- -G6
> -DHAVE_WINDOWS_H -DHAVE_WINSOCK_H =A0-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
> =A0 =A0 =A0 =A0 cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Z=
i
> -O2b2xg- -G6
> -DHAVE_WINDOWS_H -DHAVE_WINSOCK_H =A0-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
> =A0 =A0 =A0 =A0 cl -I. -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -MD -Z=
i
> -O2b2xg- -G6
> -DHAVE_WINDOWS_H -DHAVE_WINSOCK_H =A0-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
> =A0 =A0 =A0 =A0 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