[KinoSearch] Windows - Kinosearch

Paul-Kenji Cahier pkc at F1-Photo.com
Tue Sep 9 04:27:53 PDT 2008



> 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*
>>> -MatchPostingScorer_init(MatchPostingScorer *self, Similarity *sim,
>>> +MatchPostScorer_init(MatchPostingScorer *self, Similarity *sim,
>>>                         PostingList *plist, Compiler *compiler)
>> Thanks. That fixed the error.

> Groovy.

>> 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,  
>> though
>> they do tell that one should call the win32 sleep or _sleep, which I  
>> changed
>> 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.

> Try that.

>> 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.

With all those fixes it now builds perfectly.
The tests still fail (of course).

>> 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.

Wouldn't a debug build allow to trace easily where it crashes?
(I assume you already did that but that the crashing is harder
to figure out)


Another question I had was whether it's possible or not to give
some specific compile options(-g for example with gcc?) without
resorting to direct dirty editing.

If you need any stacktraces I could provide them if everything
is built with debug information.



> Marvin Humphrey
> Rectangular Research
> http://www.rectangular.com/


> _______________________________________________
> KinoSearch mailing list
> KinoSearch at rectangular.com
> http://www.rectangular.com/mailman/listinfo/kinosearch


_______________________________________________
KinoSearch mailing list
KinoSearch at rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch




More information about the kinosearch mailing list