Skip Menu |

From: bulk88 <bulk88 [...] hotmail.com>
To: perlbug [...] perl.org
Subject: [PATCH] add parallelness to win32/GNUmakefile
Date: Fri, 13 Nov 2015 14:26:43 -0500
Download (untitled) / with headers
text/plain 5.5k
This is a bug report for perl from bulk88@hotmail.com, generated with the help of perlbug 1.40 running under perl 5.23.5. ----------------------------------------------------------------- [Please describe your issue here] See attached patches. They are kindda a branch, although I greatly dislike merge commits. Note the patching of EUMM, I am not sure if I fixed up all the files correctly for patching /cpan, porting tests passed for me but IDK if they will pass on someone elses machine. Reducing the amount of shell callouts for appending to mini config.h, and adding VC support to gmake are the next steps, but I need to limit diff sizes for historical reference reasons/debugging, so I am drawing a line at stopping at this point. gmake looks much more promising in parallel mode than dmake, less IO and less CPU, and it doesn't suffer "running out of work" like dmake does. Extensions_normalize always is launched/run after Extensions finishes with dmake, since Extensions_normalize and Extensions are at 2 different heights on the virutal tree and dmake's parallel finding algorithm only looks horizontally for work to do, not further down/up the tree. With gmake Extensions_normalize runs as soon as mktables is done and a CPU core becomes available, so Extensions_normalize always finishes before Extensions, which is good. Also gmake implements .SUFFIXES so I can tell gmake to not look for yacc/pascal/fortran/lex source code when doing implicit pattern match building, and .SUFFIXES allows me to disable the unused by perl builtin/default rules. I can't remove the default match suffixes with dmake since there is no .SUFFIXES in dmake, so once a pattern match rule is created, it can never be deleted (you can rewrite the recipe line for it, but you can't remove the file suffix from what is stat-ed on disk). So I think gmake will be my personal favorite maketool once I get VC perl building on it. Using .SUFFIXES with gmake (not in any patch above, will do it in the future) total CPU time for gmake.exe when from 2.3 sec to 1.7 sec CPU for a "gmake all". [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=low --- Site configuration information for perl 5.23.5: Configured by Owner at Sun Oct 25 19:14:27 2015. Summary of my perl5 (revision 5 version 23 subversion 5) configuration: Derived from: 644207b7a8ff7a2b1661c05a7f9ac2df9a5dad91 Platform: osname=MSWin32, osvers=6.1, archname=MSWin32-x86-multi-thread uname='' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef useithreads=define, usemultiplicity=define use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cl', ccflags ='-nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS', optimize='-O1 -MD -Zi -DNDEBUG -GL', cppflags='-DWIN32' ccversion='18.00.31101', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234, doublekind=3 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8, longdblkind=0 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"c:\p523\lib\CORE" -machine:x86 "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'" -subsystem:console,"5.01"' libpth=\lib libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl523.lib gnulibc_version='' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"c:\p523\lib\CORE" -machine:x86 "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'" -subsystem:console,"5.01"' Locally applied patches: uncommitted-changes --- @INC for perl 5.23.5: C:/p523/site/lib C:/p523/lib . --- Environment for perl 5.23.5: HOME (unset) LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=C:\p523\site\bin;C:\p523\bin;C:\Program Files\ActiveState Komodo Edit 9\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseGit\bin;C:\Program Files\Microsoft Windows Performance Toolkit\;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;C:\Program Files\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SDKs\TypeScript\1.0\;C:\Program Files\TortoiseHg\; PERL_BADLANG (unset) SHELL (unset)

Message body is not shown because sender requested not to inline it.

Message body is not shown because sender requested not to inline it.

Message body is not shown because sender requested not to inline it.

Message body is not shown because sender requested not to inline it.

Message body is not shown because sender requested not to inline it.

RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 439b
On Fri Nov 13 11:27:10 2015, bulk88 wrote: Show quoted text
> This is a bug report for perl from bulk88@hotmail.com, > generated with the help of perlbug 1.40 running under perl 5.23.5. > > > ----------------------------------------------------------------- > [Please describe your issue here] > > See attached patches.
The parallelness to gnumakefile patch is failing tests, do not apply. I will have to revise it. -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 683b
On Sat Nov 14 12:18:17 2015, bulk88 wrote: Show quoted text
> On Fri Nov 13 11:27:10 2015, bulk88 wrote:
> > This is a bug report for perl from bulk88@hotmail.com, > > generated with the help of perlbug 1.40 running under perl 5.23.5. > > > > > > ----------------------------------------------------------------- > > [Please describe your issue here] > > > > See attached patches.
> > The parallelness to gnumakefile patch is failing tests, do not apply. > I will have to revise it.
The fixes were related to the changes to libperl***.a/perl****.lib and their relationship to the CORE dir and a parallel build race condition related to libperl***.a's lifecycle. -- bulk88 ~ bulk88 at hotmail.com
Subject: 0001-Cache-is_make_type.patch
From 0a9c31fed9356c659cfd4631354732de957f6922 Mon Sep 17 00:00:00 2001 From: Ed J <mohawk2@users.noreply.github.com> Date: Mon, 19 Jan 2015 00:17:31 +0000 Subject: [PATCH 1/5] Cache is_make_type --- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm | 19 ++++++++++++++----- cpan/ExtUtils-MakeMaker/t/cd.t | 2 ++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm index 570ea72..154f784 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm @@ -202,19 +202,28 @@ Returns true if C<<$self->make>> is the given type; possibilities are: =cut +my %maketype2true; +# undocumented - so t/cd.t can still do its thing +sub _clear_maketype_cache { %maketype2true = () } + sub is_make_type { my($self, $type) = @_; + return $maketype2true{$type} if defined $maketype2true{$type}; (undef, undef, my $make_basename) = $self->splitpath($self->make); - return 1 if $make_basename =~ /\b$type\b/i; # executable's filename - return 0 if $make_basename =~ /\b(dmake|nmake)\b/i; # Never fall through for dmake/nmake + return $maketype2true{$type} = 1 + if $make_basename =~ /\b$type\b/i; # executable's filename + return $maketype2true{$type} = 0 + if $make_basename =~ /\b(dmake|nmake|gmake)\b/i; # Never fall through for dmake/nmake/gmake # now have to run with "-v" and guess my $redirect = $self->can_redirect_error ? '2>&1' : ''; my $make = $self->make || $self->{MAKE}; my $minus_v = `"$make" -v $redirect`; - return 1 if $type eq 'gmake' and $minus_v =~ /GNU make/i; - return 1 if $type eq 'bsdmake' + return $maketype2true{$type} = 1 + if $type eq 'gmake' and $minus_v =~ /GNU make/i; + return $maketype2true{$type} = 1 + if $type eq 'bsdmake' and $minus_v =~ /^usage: make \[-BeikNnqrstWwX\]/im; - 0; # it wasn't whatever you asked + $maketype2true{$type} = 0; # it wasn't whatever you asked } diff --git a/cpan/ExtUtils-MakeMaker/t/cd.t b/cpan/ExtUtils-MakeMaker/t/cd.t index 16f6667..67dfd98 100644 --- a/cpan/ExtUtils-MakeMaker/t/cd.t +++ b/cpan/ExtUtils-MakeMaker/t/cd.t @@ -26,6 +26,7 @@ my @cd_args = ($dir, "command1", "command2"); { local *make = sub { "nmake" }; + $mm->_clear_maketype_cache; my @dirs = (File::Spec->updir) x 2; my $expected_updir = File::Spec->catdir(@dirs); @@ -39,6 +40,7 @@ qq{cd $dir { local *make = sub { "dmake" }; + $mm->_clear_maketype_cache; ::is $mm->cd(@cd_args), qq{cd $dir && command1 -- 1.8.0.msysgit.0
Subject: 0002-Optimise-is_make_type-RE.patch
From c450a5eda4dfd78cc244aa7b8214e70f2fce5448 Mon Sep 17 00:00:00 2001 From: Ed J <mohawk2@users.noreply.github.com> Date: Mon, 19 Jan 2015 13:09:09 +0000 Subject: [PATCH 2/5] Optimise is_make_type RE --- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm index 154f784..bd8ab3b 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm @@ -213,7 +213,7 @@ sub is_make_type { return $maketype2true{$type} = 1 if $make_basename =~ /\b$type\b/i; # executable's filename return $maketype2true{$type} = 0 - if $make_basename =~ /\b(dmake|nmake|gmake)\b/i; # Never fall through for dmake/nmake/gmake + if $make_basename =~ /\b[gdn]make\b/i; # Never fall through for dmake/nmake/gmake # now have to run with "-v" and guess my $redirect = $self->can_redirect_error ? '2>&1' : ''; my $make = $self->make || $self->{MAKE}; -- 1.8.0.msysgit.0
Subject: 0003-Win32-gmake-needs-SHELL-to-be-specified.patch
From ee7026b2d574e3d97fda23ad92acbb700e795243 Mon Sep 17 00:00:00 2001 From: Sisyphus <sisyphus@cpan.org> Date: Tue, 30 Dec 2014 12:56:58 +1100 Subject: [PATCH 3/5] Win32 gmake needs SHELL to be specified Signed-off-by: Ed J <mohawk2@users.noreply.github.com> --- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 17 ++++++++++++++--- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm | 11 +++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm index 535b1f3..d0e4410 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm @@ -317,8 +317,8 @@ sub const_cccmd { =item const_config (o) -Defines a couple of constants in the Makefile that are imported from -%Config. +Sets SHELL if needed, then defines a couple of constants in the Makefile +that are imported from %Config. =cut @@ -326,7 +326,8 @@ sub const_config { # --- Constants Sections --- my($self) = shift; - my @m = <<"END"; + my @m = $self->specify_shell(); # Usually returns empty string + push @m, <<"END"; # These definitions are from config.sh (via $INC{'Config.pm'}). # They may have been overridden via Makefile.PL or on the command line. @@ -3176,6 +3177,16 @@ MAKE_FRAG return $m; } +=item specify_shell + +Specify SHELL if needed - not done on Unix. + +=cut + +sub specify_shell { + return ''; +} + =item quote_paren Backslashes parentheses C<()> in command line arguments. diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm index 47ce479..852223b 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm @@ -232,6 +232,17 @@ sub platform_constants { return $make_frag; } +=item specify_shell + +Set SHELL to $ENV{COMSPEC} only if make is type 'gmake'. + +=cut + +sub specify_shell { + my $self = shift; + return '' unless $self->is_make_type('gmake'); + "\nSHELL = $ENV{COMSPEC}\n"; +} =item constants -- 1.8.0.msysgit.0
Subject: 0004-backport-EUMM-commits.patch

Message body is not shown because it is too large.

Subject: 0005-add-parallelness-to-win32-GNUmakefile.patch

Message body is not shown because it is too large.

RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 765b
On Thu Nov 19 19:17:32 2015, bulk88 wrote: Show quoted text
> On Sat Nov 14 12:18:17 2015, bulk88 wrote:
> > On Fri Nov 13 11:27:10 2015, bulk88 wrote:
> > > This is a bug report for perl from bulk88@hotmail.com, > > > generated with the help of perlbug 1.40 running under perl 5.23.5. > > > > > > > > > ----------------------------------------------------------------- > > > [Please describe your issue here] > > > > > > See attached patches.
> > > > The parallelness to gnumakefile patch is failing tests, do not apply. > > I will have to revise it.
> > The fixes were related to the changes to libperl***.a/perl****.lib and > their relationship to the CORE dir and a parallel build race condition > related to libperl***.a's lifecycle.
Bump. -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 7.8k
On Wed Dec 09 12:10:43 2015, bulk88 wrote: Show quoted text
> On Thu Nov 19 19:17:32 2015, bulk88 wrote:
> > On Sat Nov 14 12:18:17 2015, bulk88 wrote:
> > > On Fri Nov 13 11:27:10 2015, bulk88 wrote:
> > > > This is a bug report for perl from bulk88@hotmail.com, > > > > generated with the help of perlbug 1.40 running under perl 5.23.5. > > > > > > > > > > > > ----------------------------------------------------------------- > > > > [Please describe your issue here] > > > > > > > > See attached patches.
> > > > > > The parallelness to gnumakefile patch is failing tests, do not apply. > > > I will have to revise it.
> > > > The fixes were related to the changes to libperl***.a/perl****.lib and > > their relationship to the CORE dir and a parallel build race condition > > related to libperl***.a's lifecycle.
> > Bump.
You mentioned on IRC that these patches break the build and you pasted this failure. ------------------------------------------ run/locale.t ...................................................... 1/37 # Faile d test 3 - no locales where LC_NUMERIC breaks at ./test.pl line 1027 # got "Can\'t load \'../lib/auto/POSIX/POSIX.dll\' for module POSIX: load_f ile:%1 is not a valid Win32 application at ../lib/XSLoader.pm line 71.\n\000 at ../lib/POSIX.pm line 36.\nCompilation failed in require at - line 2.\nBEGIN fail ed--compilation aborted at - line 2." # expected "" # PROG: # for (qw(Afrikaans Albanian American Arabic Basque Breton Bulgarian C Chinese C roatian Czech Danish Dutch English Estonian Finnish Galician German Greek Greenl andic Hebrew Hungarian Indonesian Italian Japanese Korean Latvian Lithuanian Nor wegian Occitan Polish Russian Slovak Slovenian Swedish Thai Turkish Welsh ja)) { # use POSIX qw(locale_h); # use locale; # setlocale(LC_NUMERIC, "$_") or next; # my $s = sprintf "%g %g", 3.1, 3.1; # next if $s eq '3.1 3.1' || $s =~ /^(3.+1) \1$/; # print "$_ $s\n"; # } # STATUS: 65280 ----------------------------------------- I can't reproduce it with GCC 4.8.3, 4.8.3 passes harness enough ------------------------------------------- Test Summary Report ------------------- op/taint.t (Wstat: 0 Tests: 807 Failed: 2) Failed tests: 1, 393 ../cpan/ExtUtils-MakeMaker/t/echo.t (Wstat: 512 Test s: 18 Failed: 2) Failed tests: 9, 12 Non-zero exit status: 2 Files=2409, Tests=738461, 2466 wallclock secs (96.67 usr + 24.50 sys = 121.17 CP U) Result: FAIL GNUmakefile:1342: recipe for target 'test' failed gmake: *** [test] Error 4 C:\p523\src\win32>gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=C:/sp3220/c/bin/../libexec/gcc/i686-w64-mingw32/4.8.3/lto-wr apper.exe Target: i686-w64-mingw32 Configured with: ../../../src/gcc-4.8.3/configure --host=i686-w64-mingw32 --buil d=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-gxx-includ e-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --di sable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-lto --enable-graphite --enable- checking=release --enable-fully-dynamic-string --enable-version-specific-runtime -libs --enable-sjlj-exceptions --disable-isl-version-check --disable-cloog-versi on-check --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-bootstrap - -disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable -symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with -libiconv --with-system-zlib --with-gmp=/opt/build/prerequisites/i686-w64-mingw3 2-static --with-mpfr=/opt/build/prerequisites/i686-w64-mingw32-static --with-mpc =/opt/build/prerequisites/i686-w64-mingw32-static --with-isl=/opt/build/prerequi sites/i686-w64-mingw32-static --with-cloog=/opt/build/prerequisites/i686-w64-min gw32-static --enable-cloog-backend=isl --with-pkgversion='i686-posix-sjlj, built by strawberryperl.com project' CFLAGS='-O2 -pipe -I/opt/build/i686-483-posix-sj lj-rt_v3/mingw32/opt/include -I/opt/build/prerequisites/i686-zlib-static/include -I/opt/build/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/opt/build/i686-483-posix-sjlj-rt_v3/mingw32/opt/include -I/opt/build/prerequ isites/i686-zlib-static/include -I/opt/build/prerequisites/i686-w64-mingw32-stat ic/include' CPPFLAGS= LDFLAGS='-pipe -L/opt/build/i686-483-posix-sjlj-rt_v3/ming w32/opt/lib -L/opt/build/prerequisites/i686-zlib-static/lib -L/opt/build/prerequ isites/i686-w64-mingw32-static/lib' Thread model: posix gcc version 4.8.3 (i686-posix-sjlj, built by strawberryperl.com project) C:\p523\src\win32> ------------------------------------------- Mingw 3.4.5 C syntax errors but I dont think that it is the patches in this ticket that caused it (CC bug since newer GCCs dont report this?) ------------------------------------------- Running Mkbootstrap for PerlIO::encoding () C:\p523\src\miniperl.exe "-I..\..\lib" "-I..\..\lib" -MExtUtils::Command -e chmo d -- 644 "encoding.bs" "..\..\miniperl.exe" "-I..\..\lib" "-I..\..\lib" "..\..\lib\ExtUtils/xsubpp" -t ypemap "..\..\lib\ExtUtils\typemap" encoding.xs > encoding.xsc && C:\p523\src\m iniperl.exe "-I..\..\lib" "-I..\..\lib" -MExtUtils::Command -e mv -- encoding.xs c encoding.c gcc -c -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_I MPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.23\" -DXS_VERSION=\"0.23\" "-I..\..\lib\CORE" encodin g.c encoding.xs:633: error: initializer element is not constant encoding.xs:633: error: (near initialization for `PerlIO_encode.Open') encoding.xs:636: error: initializer element is not constant encoding.xs:636: error: (near initialization for `PerlIO_encode.Fileno') encoding.xs:638: error: initializer element is not constant encoding.xs:638: error: (near initialization for `PerlIO_encode.Read') encoding.xs:639: error: initializer element is not constant encoding.xs:639: error: (near initialization for `PerlIO_encode.Unread') encoding.xs:641: error: initializer element is not constant encoding.xs:641: error: (near initialization for `PerlIO_encode.Seek') encoding.xs:646: error: initializer element is not constant encoding.xs:646: error: (near initialization for `PerlIO_encode.Eof') encoding.xs:647: error: initializer element is not constant encoding.xs:647: error: (near initialization for `PerlIO_encode.Error') encoding.xs:648: error: initializer element is not constant encoding.xs:648: error: (near initialization for `PerlIO_encode.Clearerr') encoding.xs:649: error: initializer element is not constant encoding.xs:649: error: (near initialization for `PerlIO_encode.Setlinebuf') encoding.xs:651: error: initializer element is not constant encoding.xs:651: error: (near initialization for `PerlIO_encode.Get_bufsiz') encoding.xs:652: error: initializer element is not constant encoding.xs:652: error: (near initialization for `PerlIO_encode.Get_ptr') encoding.xs:653: error: initializer element is not constant encoding.xs:653: error: (near initialization for `PerlIO_encode.Get_cnt') encoding.xs:654: error: initializer element is not constant encoding.xs:654: error: (near initialization for `PerlIO_encode.Set_ptrcnt') C:\p523\src\win32>gcc -v Reading specs from C:/Perl3216/site/lib/auto/MinGW/bin/../lib/gcc/mingw32/3.4.5/ specs Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --wi th-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --dis able-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --d isable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --with out-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enabl e-hash-synchronization --enable-libstdcxx-debug Thread model: win32 gcc version 3.4.5 (mingw-vista special r3) ----------------------------------------------- -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 360b
On Wed Dec 23 02:41:12 2015, bulk88 wrote: Show quoted text
> On Wed Dec 09 12:10:43 2015, bulk88 wrote:
> > Bump.
> > You mentioned on IRC that these patches break the build and you pasted > this failure.
Forgot to add, rebased on blead patch set posted at http://perl5.git.perl.org/perl.git/shortlog/refs/heads/smoke-me/bulk88/gnumkfpara -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 2.7k
On Wed Dec 23 02:41:12 2015, bulk88 wrote: Show quoted text
> On Wed Dec 09 12:10:43 2015, bulk88 wrote:
> > On Thu Nov 19 19:17:32 2015, bulk88 wrote:
> > > On Sat Nov 14 12:18:17 2015, bulk88 wrote:
> > > > On Fri Nov 13 11:27:10 2015, bulk88 wrote:
> > > > > This is a bug report for perl from bulk88@hotmail.com, > > > > > generated with the help of perlbug 1.40 running under perl > > > > > 5.23.5. > > > > > > > > > > > > > > > ----------------------------------------------------------------- > > > > > [Please describe your issue here] > > > > > > > > > > See attached patches.
> > > > > > > > The parallelness to gnumakefile patch is failing tests, do not > > > > apply. > > > > I will have to revise it.
> > > > > > The fixes were related to the changes to libperl***.a/perl****.lib > > > and > > > their relationship to the CORE dir and a parallel build race > > > condition > > > related to libperl***.a's lifecycle.
> > > > Bump.
> > You mentioned on IRC that these patches break the build and you pasted > this failure. > ------------------------------------------ > run/locale.t ...................................................... > 1/37 # Faile > d test 3 - no locales where LC_NUMERIC breaks at ./test.pl line 1027 > # got "Can\'t load \'../lib/auto/POSIX/POSIX.dll\' for module > POSIX: load_f > ile:%1 is not a valid Win32 application at ../lib/XSLoader.pm line > 71.\n\000 at > ../lib/POSIX.pm line 36.\nCompilation failed in require at - line > 2.\nBEGIN fail > ed--compilation aborted at - line 2." > # expected "" > # PROG: > # for (qw(Afrikaans Albanian American Arabic Basque Breton Bulgarian C > Chinese C > roatian Czech Danish Dutch English Estonian Finnish Galician German > Greek Greenl > andic Hebrew Hungarian Indonesian Italian Japanese Korean Latvian > Lithuanian Nor > wegian Occitan Polish Russian Slovak Slovenian Swedish Thai Turkish > Welsh ja)) { > > # use POSIX qw(locale_h); > # use locale; > # setlocale(LC_NUMERIC, "$_") or next; > # my $s = sprintf "%g %g", 3.1, 3.1; > # next if $s eq '3.1 3.1' || $s =~ /^(3.+1) \1$/; > # print "$_ $s\n"; > # } > # STATUS: 65280 > ----------------------------------------- > > I can't reproduce it with GCC 4.8.3, 4.8.3 passes harness enough
I think I figured it out. gmake passes the -j flag through env vars to "sub makes". The EUMM per module child makes were running in parallel mode randomly if a build slot was available in the pool (unlike dmake, gmake processes all talk to each other through IPC, so -j4 can be 2 processes in parent gmake proc, and 1 per 2 child procs) and parallel EUMM on Win32 has never been tested/supported/kinks so the child EUMM make runs should be serial, not parallel . I've started work on MSVC for gnumakefile, and disabled parallelism for make_ext.pl launched makefiles in the MSVC patch. -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 2.9k
On Sat Dec 26 17:03:49 2015, bulk88 wrote: Show quoted text
> On Wed Dec 23 02:41:12 2015, bulk88 wrote:
> > On Wed Dec 09 12:10:43 2015, bulk88 wrote:
> > > On Thu Nov 19 19:17:32 2015, bulk88 wrote:
> > > > On Sat Nov 14 12:18:17 2015, bulk88 wrote:
> > > > > On Fri Nov 13 11:27:10 2015, bulk88 wrote:
> > > > > > This is a bug report for perl from bulk88@hotmail.com, > > > > > > generated with the help of perlbug 1.40 running under perl > > > > > > 5.23.5. > > > > > > > > > > > > > > > > > > ----------------------------------------------------------------- > > > > > > [Please describe your issue here] > > > > > > > > > > > > See attached patches.
> > > > > > > > > > The parallelness to gnumakefile patch is failing tests, do not > > > > > apply. > > > > > I will have to revise it.
> > > > > > > > The fixes were related to the changes to > > > > libperl***.a/perl****.lib > > > > and > > > > their relationship to the CORE dir and a parallel build race > > > > condition > > > > related to libperl***.a's lifecycle.
> > > > > > Bump.
> > > > You mentioned on IRC that these patches break the build and you > > pasted > > this failure. > > ------------------------------------------ > > run/locale.t ...................................................... > > 1/37 # Faile > > d test 3 - no locales where LC_NUMERIC breaks at ./test.pl line 1027 > > # got "Can\'t load \'../lib/auto/POSIX/POSIX.dll\' for module > > POSIX: load_f > > ile:%1 is not a valid Win32 application at ../lib/XSLoader.pm line > > 71.\n\000 at > > ../lib/POSIX.pm line 36.\nCompilation failed in require at - line > > 2.\nBEGIN fail > > ed--compilation aborted at - line 2." > > # expected "" > > # PROG: > > # for (qw(Afrikaans Albanian American Arabic Basque Breton Bulgarian > > C > > Chinese C > > roatian Czech Danish Dutch English Estonian Finnish Galician German > > Greek Greenl > > andic Hebrew Hungarian Indonesian Italian Japanese Korean Latvian > > Lithuanian Nor > > wegian Occitan Polish Russian Slovak Slovenian Swedish Thai Turkish > > Welsh ja)) { > > > > # use POSIX qw(locale_h); > > # use locale; > > # setlocale(LC_NUMERIC, "$_") or next; > > # my $s = sprintf "%g %g", 3.1, 3.1; > > # next if $s eq '3.1 3.1' || $s =~ /^(3.+1) \1$/; > > # print "$_ $s\n"; > > # } > > # STATUS: 65280 > > ----------------------------------------- > > > > I can't reproduce it with GCC 4.8.3, 4.8.3 passes harness enough
> > I think I figured it out. gmake passes the -j flag through env vars to > "sub makes". The EUMM per module child makes were running in parallel > mode randomly if a build slot was available in the pool (unlike dmake, > gmake processes all talk to each other through IPC, so -j4 can be 2 > processes in parent gmake proc, and 1 per 2 child procs) and parallel > EUMM on Win32 has never been tested/supported/kinks so the child EUMM > make runs should be serial, not parallel . I've started work on MSVC > for gnumakefile, and disabled parallelism for make_ext.pl launched > makefiles in the MSVC patch.
bump -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 4.1k
details for "win32/GNUmakefile collapse shell echos into one liners" All these benchmarks numbers were done on battery so they are unusually large for modern PCs. BEFORE C:\p523\src\win32>timeit -f t.dat gmake mini\.exists CCTYPE=MSVC120 if not exist "mini" mkdir "mini" del /f config.h Could Not Find C:\p523\src\win32\config.h copy config_H.vc config.h 1 file(s) copied. rem. > mini\.exists Version Number: Windows NT 6.1 (Build 7601) Exit Time: 1:16 pm, Monday, January 4 2016 Elapsed Time: 0:00:02.265 Process Time: 0:00:01.092 System Calls: 164148 Context Switches: 57010 Page Faults: 66654 Bytes Read: 1286171 Bytes Written: 157499 Bytes Other: 3320129 C:\p523\src\win32>plclean C:\p523\src\win32>cd .. & git clean -dfX & cd win32 Removing win32/config.h Removing win32/mini/ C:\p523\src\win32>timeit -f t.dat gmake mini\.exists CCTYPE=MSVC120 if not exist "mini" mkdir "mini" del /f config.h Could Not Find C:\p523\src\win32\config.h copy config_H.vc config.h 1 file(s) copied. rem. > mini\.exists Version Number: Windows NT 6.1 (Build 7601) Exit Time: 1:16 pm, Monday, January 4 2016 Elapsed Time: 0:00:02.279 Process Time: 0:00:00.998 System Calls: 166397 Context Switches: 60285 Page Faults: 66545 Bytes Read: 1271839 Bytes Written: 157543 Bytes Other: 3318049 C:\p523\src\win32>plclean C:\p523\src\win32>cd .. & git clean -dfX & cd win32 Removing win32/config.h Removing win32/mini/ C:\p523\src\win32>timeit -f t.dat gmake mini\.exists CCTYPE=MSVC120 if not exist "mini" mkdir "mini" del /f config.h Could Not Find C:\p523\src\win32\config.h copy config_H.vc config.h 1 file(s) copied. rem. > mini\.exists Version Number: Windows NT 6.1 (Build 7601) Exit Time: 1:16 pm, Monday, January 4 2016 Elapsed Time: 0:00:02.302 Process Time: 0:00:01.076 System Calls: 164930 Context Switches: 63418 Page Faults: 66371 Bytes Read: 1271795 Bytes Written: 157499 Bytes Other: 3310300 C:\p523\src\win32> AFTER C:\p523\src\win32>timeit -f t.dat gmake mini\.exists CCTYPE=MSVC120 if not exist "mini" mkdir "mini" del /f config.h Could Not Find C:\p523\src\win32\config.h copy config_H.vc config.h 1 file(s) copied. rem. > mini\.exists Version Number: Windows NT 6.1 (Build 7601) Exit Time: 1:15 pm, Monday, January 4 2016 Elapsed Time: 0:00:00.400 Process Time: 0:00:00.156 System Calls: 24859 Context Switches: 7485 Page Faults: 13735 Bytes Read: 456196 Bytes Written: 181265 Bytes Other: 506120 C:\p523\src\win32>plclean C:\p523\src\win32>cd .. & git clean -dfX & cd win32 Removing win32/config.h Removing win32/mini/ C:\p523\src\win32>timeit -f t.dat gmake mini\.exists CCTYPE=MSVC120 if not exist "mini" mkdir "mini" del /f config.h Could Not Find C:\p523\src\win32\config.h copy config_H.vc config.h 1 file(s) copied. rem. > mini\.exists Version Number: Windows NT 6.1 (Build 7601) Exit Time: 1:15 pm, Monday, January 4 2016 Elapsed Time: 0:00:00.450 Process Time: 0:00:00.187 System Calls: 32688 Context Switches: 8958 Page Faults: 16166 Bytes Read: 1608059 Bytes Written: 155843 Bytes Other: 506512 C:\p523\src\win32>plclean C:\p523\src\win32>cd .. & git clean -dfX & cd win32 Removing win32/config.h Removing win32/mini/ C:\p523\src\win32>timeit -f t.dat gmake mini\.exists CCTYPE=MSVC120 if not exist "mini" mkdir "mini" del /f config.h Could Not Find C:\p523\src\win32\config.h copy config_H.vc config.h 1 file(s) copied. rem. > mini\.exists Version Number: Windows NT 6.1 (Build 7601) Exit Time: 1:15 pm, Monday, January 4 2016 Elapsed Time: 0:00:00.404 Process Time: 0:00:00.171 System Calls: 30185 Context Switches: 8482 Page Faults: 13772 Bytes Read: 440336 Bytes Written: 155843 Bytes Other: 508276 C:\p523\src\win32> From 2.3 wall seconds to 0.4 wall seconds, 575% improvement, not bad. Writing mini config.h is a critical task for parallelism, since *NONE* of the miniperl CC .c->o processes (2-16 or 2-∞ processes in parallel) can be launched until mini config.h target is finished. -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 1.7k
On Sat Dec 26 17:03:49 2015, bulk88 wrote: Show quoted text
> I think I figured it out. gmake passes the -j flag through env vars to > "sub makes". The EUMM per module child makes were running in parallel > mode randomly if a build slot was available in the pool (unlike dmake, > gmake processes all talk to each other through IPC, so -j4 can be 2 > processes in parent gmake proc, and 1 per 2 child procs) and parallel > EUMM on Win32 has never been tested/supported/kinks so the child EUMM > make runs should be serial, not parallel . I've started work on MSVC > for gnumakefile, and disabled parallelism for make_ext.pl launched > makefiles in the MSVC patch.
I'm not seeing the corrupt POSIX.dll on gcc builds with your smoke-me branch. This block from GNUmakefile is talking about dmake: #EUMM on Win32 isn't ready for parallel make, so only allow this file to be parallel #$(MAKE) will contain the -P that this makefile was called with, which is bad for #make_ext.pl since upto jobs*jobs processes will run instead of jobs #also any recipie containing $(MAKE) is special cased by dmake to execute recipes #containing $(MAKE) when "dmake -n" is executed, which causes recursive calls #to dmake, which means "dmake -n" is then broken as a diagnostic tool since #"dmake -n" will invoke all the make_ext.pl scripts build things instead of #showing what to build since $(MAKE) is an arg to make_ext.pl, not an invocation #of the dmake process PLMAKE = gmake with a fair bit of discussion about dmake that doesn't apply to gmake. It looks like you did a search and replace on the version number in dist/ExtUtils-CBuilder/ which has incorrectly replaced the version in the header of the Changes file. I don't see any description of the change made to EU::CB in your commit comments. Tony
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 718b
On Mon Jan 04 15:21:23 2016, tonyc wrote: Show quoted text
> > This block from GNUmakefile is talking about dmake:
fixed in repushed smoke-me/bulk88/gnumkfpara branch. Show quoted text
> It looks like you did a search and replace on the version number in > dist/ExtUtils-CBuilder/ which has incorrectly replaced the version in > the header of the Changes file. I don't see any description of the > change made to EU::CB in your commit comments.
I added comments to commit. The Changes change was actually a typo fix by me, not a description of a new release. I added a line about the libperl when building core location change change to Changes, but it is completely meaningless for a CPAN release of CBuilder. -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 903b
On Tue Jan 05 03:10:10 2016, bulk88 wrote: Show quoted text
> On Mon Jan 04 15:21:23 2016, tonyc wrote:
> > > > This block from GNUmakefile is talking about dmake:
> > fixed in repushed smoke-me/bulk88/gnumkfpara branch. > >
> > It looks like you did a search and replace on the version number in > > dist/ExtUtils-CBuilder/ which has incorrectly replaced the version in > > the header of the Changes file. I don't see any description of the > > change made to EU::CB in your commit comments.
> > I added comments to commit. The Changes change was actually a typo fix > by me, not a description of a new release. I added a line about the > libperl when building core location change change to Changes, but it > is completely meaningless for a CPAN release of CBuilder.
i discovered a bug in branch smoke-me/bulk88/gnumkfpara and the branch is being revised locally, do not merge -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 448b
On Tue Jan 19 19:47:10 2016, bulk88 wrote: Show quoted text
> i discovered a bug in branch smoke-me/bulk88/gnumkfpara and the branch > is being revised locally, do not merge
Updated branch smoke-me/bulk88/gnumkfpara pushed. CFG_VARS and "s was the bug. I also added the unused comctl32 manifest in all XS DLLs commit since it touches all 3 makefiles and can't be applied to blead since GNUMakefile in blead has no MSVC support. -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 699b
On Wed Jan 20 09:19:39 2016, bulk88 wrote: Show quoted text
> On Tue Jan 19 19:47:10 2016, bulk88 wrote:
> > i discovered a bug in branch smoke-me/bulk88/gnumkfpara and the > > branch > > is being revised locally, do not merge
> > Updated branch smoke-me/bulk88/gnumkfpara pushed. CFG_VARS and "s was > the bug. I also added the unused comctl32 manifest in all XS DLLs > commit since it touches all 3 makefiles and can't be applied to blead > since GNUMakefile in blead has no MSVC support.
Thanks, applied as 273df2b1892ae130ffc042e07ffa9c25a0a75605 through 273df2b1892ae130ffc042e07ffa9c25a0a75605 and added 273df2b1892ae130ffc042e07ffa9c25a0a75605 since we've had a release. Thanks for your work on this. Tony
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 600b
On Wed Jan 20 09:19:39 2016, bulk88 wrote: Show quoted text
> On Tue Jan 19 19:47:10 2016, bulk88 wrote:
> > i discovered a bug in branch smoke-me/bulk88/gnumkfpara and the > > branch > > is being revised locally, do not merge
> > Updated branch smoke-me/bulk88/gnumkfpara pushed. CFG_VARS and "s was > the bug. I also added the unused comctl32 manifest in all XS DLLs > commit since it touches all 3 makefiles and can't be applied to blead > since GNUMakefile in blead has no MSVC support.
The new test for this is failing on Jenkins, but isn't failing for me on the test box we have access to via dromedary. Tony
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 663b
On Sun Jan 24 19:16:42 2016, tonyc wrote: Show quoted text
> The new test for this is failing on Jenkins, but isn't failing for me > on the test box we have access to via dromedary. > > Tony
As discussed on IRC you can push a change to blead that changes the ok() to a cmp_ok() in http://perl5.git.perl.org/perl.git/blobdiff/6f9606402d094dd61cc66ca20e1768729a7dd4cb..67c6176d33ade0a5f5b42c778ed3ed70afb49e81:/ext/XS-APItest/t/win32.t You can also do a "diag(Data::Dumper::Dumper([Comctl32Version()]))" and push that or something similar since Comctl32Version() returns all 4 version parts that make up a DLL's version resource version file. -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 778b
On Sun Jan 24 19:16:42 2016, tonyc wrote: Show quoted text
> On Wed Jan 20 09:19:39 2016, bulk88 wrote:
> > On Tue Jan 19 19:47:10 2016, bulk88 wrote:
> > > i discovered a bug in branch smoke-me/bulk88/gnumkfpara and the > > > branch > > > is being revised locally, do not merge
> > > > Updated branch smoke-me/bulk88/gnumkfpara pushed. CFG_VARS and "s was > > the bug. I also added the unused comctl32 manifest in all XS DLLs > > commit since it touches all 3 makefiles and can't be applied to blead > > since GNUMakefile in blead has no MSVC support.
> > The new test for this is failing on Jenkins, but isn't failing for me > on the test box we have access to via dromedary.
For anyone following along this was caused by a problem in the batch file used for the build test in Jenkins. Tony
Download (untitled) / with headers
text/plain 252b
Thank you for submitting this report. You have helped make Perl better. With the release of Perl 5.24.0 on May 9, 2016, this and 149 other issues have been resolved. Perl 5.24.0 may be downloaded via https://metacpan.org/release/RJBS/perl-5.24.0


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org