Bug #5681
closedConflcting types for rb_w32_inet_ntop caused by duplicate definition under MinGW
Description
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?
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
- ruby -v changed from ruby 1.9.3p0 (2011-10-30) [i386-mingw32] building trunk to -
2011/11/28 Luis Lavena luislavena@gmail.com:
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/5681Author: 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 trunkMinGW 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 2All 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.
Updated by luislavena (Luis Lavena) over 13 years ago
On Mon, Nov 28, 2011 at 12:15 PM, KOSAKI Motohiro
kosaki.motohiro@gmail.com wrote:
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.
Agree, but this is new, wasn't present before and Windows have lot of
substitute functions that maybe Nobu and Usa can comment better.
--
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
Updated by usa (Usaku NAKAMURA) over 13 years ago
Hello,
In message "[ruby-core:41375] Re: [ruby-trunk - Bug #5681][Open] Conflcting types for rb_w32_inet_ntop caused by duplicate definition under MinGW"
on Nov.29,2011 00:21:14, luislavena@gmail.com wrote:
Agree, but this is new, wasn't present before and Windows have lot of
substitute functions that maybe Nobu and Usa can comment better.
Nobu is the breaker and he is tracking this problem :)
Regards,¶
U.Nakamura usa@garbagecollect.jp
Updated by luislavena (Luis Lavena) over 13 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
Nobu fixed this but Redmine didn't close it.
Updated by drbrain (Eric Hodel) over 13 years ago
- Status changed from Closed to Open
=begin
r33919 broke the socket extension on OS X:
have_func: checking for inet_ntop(0, (const void *)0, (char *)0, 0)... -------------------- yes
"clang -o conftest -I../../.ext/include/x86_64-darwin11.2.0 -I../.././include -I../.././ext/socket -I../.. -I../../. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -pipe conftest.c -L. -L../.. -L. -fstack-protector -L/usr/local/lib -lruby-static -lpthread -ldl -lobjc "
conftest.c:6:15: warning: implicit declaration of function 'inet_ntop' is invalid in C99 [-Wimplicit-function-declaration]
int t(void) { inet_ntop(0, (const void *)0, (char )0, 0); return 0; }
^
1 warning generated.
checked program was:
/ begin */
1: #include "ruby.h"
2:
3: /top/
4: int main(void) {return 0;}
5: extern int t(void);
6: int t(void) { inet_ntop(0, (const void *)0, (char *)0, 0); return 0; }
This patch to ext/socket/extconf.rb fixes it:
-have_func('inet_ntop(0, (const void *)0, (char *)0, 0)') or
+have_func('inet_ntop(0, (const void *)0, (char *)0, 0)', 'arpa/inet.h') or
=end
Updated by drbrain (Eric Hodel) over 13 years ago
- Status changed from Open to Closed
Oops, disregard, I had dirty files.