Skip Menu |

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the Inline CPAN distribution.

Report information
The Basics
Id: 85336
Status: resolved
Priority: 0/
Queue: Inline

People
Owner: Nobody in particular
Requestors: ANDK [...] cpan.org
KENTNL [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.53
Fixed in: (no value)

Attachments


Subject: Fails often when tested in parallel
Yesterday my smoker produced two fails while 4 processes were testing Inline 0.53: http://www.cpantesters.org/cpan/report/62c114d6-bda4-11e2-874b-cb6a10d45c6b http://www.cpantesters.org/cpan/report/64619edc-bda4-11e2-924f-916b10d45c6b It's possible that these two were disturbing each other, they were both distrubed by some other, succeeding test run. I smoked with 4 parallel processes. It's not for the first time this happens, I have produced more fail reports in the past but not always they come in pairs. But I have not seen more than two in a row. There seems to be a race condition somewhere. HTH,
On Wed May 15 23:11:13 2013, ANDK wrote: Show quoted text
> There seems to be a race condition somewhere.
Both of the affected test scripts (t/21read_DATA.t and t/22read_DATA.t) use the same Inline build directory (.Inline) - and they therefore need to access the same configuration file. If you think that could be the source of the problem, I could work around that by designating 2 different (separate) build directories for those 2 test scripts - thereby assuring that each script has its own copy of the configuration details. Is that worth trying ? (If so, let me know, and I'll upload a new developer version of Inline that does exactly that and we can see how that goes.) Cheers, Rob
CC: inline [...] perl.org
Subject: Re: [rt.cpan.org #85336] Fails often when tested in parallel
Date: Sat, 18 May 2013 16:40:20 +0200
To: bug-Inline [...] rt.cpan.org
From: Andreas Koenig <andreas.koenig.7os6VVqR [...] franz.ak.mind.de>
"Sisyphus via RT" <bug-Inline@rt.cpan.org> writes: Show quoted text
> Is that worth trying ?
This, or maybe apply some locking? Depends on how much work it is, and on how relevant for later real world behaviour it is. Except for this, I'd leave the judgement to the implementor;) -- andreas
Subject: Re: [rt.cpan.org #85336] Fails often when tested in parallel
Date: Sat, 18 May 2013 09:23:10 -0600
To: bug-Inline [...] rt.cpan.org
From: David Oswald <daoswald [...] gmail.com>
I get test failures in Inline::CPP when running tests in parallel. I've gone through Inline::CPP and implemented file locking to eliminate race conditions, but the issue persists. That leads me to believe that there needs to be a similar fix in Inline. Changing Inline's tests to use separate build directories wouldn't fix the underlying issue of Inline not supporting concurrency. Proper file locking probably would resolve the issue, not only for Inline, but also for plugins such as Inline::CPP. On Sat, May 18, 2013 at 8:40 AM, (Andreas J. Koenig) via RT <bug-Inline@rt.cpan.org> wrote: Show quoted text
> Sat May 18 10:40:47 2013: Request 85336 was acted upon. > Transaction: Correspondence added by andreas.koenig.7os6VVqR@franz.ak.mind.de > Queue: Inline > Subject: Re: [rt.cpan.org #85336] Fails often when tested in parallel > Broken in: 0.53 > Severity: (no value) > Owner: Nobody > Requestors: ANDK@cpan.org > Status: open > Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=85336 > > > > "Sisyphus via RT" <bug-Inline@rt.cpan.org> writes: >
>> Is that worth trying ?
> > This, or maybe apply some locking? Depends on how much work it is, and > on how relevant for later real world behaviour it is. > > Except for this, I'd leave the judgement to the implementor;) > > -- > andreas >
-- David Oswald daoswald@gmail.com
On Sat May 18 10:40:47 2013, andreas.koenig.7os6VVqR@franz.ak.mind.de wrote: Show quoted text
> "Sisyphus via RT" <bug-Inline@rt.cpan.org> writes: >
> > Is that worth trying ?
> > This, or maybe apply some locking? Depends on how much work it is, and > on how relevant for later real world behaviour it is. > > Except for this, I'd leave the judgement to the implementor;)
I don't think it's very relevant to real world usage - and hence my (personal) interest in this is nowhere near as keen as it would otherwise be. However, David Oswald wants to write some patches that will put in place file locking. If there's no problem with those patches, I'll apply them (when I receive them) and release a new devel version of Inline. Hopefully, that will keep everyone happy :-) Cheers, Rob

You'll note quite a few fail reports on cpan testers from me.

 

I had in fact just assumed Inline was entirely broken somehow due to how long I've been seeing these errors, and due to the way they failed suggesting strange things ( For instance, telling me I have a MAD perl when I do not is very very weird )

Indeed, double checking and running the tests without parallelism makes all the problems mysteriously vanish!

Subject: Inline_C_N.out
Download Inline_C_N.out
application/octet-stream 3.8k

Message body not shown because it is not plain text.

Subject: Inline_C_Y.out
Download Inline_C_Y.out
application/octet-stream 3.5k

Message body not shown because it is not plain text.

From: rurban [...] x-ray.at
On Thu Feb 20 03:51:10 2014, KENTNL wrote: Show quoted text
> You'll note quite a few fail reports on cpan testers from me.
Confirmed and repro even standalone. The pure Inline/C tests fail on SMP systems with make (tested with gmake 4.0) in t/25proto.t and t/08taint_1.p On 5.6 and 5.14 perls (linux) $@: make[1]: Entering directory `/home/rurban/Perl/Inline/C/_Inline_test/build/PROTO4_7cc8' make[1]: *** write jobserver: Bad file descriptor. Stop. make[1]: *** Waiting for unfinished jobs.... make[1]: *** write jobserver: Bad file descriptor. Stop. I'll try to fix it at https://github.com/rurban/Inline
From: rurban [...] x-ray.at
On Fri Apr 04 11:51:31 2014, rurban@x-ray.at wrote: Show quoted text
> On Thu Feb 20 03:51:10 2014, KENTNL wrote:
> > You'll note quite a few fail reports on cpan testers from me.
> > Confirmed and repro even standalone. > > The pure Inline/C tests fail on SMP systems with make (tested with > gmake 4.0) > in t/25proto.t and t/08taint_1.p > On 5.6 and 5.14 perls (linux) > > $@: make[1]: Entering directory > `/home/rurban/Perl/Inline/C/_Inline_test/build/PROTO4_7cc8' > make[1]: *** write jobserver: Bad file descriptor. Stop. > make[1]: *** Waiting for unfinished jobs.... > make[1]: *** write jobserver: Bad file descriptor. Stop. > > I'll try to fix it at https://github.com/rurban/Inline
The problem is obvious. make inherits these ENV values from the master make test: MAKEFLAGS = w --jobserver-fds=3,4 -j -- PREFIX=/usr/local LINKTYPE=dynamic LIBPERL_A=libperl.a MAKELEVEL = 2 MAKEOVERRIDES = ${-*-command-variables-*-} The jobserver-fds are wrong, need to be stripped. All tests with make -j4 pass now. See https://github.com/rurban/Inline
From: rurban [...] x-ray.at
Patches for the next release attached
Subject: 0004-MSWin32-disable-BUILD_NOISY-redirects-on-MSWin32-wit.patch
From ddb07b21a81466fe21ab92440edfdee5dc521100 Mon Sep 17 00:00:00 2001 From: Reini Urban <rurban@cpanel.net> Date: Fri, 4 Apr 2014 12:37:08 -0500 Subject: [PATCH 4/5] MSWin32: disable BUILD_NOISY redirects on MSWin32 with cmd.exe also print exitcode with failed commands --- C/C.pm | 5 ++++- Changes | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git C/C.pm C/C.pm index f76e34b..21f7dfe 100644 --- C/C.pm +++ C/C.pm @@ -804,6 +804,7 @@ sub makefile_pl { -f ($perl = $Config::Config{perlpath}) or ($perl = $^X) or croak "Can't locate your perl binary"; + $perl = qq{"$perl"} if $perl =~ m/\s/; $o->system_call("$perl Makefile.PL", 'out.Makefile_PL'); $o->fix_make; } @@ -841,6 +842,7 @@ sub system_call { defined $ENV{PERL_INLINE_BUILD_NOISY} ? $ENV{PERL_INLINE_BUILD_NOISY} : $o->{CONFIG}{BUILD_NOISY}; + $build_noisy = undef if $build_noisy and $^O eq 'MSWin32' and $Config::Config{sh} =~ /^cmd/; if (not $build_noisy) { $cmd = "$cmd > $output_file 2>&1"; } @@ -861,11 +863,12 @@ sub build_error_message { close OUTPUT; } + my $errcode = $? >> 8; return $output . <<END; A problem was encountered while attempting to compile and install your Inline $o->{API}{language} code. The command that failed was: - $cmd + \"$cmd\" with error code $errcode The build directory was: $build_dir diff --git Changes Changes index eed0437..641e8ba 100644 --- Changes +++ Changes @@ -1,5 +1,12 @@ # Revision history for Perl extension Inline. +--- version 0.54_01 +date 2014-04-04 12:22:37 + import Fcntl constants for flock (rurban) + flock only on supported platforms, would die on VMS,riscos,VOS (rurban) + print exitcode with failed commands + disable BUILD_NOISY redirects on MSWin32 with cmd.exe + --- version 0.54 date Sat 29 Mar 2014 Update version number to 0.54 -- 1.9.1
Subject: 0002-0.54_01-import-Fcntl-constants-for-flock.patch
From 96f009221620e148c55d1a50f7aa6d06f9940ad9 Mon Sep 17 00:00:00 2001 From: Reini Urban <rurban@cpanel.net> Date: Fri, 4 Apr 2014 11:31:33 -0500 Subject: [PATCH 2/5] 0.54_01: import Fcntl constants for flock Bareword "LOCK_EX" not allowed while "strict subs" in use at ../blib/lib/Inline.pm line 861 --- C/Makefile.PL | 4 ++-- Inline.pm | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git C/Makefile.PL C/Makefile.PL index 03306ee..214b7bd 100644 --- C/Makefile.PL +++ C/Makefile.PL @@ -36,8 +36,8 @@ Inline::C is packaged with Inline.pm because it is the most commonly used Inline Language Support Module (ILSM). See also: Inline::ASM, ::Awk, ::BC, ::Basic, ::Befunge, ::CPP (C++), ::CPR, - ::Foo, ::Guile, ::Java, ::Octave, ::PERL, ::Python, ::Ruby, ::TT, - ::Tcl and ::WebChat. + ::Filters, ::Foo, ::Guile, ::Java, ::Octave, ::PERL, ::Python, ::Ruby, + ::TT, ::Tcl and ::WebChat. Config.pm indicates that your version of Perl was built with this C compiler: diff --git Inline.pm Inline.pm index 062b29f..dc0d504 100644 --- Inline.pm +++ Inline.pm @@ -2,7 +2,7 @@ package Inline; use strict; require 5.006; -$Inline::VERSION = '0.54'; +$Inline::VERSION = '0.54_01'; $Inline::VERSION = eval $Inline::VERSION; use AutoLoader 'AUTOLOAD'; @@ -12,6 +12,7 @@ use Carp; use Cwd qw(abs_path cwd); use File::Spec; use File::Spec::Unix; +use Fcntl qw(LOCK_EX LOCK_UN); my %CONFIG = (); my @DATA_OBJS = (); -- 1.9.1
Subject: 0005-C-fix-make-jn-test-parallel-tests-Ticket-85336.patch
From 2ce1aed6d8980ae341cd3499d8efc36ce9b2ac5d Mon Sep 17 00:00:00 2001 From: Reini Urban <rurban@cpanel.net> Date: Fri, 4 Apr 2014 12:59:31 -0500 Subject: [PATCH 5/5] C: fix make -jn test, parallel tests (Ticket #85336) strip make jobserver-fds from MAKEFLAGS print MAKE* ENV values with failed make command --- C/C.pm | 10 +++++++++- C/Changes | 6 ++++++ Changes | 3 +-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git C/C.pm C/C.pm index 21f7dfe..0dfa73b 100644 --- C/C.pm +++ C/C.pm @@ -812,12 +812,14 @@ sub make { my ($o) = @_; my $make = $o->{ILSM}{MAKE} || $Config::Config{make} or croak "Can't locate your make binary"; + local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver-fds=[\d,]+)//; $o->system_call("$make", 'out.make'); } sub make_install { my ($o) = @_; my $make = $o->{ILSM}{MAKE} || $Config::Config{make} or croak "Can't locate your make binary"; + local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver-fds=[\d,]+)//; $o->system_call("$make pure_install", 'out.make_install'); } sub cleanup { @@ -864,7 +866,7 @@ sub build_error_message { } my $errcode = $? >> 8; - return $output . <<END; + $output .= <<END; A problem was encountered while attempting to compile and install your Inline $o->{API}{language} code. The command that failed was: @@ -876,6 +878,12 @@ $build_dir To debug the problem, cd to the build directory, and inspect the output files. END + if ($cmd =~ /^make >/) { + for (sort keys %ENV) { + $output .= "$_ = $ENV{$_}\n" if /^MAKE/; + } + } + return $output; } #============================================================================== diff --git C/Changes C/Changes index f3406ac..0019ec6 100644 --- C/Changes +++ C/Changes @@ -1,5 +1,11 @@ Revision history for Perl extension Inline::C. +--- version 0.54_01 +date 2014-04-04 + fix make -jn test, parallel tests (Ticket #85336) (rurban) + disable BUILD_NOISY redirects on MSWin32 with cmd.exe (rurban) + print exitcode with failed commands and MAKE* ENV values (rurban) + 0.54 Sat 29 mar 2014 Update version number to 0.54 Release version 0.54 to CPAN diff --git Changes Changes index 641e8ba..c128032 100644 --- Changes +++ Changes @@ -1,11 +1,10 @@ # Revision history for Perl extension Inline. --- version 0.54_01 -date 2014-04-04 12:22:37 +date 2014-04-04 import Fcntl constants for flock (rurban) flock only on supported platforms, would die on VMS,riscos,VOS (rurban) print exitcode with failed commands - disable BUILD_NOISY redirects on MSWin32 with cmd.exe --- version 0.54 date Sat 29 Mar 2014 -- 1.9.1
Subject: 0001-Makefile.PL-simplify-5.6-PREREQ_PM-handling.patch
From f195ee259a0247f382b961fa38cdd20f41c25c54 Mon Sep 17 00:00:00 2001 From: Reini Urban <rurban@cpanel.net> Date: Fri, 4 Apr 2014 10:31:41 -0500 Subject: [PATCH 1/5] Makefile.PL: simplify 5.6 PREREQ_PM handling --- Makefile.PL | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git Makefile.PL Makefile.PL index 8ea8cfb..158bafa 100644 --- Makefile.PL +++ Makefile.PL @@ -40,22 +40,14 @@ unless($md5_check) { my $twv = $] > 5.013 ? 0.23 : 0.21; -my $prereq_pm = $] > 5.007 ? - { - Data::Dumper => 2.09, - Digest::MD5 => 2.09, - Parse::RecDescent => 1.80, - File::Spec => 0.8, - Test::Warn => $twv, - } - - : - { - Data::Dumper => 2.09, - Digest::MD5 => 2.09, - Parse::RecDescent => 1.80, - File::Spec => 0.8, - }; +my $prereq_pm = { + Data::Dumper => 2.09, + Digest::MD5 => 2.09, + Parse::RecDescent => 1.80, + File::Spec => 0.8, + Test::Warn => $twv, +}; +delete $prereq_pm->{'Test::Warn'} if $] <= 5.007; WriteMakefile( NAME => 'Inline', -- 1.9.1
Subject: 0003-flock-only-on-supported-platforms.patch
From 8c217ba881b2e72b622aacacfcffab525125b6f3 Mon Sep 17 00:00:00 2001 From: Reini Urban <rurban@cpanel.net> Date: Fri, 4 Apr 2014 12:22:17 -0500 Subject: [PATCH 3/5] flock only on supported platforms see perldoc perlport --- Inline.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git Inline.pm Inline.pm index dc0d504..760f4f0 100644 --- Inline.pm +++ Inline.pm @@ -859,7 +859,7 @@ sub create_config_file { my $file = File::Spec->catfile($ARGV[0], $configuration_file); open CONFIG, "> $file" or croak M24_open_for_output_failed($file); - flock(CONFIG, LOCK_EX); + flock(CONFIG, LOCK_EX) if $^O !~ /^VMS|riscos|VOS$/; print CONFIG Inline::denter->new() ->indent(*version => $Inline::VERSION, *languages => \%languages, @@ -867,7 +867,7 @@ sub create_config_file { *modules => \%modules, *suffixes => \%suffixes, ); - flock(CONFIG, LOCK_UN); + flock(CONFIG, LOCK_UN) if $^O !~ /^VMS|riscos|VOS$/; close CONFIG; exit 0; } -- 1.9.1
On Fri Apr 04 14:02:09 2014, rurban@x-ray.at wrote: Show quoted text
> Patches for the next release attached
Thanks Reini. These patches have been applied (by hand) .... hope I got 'em right. Inline-0.54_01 (which contains these patches) has now been uploaded to CPAN. All being well, it will be re-released as Inline-0.55 in a week or so. For the Changes and C/Changes files I generally structure it so that Changes lists alterations to Inline and C/Changes alterations to Inline::C. (All this really achieves is to make it difficult for myself - especially in those cases where both packages are affected by the one set of changes.) One will find that Changes and C/Changes have not been altered in strict accordance with the provided patches. The only other alteration made to the provided patches was to rewrite the 2 occurrences of: local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver-fds=[\d,]+)//; as: if($ENV{MAKEFLAGS}) { local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver-fds=[\d,]+)//; } This was done to avoid 'uninitialized' warnings on systems where $ENV{MAKEFLAGS} was unset. Cheers, Rob
The local assignment to $ENV{MAKEFLAGS} won't apply outside the if block, will it? This should, though: local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver-fds=[\d,]+)// if $ENV{MAKEFLAGS}; Or it could be localised before that condition if postfix conditions are not preferred (albeit postfix conditions are used elsewhere in the package): local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS}; if($ENV{MAKEFLAGS}) { $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver-fds=[\d,]+)//; } Regards, Shawn. On Sun Apr 06 03:55:40 2014, SISYPHUS wrote: Show quoted text
> On Fri Apr 04 14:02:09 2014, rurban@x-ray.at wrote:
> > Patches for the next release attached
> > Thanks Reini. > These patches have been applied (by hand) .... hope I got 'em right. > Inline-0.54_01 (which contains these patches) has now been uploaded to > CPAN. > All being well, it will be re-released as Inline-0.55 in a week or so. > > For the Changes and C/Changes files I generally structure it so that > Changes lists alterations to Inline and C/Changes alterations to > Inline::C. (All this really achieves is to make it difficult for > myself - especially in those cases where both packages are affected by > the one set of changes.) > > One will find that Changes and C/Changes have not been altered in > strict accordance with the provided patches. > > The only other alteration made to the provided patches was to rewrite > the 2 occurrences of: > > local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver- > fds=[\d,]+)//; > > as: > > if($ENV{MAKEFLAGS}) { > local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver- > fds=[\d,]+)//; > } > > This was done to avoid 'uninitialized' warnings on systems where > $ENV{MAKEFLAGS} was unset. > > Cheers, > Rob
Subject: Re: [rt.cpan.org #85336] Fails often when tested in parallel
Date: Sun, 13 Apr 2014 21:17:05 +1000
To: <bug-Inline [...] rt.cpan.org>, <inline [...] perl.org>
From: <sisyphus1 [...] optusnet.com.au>
Show quoted text
-----Original Message----- From: Shawn Laffan via RT
> The local assignment to $ENV{MAKEFLAGS} won't apply outside the if block, > will it?
Duh !!
> This should, though: > > local $ENV{MAKEFLAGS} = $ENV{MAKEFLAGS} =~ s/(--jobserver-fds=[\d,]+)// > if $ENV{MAKEFLAGS};
Thanks - fixed in git. Cheers, Rob
RT-Send-CC: andreas.koenig.7os6VVqR [...] franz.ak.mind.de, rurban [...] x-ray.at, inline [...] perl.org, daoswald [...] gmail.com
I'd be very interested to know whether the change proposed in https://github.com/mohawk2/inline-pm/commit/9fef7cfbd731249579deb3510d96a318115a0928 fixes this issue.
Fixed as of 0.55_01
Re-opening because of the following patch that was applied to Inline-0.55 as part of this ticket: #################################### Subject: [PATCH 4/5] MSWin32: disable BUILD_NOISY redirects on MSWin32 with cmd.exe also print exitcode with failed commands diff --git C/C.pm C/C.pm index f76e34b..21f7dfe 100644 --- C/C.pm +++ C/C.pm @@ -804,6 +804,7 @@ sub makefile_pl { -f ($perl = $Config::Config{perlpath}) or ($perl = $^X) or croak "Can't locate your perl binary"; + $perl = qq{"$perl"} if $perl =~ m/\s/; $o->system_call("$perl Makefile.PL", 'out.Makefile_PL'); $o->fix_make; } @@ -841,6 +842,7 @@ sub system_call { defined $ENV{PERL_INLINE_BUILD_NOISY} ? $ENV{PERL_INLINE_BUILD_NOISY} : $o->{CONFIG}{BUILD_NOISY}; + $build_noisy = undef if $build_noisy and $^O eq 'MSWin32' and $Config::Config{sh} =~ /^cmd/; if (not $build_noisy) { $cmd = "$cmd > $output_file 2>&1"; } @@ -861,11 +863,12 @@ sub build_error_message { close OUTPUT; } + my $errcode = $? >> 8; return $output . <<END; A problem was encountered while attempting to compile and install your Inline $o->{API}{language} code. The command that failed was: - $cmd + \"$cmd\" with error code $errcode The build directory was: $build_dir #################################### I wondered at the time (and still wonder) what that was about - but I applied it anyway, as it didn't break any tests. However, it does break BUILD_NOISY on Win32 - to the extent that the compiler/linker commands/warnings of a successful build are not seen. simply removing the line: $build_noisy = undef if $build_noisy and $^O eq 'MSWin32' and $Config::Config{sh} =~ /^cmd/; from the patched (0.55) C.pm is sufficient to regain correct functioning of BUILD_NOISY on Windows. However, doing that probably also destroys whatever it was that the patch was designed to fix. This episode exposes a need for a test script that examines the output of a BUILD_NOISY build to detect that this output is present. It would be hard to check that the entire output is as it should be, but we should at least be able to check for the presence of certain key elements like - eg that the output matches the string "perl", that it matches the (interpolated)"$Config{LD}" and that it matches the name of any Inline-C function whose compilation is expected to emit a warning. I think this breakage of BUILD_NOISY needs to be fixed for the next stable release. Attached is a try.pl that demonstrates the problem. It shows the expected output of the script, and the actual output I get on one of my Win32 perls using Inline-0.55. Cheers, Rob
Subject: try.pl
use strict; use warnings; use Inline C => Config => BUILD_NOISY => 1, ; use Inline C => <<'EOC'; void inline_warner() { int *x; x = 2; } EOC print "DONE"; __END__ Should output (for me on Windows): ############################################# validate Stage Starting Build Preprocess Stage get_maps Stage Finished Build Preprocess Stage Starting Build Parse Stage Finished Build Parse Stage Starting Build Glue 1 Stage Finished Build Glue 1 Stage Starting Build Glue 2 Stage Finished Build Glue 2 Stage Starting Build Glue 3 Stage Finished Build Glue 3 Stage Starting Build Compile Stage Starting "perl Makefile.PL" Stage Writing Makefile for try_pl_534c Writing MYMETA.yml Finished "perl Makefile.PL" Stage Starting "make" Stage C:\perl514_M\bin\perl.exe C:\perl514_M\lib\ExtUtils\xsubpp -typemap "C:\perl514_M\lib\ExtUtils\typemap" -typemap "C:\_32\pscrpt\inline\typemap" try_pl_534c.xs > try_pl_534c.xsc && C:\perl514_M\bin\perl.exe -MExtUtils::Command -e "mv" -- try_pl_534c.xsc try_pl_534c.c gcc -c -I"C:/_32/pscrpt/inline" -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" "-IC:\perl514_M\lib\CORE" try_pl_534c.c try_pl_534c.xs: In function `inline_warner': try_pl_534c.xs:8: warning: assignment makes pointer from integer without a cast Running Mkbootstrap for try_pl_534c () C:\perl514_M\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 try_pl_534c.bs C:\perl514_M\bin\perl.exe -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"try_pl_534c\", 'DLBASE' => 'try_pl_534c', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def try_pl_534c.def --output-exp dll.exp g++ -o blib\arch\auto\try_pl_534c\try_pl_534c.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"c:\perl514_M\lib\CORE" -L"C:\home\rob\mingw_vista\i686-pc-mingw32\lib" try_pl_534c.o C:\perl514_M\lib\CORE\libperl514.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp dlltool --def try_pl_534c.def --base-file dll.base --output-exp dll.exp g++ -o blib\arch\auto\try_pl_534c\try_pl_534c.dll -mdll -s -L"c:\perl514_M\lib\CORE" -L"C:\home\rob\mingw_vista\i686-pc-mingw32\lib" try_pl_534c.o C:\perl514_M\lib\CORE\libperl514.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp C:\perl514_M\bin\perl.exe -MExtUtils::Command -e "chmod" -- 755 blib\arch\auto\try_pl_534c\try_pl_534c.dll C:\perl514_M\bin\perl.exe -MExtUtils::Command -e "cp" -- try_pl_534c.bs blib\arch\auto\try_pl_534c\try_pl_534c.bs C:\perl514_M\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 blib\arch\auto\try_pl_534c\try_pl_534c.bs dmake: Warning: -- Target [blibdirs] was made but the time stamp has not been updated. Finished "make" Stage Starting "make install" Stage Files found in blib\arch: installing files in blib\lib into architecture dependent library tree Installing C:\_32\pscrpt\inline\_Inline\lib\auto\try_pl_534c\try_pl_534c.dll Installing C:\_32\pscrpt\inline\_Inline\lib\auto\try_pl_534c\try_pl_534c.bs Finished "make install" Stage Starting Cleaning Up Stage Finished Cleaning Up Stage Finished Build Compile Stage DONE ####################################### But, with Inline-0.55 outputs: ####################################### validate Stage Starting Build Preprocess Stage get_maps Stage Finished Build Preprocess Stage Starting Build Parse Stage Finished Build Parse Stage Starting Build Glue 1 Stage Finished Build Glue 1 Stage Starting Build Glue 2 Stage Finished Build Glue 2 Stage Starting Build Glue 3 Stage Finished Build Glue 3 Stage Starting Build Compile Stage Starting "perl Makefile.PL" Stage Finished "perl Makefile.PL" Stage Starting "make" Stage Finished "make" Stage Starting "make install" Stage Finished "make install" Stage Starting Cleaning Up Stage Finished Cleaning Up Stage Finished Build Compile Stage DONE #######################################
FYI, the code to show the correct operation of BUILD_NOISY can be one-linered like so: perl -MInline=C,Config,BUILD_NOISY,1,FORCE_BUILD,1 -e "use Inline C => q[void inline_warner() { int *x = 2; }]" My reading of the patch in question is that it turns off BUILD_NOISY when it's Windows and the shell is cmd. If BUILD_NOISY does the right thing with Win32 and CMD, let's undo that change?
Subject: Re: [rt.cpan.org #85336] Fails often when tested in parallel
Date: Wed, 2 Jul 2014 19:52:09 +1000
To: <bug-Inline [...] rt.cpan.org>, <inline [...] perl.org>
From: "Sisyphus" <sisyphus1 [...] optusnet.com.au>
Show quoted text
----- Original Message ----- From: "Ed J via RT" <bug-Inline@rt.cpan.org>
> FYI, the code to show the correct operation of BUILD_NOISY can be > one-linered like so: > > perl -MInline=C,Config,BUILD_NOISY,1,FORCE_BUILD,1 -e "use Inline C => > q[void inline_warner() { int *x = 2; }]"
Yes, for a test I'm thinking just have the test script run something like that as a system command with output redirected to a file - and then check that file (to an extent that allows us to be confident that BUILD_NOISY is behaving as expected).
> My reading of the patch in question is that it turns off BUILD_NOISY when > it's Windows and the shell is cmd.
That's about the extent of it. But I'm damned if I can think of any reason that ought to be done.
> If BUILD_NOISY does the right thing with Win32 and CMD, let's undo that > change?
BUILD_NOISY has always done the right thing for me on Win32 in the cmd.exe shell - that is, until 0.55 ;-) So yes - we definitely need to revert to pre-0.55 behaviour. (This Windows laptop I'm using while I'm not at home doesn't have a git client, and I can't be bothered installing one on it. I'll be back home tomorrow night and will attend to this BUILD_NOISY issue then, if no-one else has.) Cheers, Rob
commit 0bcdb0f7dfa065ff5bf68f2f3033ec7c549e38c3 Author: ... Date: Wed Jul 2 22:43:44 2014 +0100 Undo change disabling BUILD_NOISY for Win32 when shell eq "cmd". In new 0.55_03: diff --git a/C/C.pm b/C/C.pm index 0b8073e..cc2f4a0 100644 --- a/C/C.pm +++ b/C/C.pm @@ -852,7 +852,8 @@ sub system_call { defined $ENV{PERL_INLINE_BUILD_NOISY} ? $ENV{PERL_INLINE_BUILD_NOISY} : $o->{CONFIG}{BUILD_NOISY}; - $build_noisy = undef if $build_noisy and $^O eq 'MSWin32' and $Config::Conf + # test this functionality with: + #perl -MInline=C,Config,BUILD_NOISY,1,FORCE_BUILD,1 -e "use Inline C => q[v if (not $build_noisy) { $cmd = "$cmd > $output_file 2>&1"; }