marvin at rectangular
Sep 8, 2008, 10:29 PM
Post #4 of 6
On Sep 8, 2008, at 7:51 PM, Paul-Kenji Cahier wrote:
> Strawberry perl actually uses mingw to provide as much unix
> compatibility as possible, so it does go easier than activeperl.
Yeah. I use MSVC because it's *more* difficult. If code satisfies
both MSVC and GCC, we're in pretty good shape as far as portability.
>> -MatchPostingScorer_init(MatchPostingScorer *self, Similarity *sim,
>> +MatchPostScorer_init(MatchPostingScorer *self, Similarity *sim,
>> PostingList *plist, Compiler *compiler)
> Thanks. That fixed the error.
> I had to actually comment out:
> typedef __int64 off64_t;
> in compat/windows/lfs.h(since mingw already defines it)
Actually, it's an error to include that file. It's only needed with
older versions of MSVC that don't define _ftelli64. Specifically,
it's needed by the MSVC 6 used to compile ActivePerl8xx.
At this point, I think it's best to drop support for Windows compilers
that don't provide _ftelli64. MSVC is on version 9 now.
r3847 zaps those files.
> I also had to #define DIR_SEP "/"
> since apparently mingw doesnt define it.
> (but there are mnor changes)
DIR_SEP is defined by Charmonizer (a configuration/probing tool). I'm
a little surprised that Charmonizer didn't successfully define DIR_SEP
as anything. The code that does the probing is in trunk/charmonizer/
src/Charmonizer/Probe/DirSep.charm (which is basically C code despite
the suffix). I guess none of the combos succeeded.
> I checked the mingw headers, and there's no sleep function in them,
> they do tell that one should call the win32 sleep or _sleep, which I
> and worked for the best as it stopped the sleep error.
OK, that code was in there, but it wasn't reached because I assumed
that if unistd.h was available we were all good.
In commit r3846, the order of the #ifdef tests has been reversed so
that "windows.h" is preferred.
> Sadly, for this one, I couldnt find an equivalent to kill.
> So I tried making it always return true(and not call kill) which
> did indeed let it finish compiling completly.
The #ifdef test order in ProcessID.c has also been reversed in r3846.
The Windows code doesn't use kill(), it uses OpenProcess(),
GetCurrentProcessId() and other yum yums.
> However it seems to be crashing on many tests.
> (according to the debugger, it crashes in kinosearch's dll, but I
> cant figure where since I dont have debug information)
Yeah, that's probably the same problem that's plaguing my MSVC build. :
( The common thread is that all of the failing tests call $invindexer-
>finish(). I'll take another hack at it.
Too bad there's no Valgrind for Windows -- that would make solving
this one much easier.
KinoSearch mailing list
KinoSearch [at] rectangular