Opened 12 years ago
Closed 5 years ago
#585 closed defect (fixed)
mingw64 trunk make check fail on badthreadtest
| Reported by: | robe | Owned by: | |
|---|---|---|---|
| Priority: | minor | Milestone: | 3.8.0 |
| Component: | Default | Version: | main |
| Severity: | Unassigned | Keywords: | |
| Cc: |
Description
strk,
Okay I've had enough of these false warnings. I think you and Mat decided this was not a mingw64 only issue, and that it shouldn't even be going into this loop and there is something wrong with your arm configure script. Error:
make threadtest.exe badthreadtest.exe
make[4]: Entering directory `/c/jenkins/geos/branches/3.4/tests/thread'
x86_64-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I../../include -I../../include/geos -I../../include -I../../tests/unit/tut -I../../capi -pedantic -Wall -ansi -Wno-long-long -ffloat-store -g -O2 -MT threadtest.o -MD -MP -MF .deps/threadtest.Tpo -c -o threadtest.o threadtest.c
In file included from c:\ming64\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/include/unistd.h:10:0,
from threadtest.c:19:
../../include/geos/io.h:19:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'geos'
In file included from ../../include/geos/io.h:48:0,
from c:\ming64\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/include/unistd.h:10,
from threadtest.c:19:
../../include/geos/io/ByteOrderDataInStream.h:30:61: fatal error: iosfwd: No such file or directory
compilation terminated.
make[4]: *** [threadtest.o] Error 1
make[4]: Leaving directory `/c/jenkins/geos/branches/3.4/tests/thread'
make[3]: *** [check-am] Error 2
make[3]: Leaving directory `/c/jenkins/geos/branches/3.4/tests/thread'
make[2]: *** [check-recursive] Error 1
make[2]: Leaving directory `/c/jenkins/geos/branches/3.4/tests'
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory `/c/jenkins/geos/branches/3.4'
make: *** [check] Error 2
Full gory details here:
http://winjen.postgis.net:1500/view/GEOS/job/GEOS_Trunk_ming/30/console
It should automatically rebuild after you commit a change. Well within 15 minutes, but you can manually build. You know the account.
Change History (18)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
Nevermind. The fundamental problem is that the platform.h.in is all wrong for 64-bit builds, but more or less right for 32-bit builds.
I discovered why my windows 7 box was exhibiting different failures.
In my jenkins install, I had hacked the platform.h.in to work for mingw64 bit using the hack:
http://www.gaia-gis.it/spatialite-3.0.0-BETA/mingw64_how_to.html#libgeos
, but it caused issues for 32-bit evidentally causing it to go thru this badthreadtest loop. So short answer your platform thingy doesn't work and I have to have a different one for 32 vs. 64 bit.
comment:3 by , 12 years ago
| Resolution: | invalid |
|---|---|
| Status: | closed → reopened |
Can WE PLEASE GET RID OF THIS badthreadtest or explain whether it is supposed to be tested or not. It's stopping the xmltester from being tested it seems.
comment:4 by , 12 years ago
Could try try renaming badtreadtest.c to badtreadtest.cpp, update the Makefile.am accordingly and restart from ./autogen.sh step ?
comment:5 by , 12 years ago
That didn't work. I had to rename both badthreadtest and threadtest and change the .am file, but just got different error:
x86_64-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I../../include -I../../include/geos -I../../include -I../../tests/unit/tut -I../../capi -DGEOS_INLINE -pedantic -Wall -ansi -Wno-long-long -ffloat-store -g -O2 -MT threadtest.o -MD -MP -MF .deps/threadtest.Tpo -c -o threadtest.o threadtest.cc
In file included from c:\ming64\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/include/unistd.h:10:0,
from threadtest.cc:19:
../../include/geos/io.h:61:2: warning: #warning *** DEPRECATED: You are using deprecated header io.h. Please, update your sources according to new layout of GEOS headers and namespaces
threadtest.cc:23:21: fatal error: pthread.h: No such file or directory
compilation terminated.
make[4]: *** [threadtest.o] Error 1
make[4]: Leaving directory `/c/jenkins/geos/branches/3.4/tests/thread'
make[3]: *** [check-am] Error 2
make[3]: Leaving directory `/c/jenkins/geos/branches/3.4/tests/thread'
make[2]: *** [check-recursive] Error 1
make[2]: Leaving directory `/c/jenkins/geos/branches/3.4/tests'
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory `/c/jenkins/geos/branches/3.4'
make: *** [check] Error 2
comment:9 by , 12 years ago
I'm looking again at the original report and can't understand this message:
In file included from c:\ming64\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/include/unistd.h:10:0,
from threadtest.c:19:
../../include/geos/io.h:19:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'geos'
Where is c:\ming64\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/include/unistd.h ? And what is including io.h ?
comment:10 by , 12 years ago
I see an unistd.h in:
C:\ming64\mingw64\x86_64-w64-mingw32\include\unistd.h
and it does have a io.h include in the file. The file is fairly short -- looks like this:
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _UNISTD_H
#define _UNISTD_H
#define __UNISTD_H_SOURCED__ 1
#include <io.h>
#include <process.h>
#include <getopt.h>
#ifdef __cplusplus
extern "C" {
#endif
#if !defined __NO_ISOCEXT
#include <sys/types.h> /* For useconds_t. */
int __cdecl __MINGW_NOTHROW usleep(useconds_t useconds);
#endif /* Not __NO_ISOCEXT */
#ifndef FTRUNCATE_DEFINED
#define FTRUNCATE_DEFINED
/* This is defined as a real library function to allow autoconf
to verify its existence. */
#if !defined(NO_OLDNAMES) || defined(_POSIX)
int ftruncate(int, off_t);
#ifndef __CRT__NO_INLINE
__CRT_INLINE int ftruncate(int __fd, off_t __length)
{
return _chsize (__fd, __length);
}
#endif /* !__CRT__NO_INLINE */
#else
int ftruncate(int, _off_t);
#ifndef __CRT__NO_INLINE
__CRT_INLINE int ftruncate(int __fd, _off_t __length)
{
return _chsize (__fd, __length);
}
#endif /* !__CRT__NO_INLINE */
#endif
#endif /* FTRUNCATE_DEFINED */
#ifndef _CRT_SWAB_DEFINED
#define _CRT_SWAB_DEFINED /* Also in stdlib.h */
void __cdecl swab(char *_Buf1,char *_Buf2,int _SizeInBytes);
#endif
#ifdef __cplusplus
}
#endif
#undef __UNISTD_H_SOURCED__
#endif /* _UNISTD_H */
comment:11 by , 12 years ago
interesting, so geos headers are hiding system ones! I guess renaming io.h.
Try removing -I../../include/geos from the CFLAGS
comment:12 by , 12 years ago
I'm afraid include/geos gets into DEAULT_INCLUDE due to
AM_CONFIG_HEADER([include/geos/platform.h])
we might need another macro to generate that file without it being in the default -I
comment:14 by , 12 years ago
I think we could rename io.h to geosIO.h, btw. I dubt anyone is using that header, and if it does it's known that C++ API is prone to changes.
Anyway a more elegant solution only affecting DEFAULT_INCLUDE would be much better IMHO
comment:15 by , 11 years ago
| Milestone: | 3.4.0 → GEOS Future |
|---|
don';t care since I'll be using Cmake from now on.
comment:16 by , 7 years ago
Has this been fixed? Does Robe's switch to CMake (finally! :-)) solve the problem?
comment:18 by , 5 years ago
| Milestone: | GEOS Fund Me → 3.8.0 |
|---|---|
| Resolution: | → fixed |
| Status: | reopened → closed |
I switched to CMake a while ago, but anyway autotools is working again as a result of recent changes in the past 10 days, soo we can close this one out as fixed in 3.8

This is a bit more complicated than I thought. My windows 7 64-bit which is running the same version and gcc mingw64 as the windows bot. The windows bot is windows 2003 64-bit.
These errors are not showing up at all on my windows 7, however I'm getting a lot of xmltester failures which I think is a new issue. I'll post as separate ticket.