Project

General

Profile

Actions

Bug #5681

closed

Conflcting types for rb_w32_inet_ntop caused by duplicate definition under MinGW

Added by luislavena (Luis Lavena) over 10 years ago. Updated over 10 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
-
Backport:
[ruby-core:41370]

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 10 years ago

  • ruby -v changed from ruby 1.9.3p0 (2011-10-30) [i386-mingw32] building trunk to -

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.

Updated by luislavena (Luis Lavena) over 10 years ago

On Mon, Nov 28, 2011 at 12:15 PM, KOSAKI Motohiro
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 10 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, 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

Updated by luislavena (Luis Lavena) over 10 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 10 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 10 years ago

  • Status changed from Open to Closed

Oops, disregard, I had dirty files.

Actions

Also available in: Atom PDF