develooper Front page | perl.perl5.porters | Postings from February 2020

Re: Scalar-List-Utils 1.54 breaks Win32 builds.

Thread Previous
From:
demerphq
Date:
February 8, 2020 13:48
Subject:
Re: Scalar-List-Utils 1.54 breaks Win32 builds.
Message ID:
CANgJU+UfZWEgrSwysgEQknA3cYMbiFdJsSYpJRQA4=PYdUFMyA@mail.gmail.com
On Sat, 8 Feb 2020 at 14:45, demerphq <demerphq@gmail.com> wrote:

> On Sat, 8 Feb 2020 at 14:30, sisyphus <sisyphus359@gmail.com> wrote:
>
>> Just an FYI update-type-thingy on this.
>> 1.54 didn't break anything that wasn't already broken in 1.53 or 1.52
>> (probably even earlier).
>> What it did do was to include a corrected t/uniq.t that *exposed* that
>> pre-existing failure - which is now fixed in current github
>> Dual-Life/Scalar-List-Utils
>>
>> The CI tests that get run for Dual-Life/Scalar-List-Utils don't (AFAIK)
>> test Windows systems.
>> How will they detect issues specific to mingw-built Windows perls ?
>> The failing test on the Windows smokers has nothing to do with trunc() -
>> which is available to mingw-built Windows perls.
>>
>
> We have CI set up for the Perl/perl5 repo. It produced this report from
> what is called msvc-100-x86:
>
> 2020-02-08T03:40:52.1245248Z Writing Makefile for List::Util
> 2020-02-08T03:40:52.9460670Z Running Mkbootstrap for Util ()
> 2020-02-08T03:40:52.9935016Z 	D:\a\perl5\perl5\miniperl.exe "-I..\..\lib" -MExtUtils::Command -e chmod -- 644 "Util.bs"
> 2020-02-08T03:40:53.0587814Z 	D:\a\perl5\perl5\miniperl.exe "-I..\..\lib" -MExtUtils::Command::MM -e cp_nonempty -- Util.bs ..\..\lib\auto\List\Util\Util.bs 644
> 2020-02-08T03:40:53.0846123Z 	"..\..\miniperl.exe" "-I..\..\lib" "..\..\lib\ExtUtils\xsubpp"  -typemap D:\a\perl5\perl5\lib\ExtUtils\typemap  ListUtil.xs > ListUtil.xsc
> 2020-02-08T03:40:53.2576444Z 	D:\a\perl5\perl5\miniperl.exe "-I..\..\lib" -MExtUtils::Command -e mv -- ListUtil.xsc ListUtil.c
> 2020-02-08T03:40:53.3084234Z 	cl -c    -nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -O1 -Zi -GL    -DVERSION=\"1.54\"  -DXS_VERSION=\"1.54\"  "-I..\..\lib\CORE"  -DPERL_EXT -DNV_MAX_PRECISION=17 -FdListUtil.pdb ListUtil.c
> 2020-02-08T03:40:53.3185527Z ListUtil.c
> 2020-02-08T03:40:53.5154183Z ListUtil.xs(218) : warning C4013: 'trunc' undefined; assuming extern returning int
>
>
> Notice the above ^^^^^^^.
>
> 2020-02-08T03:40:53.5327236Z ListUtil.xs(1263) : warning C4018: '>' : signed/unsigned mismatch
> 2020-02-08T03:40:53.5327898Z ListUtil.xs(1272) : warning C4018: '<' : signed/unsigned mismatch
> 2020-02-08T03:40:53.5649886Z 	"..\..\miniperl.exe" "-I..\..\lib" -MExtUtils::Mksymlists  -e "Mksymlists('NAME'=>\"List::Util\", 'DLBASE' => 'Util', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
> 2020-02-08T03:40:53.6075350Z 	link -out:..\..\lib\auto\List\Util\Util.dll -dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg  -libpath:"c:\perl\lib\CORE"  -machine:x86 ListUtil.obj   "..\..\lib\CORE\perl531.lib" 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 -def:Util.def
> 2020-02-08T03:40:53.6310882Z    Creating library ..\..\lib\auto\List\Util\Util.lib and object ..\..\lib\auto\List\Util\Util.exp
> 2020-02-08T03:40:53.6320113Z ListUtil.obj : error LNK2001: unresolved external symbol _trunc
> 2020-02-08T03:40:53.6320525Z ..\..\lib\auto\List\Util\Util.dll : fatal error LNK1120: 1 unresolved externals
> 2020-02-08T03:40:53.6353998Z NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\link.EXE"' : return code '0x460'
> 2020-02-08T03:40:53.6355296Z Stop.
> 2020-02-08T03:40:53.8245533Z Running Mkbootstrap for Util ()
> 2020-02-08T03:40:53.8719715Z 	D:\a\perl5\perl5\miniperl.exe "-I..\..\lib" -MExtUtils::Command -e chmod -- 644 "Util.bs"
> 2020-02-08T03:40:53.9334827Z 	D:\a\perl5\perl5\miniperl.exe "-I..\..\lib" -MExtUtils::Command::MM -e cp_nonempty -- Util.bs ..\..\lib\auto\List\Util\Util.bs 644
> 2020-02-08T03:40:53.9571238Z 	link -out:..\..\lib\auto\List\Util\Util.dll -dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg  -libpath:"c:\perl\lib\CORE"  -machine:x86 ListUtil.obj   "..\..\lib\CORE\perl531.lib" 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 -def:Util.def
> 2020-02-08T03:40:53.9802538Z    Creating library ..\..\lib\auto\List\Util\Util.lib and object ..\..\lib\auto\List\Util\Util.exp
> 2020-02-08T03:40:53.9812129Z ListUtil.obj : error LNK2001: unresolved external symbol _trunc
> 2020-02-08T03:40:53.9812716Z ..\..\lib\auto\List\Util\Util.dll : fatal error LNK1120: 1 unresolved externals
> 2020-02-08T03:40:53.9846791Z NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\link.EXE"' : return code '0x460'
> 2020-02-08T03:40:53.9847848Z Stop.
> 2020-02-08T03:40:53.9857931Z Unsuccessful make(cpan/Scalar-List-Utils): code=512 at ..\make_ext.pl line 587.
> 2020-02-08T03:40:53.9881003Z NMAKE : fatal error U1077: '..\miniperl.exe' : return code '0x2'
> 2020-02-08T03:40:53.9886505Z Stop.
> 2020-02-08T03:40:53.9926358Z ##[error]Process completed with exit code 2.
> 2020-02-08T03:40:53.9989185Z Cleaning up orphan processes
> 2020-02-08T03:40:54.0451906Z Terminate orphan process: pid (736) (mspdbsrv)
>
>
>> AFAIK, the trunc() problem surfaces only with older Microsoft Compilers.
>> Latest Visual Studio 2019 toolchains provide trunc().
>> I know that my MSVC++ 8.0 (and earlier) doesn't provide trunc() ... but I
>> don't know when the transition from non-support of trunc() to support of
>> trunc() occurred.
>> In any case, the problem with tunc() should show up as an NA, not a FAIL.
>>
>
> No, it shows up as a failed build that causes PR requests for Perl/perl5
> to show a fail.
>
> See for example:
> https://github.com/Perl/perl5/commit/e64cfa3c67ac7a1f97f7fa74bc4e00df2c868bb6/checks?check_suite_id=445611308
>
> The problem was Chris updated the code in Perl/perl5 without doing a PR,
> or he would have noticed it broke the build.
>

Also there is no trunc() in use in the version of 1.53 that we have in
Perl/perl5:

blead:/git_tree/perl/cpan/Scalar-List-Utils$ git log -1 --oneline
4f52418585 (HEAD -> blead, origin/blead, origin/HEAD) regcomp.c: silence
possible loss of data warnings

blead:/git_tree/perl/cpan/Scalar-List-Utils$ git grep trunc
t/pair.t:           'unpairs with long item truncates' );

blead:/git_tree/perl/cpan/Scalar-List-Utils$ git grep \$VERSION
lib/List/Util.pm:our $VERSION    = "1.53";
...

-- 
perl -Mre=debug -e "/just|another|perl|hacker/"

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About