Backport #3887

extension socket fails to compile with "two or more data types in declaration specifiers" under MinGW

Added by luislavena (Luis Lavena) over 8 years ago. Updated almost 7 years ago.




This seems to be the same issue as the closed report #1292

make[1]: Entering directory /c/Users/Luis/Projects/oss/oci/rubyinstaller/sandbox/ruby18_build/ext/socket'
gcc -I. -I../.. -I../../../../../../ruby -I../../../../../../ruby/ext/socket -DHAVE_SOCKADDR_STORAGE -DHAVE_INET_NTOA -DHAVE_GETSERVBYPORT -Dsocklen_t=int -DHAVE_WSACLEANUP -DHAVE_GETHOSTNAME -I. -g -O2 -DFD_SETSIZE=256 -c ../../../../../../ruby/ext/socket/socket.c
In file included from ../../../../../../ruby/win32/win32.h:30:0,
from ../../../../../../ruby/defines.h:183,
from ../../../../../../ruby/ruby.h:37,
from ../../../../../../ruby/ext/socket/socket.c:13:
c:\users\luis\projects\oss\oci\rubyinstaller\sandbox\devkit\mingw\bin\../lib/gcc/mingw32/4.5.1/../../../../include/ws2tcpip.h:272:13: error: two or more data types in declaration specifiers
make[1]: *** [socket.o] Error 1
make[1]: Leaving directory
make: *** [all] Error 1

This is ruby_1_8_6 r29162 with #3883 patch applied.

Ruby configuration options were:

sh ../configure --enable-shared --with-winsock2 --disable-install-doc CFLAGS='-g -O2 -DFD_SETSIZE=256'

mkmf check for socklen_t:

have_type: checking for socklen_t... -------------------- no

"gcc -I../.. -I../../../../../../ruby -I../../../../../../ruby/ext/socket -I. -g -O2 -DFD_SETSIZE=256 -c conftest.c"
conftest.c:5:19: error: expected '=', ',', ';', 'asm' or 'attribute' before 'conftest_type'
conftest.c:6:22: error: expected '=', ',', ';', 'asm' or 'attribute' before 'conftestval'
checked program was:
/* begin /
1: #include
2: #include
4: /*top
5: typedef socklen_t conftest_type;
6: static conftest_type conftestval[sizeof(conftest_type)?1:-1];
/* end */

Checking rbconfig.rb COMMON_HEADERS:

CONFIG["COMMON_HEADERS"] = "windows.h winsock.h"

Which could indicate even --with-winsock2 has been defined, winsock.h is been forced.

Find attached the full file and generated Makefile, also config.log generated by the configure process.

GCC been used:
gcc (tdm-1) 4.5.1

Package provided by tdragon:


mkmf.log (25.9 KB) mkmf.log luislavena (Luis Lavena), 09/29/2010 09:01 PM
Makefile (4.38 KB) Makefile luislavena (Luis Lavena), 09/29/2010 09:01 PM (19.2 KB) luislavena (Luis Lavena), 09/29/2010 09:01 PM

Related issues

Is duplicate of Backport186 - Backport #3382: cannot cross-compile for winsock2 (mingw32)Assigned06/03/2010Actions



Updated by shyouhei (Shyouhei Urabe) over 8 years ago

  • Status changed from Open to Assigned
  • Assignee set to wyhaines (Kirk Haines)

duplicates #3382.

Updated by luislavena (Luis Lavena) almost 7 years ago

  • Description updated (diff)
  • Status changed from Assigned to Closed

Closing this out for two reasons: duplicate of #3382 and 1.8.6 has been dead long time ago.

Also available in: Atom PDF