in reply to Re^2: waitpid on Win32 ... wait forever
in thread waitpid on Win32 ... wait forever
... the executable that should be built by $cmd doesn't get built.
Well, one problem (assuming that you're using MS VC for these builds), is that -o is not a valid switch for cl. It would have to be /Fe to name the executable; or /Fo to name the object file. (It's unclear to me which -o is trying to do).
Also, the script doesn't add an extension to $output, so if it is the object file, the linker probably won't find it. If it is the executable, it won't work.
Which brings us to the question: Why are they suppressing and ignoring all the output from the commands? The very stuff which would tell you what is going wrong. The answer is of course--because it would mess with the totally useless bean-counting output from the test harness!
This stuff is unbelievably buggy.
Without having looked at the rest of what's going on, just the two .t files you've linked, I do not understand at all why they are using IPC::Open3 (which historically I've had no end of trouble with on windows anyway), rather than a simple system command?
All they seem to be doing is running a command and waiting for it to finish. The only benefit of using open3 seems to be the ability to ignore the output from the commands stdout & stderr so they do not interfere with the test harness' use of stdout & stderr (which I've said enough on previously and which falls on deaf ears!).
Personally, I'd try replacing all the uses of open3() with system $cmd 2>&1 >nul, which I believe would achieve the same thing and avoid the problems of open3 entirely.
Under 32-bit, I always installed Net::SSLeay via PPM (from trouchelle.com or maybe one of jenda's repositories?)...so someone must have solved these problems under win32. I find it hard to believe that they are seriously more severe under win64?
I could be wrong on that--I'm still only just starting out on win64--there is a lot to discover--but mostly so far, most things seem to work much the same.
Suggestion: Service the output using:
my $pid = open3 ....; print "# $_" while <$out>; print "# $_" while <$err>; waitpid $pid, 0;
By commentifying the compiler output it should get passed through by the test harness and allow you to see the diagnostics that will tell you what is going on. Maybe?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: waitpid on Win32 ... wait forever
by syphilis (Archbishop) on May 08, 2009 at 11:42 UTC |