From: KOSAKI Motohiro Date: 2011-11-29T00:15:36+09:00 Subject: [ruby-core:41373] Re: [ruby-trunk - Bug #5681][Open] Conflcting types for rb_w32_inet_ntop caused by duplicate definition under MinGW 2011/11/28 Luis Lavena : > > Issue #5681 has been reported by Luis Lavena. > > ---------------------------------------- > Bug #5681: Conflcting types for rb_w32_inet_ntop caused by duplicate definition under MinGW > http://redmine.ruby-lang.org/issues/5681 > > Author: Luis Lavena > Status: Open > Priority: Normal > Assignee: Nobuyoshi Nakada > Category: build > Target version: > ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32] building trunk > > > MinGW 4.5.2 (TDM builds), building against trunk (r33885) is causing the following error: > >
> compiling ../../../../../../ruby/ext/socket/option.c
> ../../../../../../ruby/ext/socket/option.c:441:1: error: conflicting types for 'rb_w32_inet_ntop'
> ../../../../../../ruby/include/ruby/win32.h:276:22: note: previous declaration of 'rb_w32_inet_ntop' was here
> make[2]: *** [option.o] Error 1
> make[2]: Leaving directory `/c/Users/Luis/Projects/oss/oneclick/rubyinstaller/sandbox/ruby19_build/ext/socket'
> make[1]: *** [ext/socket/all] Error 2
> make[1]: Leaving directory `/c/Users/Luis/Projects/oss/oneclick/rubyinstaller/sandbox/ruby19_build'
> make: *** [build-ext] Error 2
> 
> > All this triggered by recent refactoring of ruby/subst.h > > Applying the following patch solves the issue: > > diff --git a/ext/socket/option.c b/ext/socket/option.c > index 1f334bb..41765f9 100644 > --- a/ext/socket/option.c > +++ b/ext/socket/option.c > @@ -436,7 +436,7 @@ inspect_timeval_as_interval(int level, int optname, VALUE data, VALUE ret) > �* it is not distinguishable by the size. > �*/ > > -#ifndef HAVE_INET_NTOP > +#if !defined(HAVE_INET_NTOP) && !defined(_WIN32) > �static char * > �inet_ntop(int af, const void *addr, char *numaddr, size_t numaddr_len) > �{ > > Can I apply? Why win32.h don't turn on HAVE_INET_NTOP? I mean platform specific hack should be placed in platform specific files if possible. configure.in is also good place to place platform hacks. I apology if I'm missing mingw spefific something.