develooper Front page | perl.perl5.porters | Postings from October 2015

Re: GCC builds failing many tests on Windows

Thread Previous | Thread Next
Steve Hay via perl5-porters
October 20, 2015 12:50
Re: GCC builds failing many tests on Windows
Message ID:
On 18 October 2015 at 20:37, bulk 88 <> wrote:
>> Date: Sun, 18 Oct 2015 13:57:36 +0100
>> Subject: Re: GCC builds failing many tests on Windows
>> From:
>> To:
>> CC:
>> It isn't a parallel build; it's just a straight "dmake". But you're
>> right that ext/POSIX/ and ext/POSIX/ are both 0
>> bytes, which is rather worrying, especially since this happens every
>> time for me...
> For me it happens only when doing a "dmake all" or "dmake test" parallel
> (-P3) build. If I do "dmake -P3 Extensions" POSIX builds correctly every
> time, so I think the race is between Extensions_nonxs and Extensions targets
> (both are runs) in parallel mode. Whether I use Visual C or GCC
> with dmake makefile doesnt seem to make a difference. A git clean and
> another "dmake -P3 all" and POSIX builds usually builds normal. If I drop
> the -P3, git clean, goto serial dmake build it always goes away. I've never
> had the bug hit more than 2 times in a row in parallel mode with git cleans
> between. When I tried to step POSIX's Makefile.PL a month ago, those 2 files
> always get written out to disk correctly.

I can't understand how this doesn't happen for you. It happens every
time for me on two different machines (Windows 7 and Windows 8.1).

The build sequence with a straight "dmake" is:

XS extensions
non-XS extensions

The problem is that POSIX is an XS extension, but its Makefile.PL
needs XSLoader, which is non-XS so hasn't been made yet. The POSIX
Makefile.PL fails every time with this error:

Can't locate in @INC (you may need to install the XSLoader
module) (@INC contains: [...]) at C:\Dev\Git\perl\lib/ line 26.
BEGIN failed--compilation aborted at C:\Dev\Git\perl\lib/ line 28.
Compilation failed in require at
line 954.
512 from ext/POSIX's Makefile.PL at ..\ line 523.

It's the WriteConstants() call that fails. WriteMakefile() has already
run successfully by this stage, so a Makefile has been written and
POSIX.dll builds, but and end up zero size.
(Crucially, they *exist* so the #include in POSIX.c doesn't fail,
hence the build continues.)

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About