This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Building setup.exe: conflicting declarations of ssize_t


On 9/6/2011 9:52 PM, Christopher Faylor wrote:
On Sat, Sep 03, 2011 at 10:19:57PM -0400, Ken Brown wrote:
Building setup.exe fails as follows:

depbase=`echo archive.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
        i686-pc-mingw32-g++ -DPACKAGE_NAME=\"setup\" -DPACKAGE_TARNAME=\"setup\" -DPACKAGE_VERSION=\"0\" -DPACKAGE_STRING=\"setup\ 0\" -DPACKAGE_BUGREPORT=\"xxx\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_LIBMINGW32=1 -DHAVE_ERRNO_H=1 -DHAVE_STRING=1 -DHAVE_STRING_H=1 -I.  -DLZMA_API_STATIC -I./libgetopt++/include  -Werror -Wall -Wno-uninitialized -Wpointer-arith -Wcomments -Wcast-align -Wwrite-strings -g -O2 -MT archive.o -MD -MP -MF $depbase.Tpo -c -o archive.o archive.cc&&\
        mv -f $depbase.Tpo $depbase.Po
In file included from archive.cc:26:0:
io_stream.h:37:21: error: conflicting declaration ??typedef long int ssize_t??
/usr/i686-pc-mingw32/sys-root/mingw/include/sys/types.h:118:18: error: ??ssize_t?? has a previous declaration as ??typedef _ssize_t ssize_t??

The conflicting declarations result from the following recent change to the mingw-runtime package:

2011-08-19 Chris Sutcliffe<xxx>

* include/sys/types.h (ssize_t): Defined as int as opposed to long.

The following patch enables the build to complete, but I don't know if it's the right way to fix this:

--- io_stream.h.orig    2009-12-18 06:59:54.000000000 -0500
+++ io_stream.h 2011-09-03 21:14:44.664235000 -0400
@@ -33,7 +33,7 @@
  */

//Where is this defined?
-#if defined(_WIN32)&&  ! defined(__CYGWIN__)
+#if defined(_WIN32)&&  ! defined(__CYGWIN__)&&  ! defined(HAVE_SYS_TYPES_H)
typedef signed long ssize_t;
#endif

That's definitely the wrong approach to fix the problem.


Why not just include sys/types.h in io_stream.h?

You mean just do this?


--- io_stream.h.orig    2009-12-18 06:59:54.000000000 -0500
+++ io_stream.h 2011-09-07 07:49:04.458548000 -0400
@@ -32,10 +32,7 @@
  * make mkdir_p fit in the hierarchy
  */

-//Where is this defined?
-#if defined(_WIN32) && ! defined(__CYGWIN__)
-typedef signed long ssize_t;
-#endif
+#include <sys/types.h>

 #if __GNUC__
 #define _ATTR_(foo) __attribute__ foo

Ken


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]