perl5 icon indicating copy to clipboard operation
perl5 copied to clipboard

run/locale.t test fails in 5.30.2 (Gentoo release, in preparation; same in 5.30.1)

Open akhuettel opened this issue 5 years ago • 3 comments

While packaging 5.30.2 for Gentoo, I noticed failures of run/locale.t Rechecking 5.30.1, I now see identical failures there too.

Here are the corresponding log snippets.

# Failed test 35 - Radix print properly in locale scope, and without at ./test.pl line 1062
#      got "1.5\n1.5"
# expected "1,5\n1.5"
# PROG: 
#                 my $i = 1.5;
#                 {
#                     use locale;
#                     use POSIX;
#                     POSIX::setlocale(POSIX::LC_NUMERIC(),"de_DE.iso885915@euro");
#                     print $i, "
# ";
#                 }
#                 print $i, "
# ";
# STATUS: 0
^M===(    8210;1  0/?  1721/4216  91/92  36/?   93/137   4843/1642... )===# Failed test 36 - Can do math when radix is a comma at ./test.pl line 1062
#      got "1.5\n2.5"
# expected "1,5\n2,5"
# PROG: 
#                 my $i = 1.5;   # Should be exactly representable as a base 2
#                                 # fraction, so can use 'eq' below
#                 use locale;
#                 use POSIX;
#                 POSIX::setlocale(POSIX::LC_NUMERIC(),"de_DE.iso885915@euro");
#                 print $i, "
# ";
#                 $i += 1;
#                 print $i, "
# ";
# STATUS: 0
^M                                                                        ^Mrun/fresh_perl.t ................................................... ok
^M===(    8216;1  0/?  1722/4216  37/?   94/137   4844/16421    0/... )===^M                                                                        ^Mio/getcwd.t ........................................................ ok
^M===(    8219;1  0/?  1723/4216  37/?   95/137   4845/16421    0/... )===# Failed test 37 - POSIX::strtod() uses underlying locale at ./test.pl line 1062
#      got "1"
# expected "1.5"
# PROG: 
#                     use POSIX;
#                     POSIX::setlocale(POSIX::LC_NUMERIC(),"de_DE.iso885915@euro");
#                     my $one_point_5 = POSIX::strtod("1,5");
#                     $one_point_5 =~ s/0+$//;  # Remove any trailing zeros
#                     print $one_point_5, "
# ";
# STATUS: 0

Perl configuration

(for my installed 5.30.1 which is built exactly the same way)

huettel@farino ~/Gentoo/gentoo/dev-lang/perl $ perl -V
Summary of my perl5 (revision 5 version 30 subversion 1) configuration:
   
  Platform:
    osname=linux
    osvers=5.4.30-gentoo-ah1
    archname=x86_64-linux
    uname='linux farino 5.4.30-gentoo-ah1 #1 smp fri apr 3 15:46:25 eest 2020 x86_64 intel(r) core(tm) i5-8265u cpu @ 1.60ghz genuineintel gnulinux '
    config_args='-des -Dinstallprefix=/usr -Dinstallusrbinperl=n -Ui_xlocale -Di_ndbm -Di_gdbm -Di_db -DDEBUGGING=none -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Dnoextensions=ODBM_File -Duseshrplib -Darchname=x86_64-linux -Dcc=x86_64-pc-linux-gnu-gcc -Doptimize=-O2 -pipe -march=native -Dldflags=-Wl,-O1 -Wl,--as-needed -Dprefix=/usr -Dsiteprefix=/usr/local -Dvendorprefix=/usr -Dscriptdir=/usr/bin -Dprivlib=/usr/lib64/perl5/5.30.1 -Darchlib=/usr/lib64/perl5/5.30.1/x86_64-linux -Dsitelib=/usr/local/lib64/perl5/5.30.1 -Dsitearch=/usr/local/lib64/perl5/5.30.1/x86_64-linux -Dvendorlib=/usr/lib64/perl5/vendor_perl/5.30.1 -Dvendorarch=/usr/lib64/perl5/vendor_perl/5.30.1/x86_64-linux -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dvendorman1dir=/usr/share/man/man1 -Dvendorman3dir=/usr/share/man/man3 -Dman1ext=1 -Dman3ext=3pm -Dlibperl=libperl.so.5.30.1 -Dlocincpth=/usr/include  -Dglibpth=/lib64 /usr/lib64  -Duselargefiles -Dd_semctl_semun -Dcf_by=Gentoo -Dmyhostname=localhost -Dperladmin=root@localhost -Ud_csh -Dsh=/bin/sh -Dtargetsh=/bin/sh -Uusenm -Ui_xlocale -Di_ndbm -Di_gdbm -Di_db -DDEBUGGING=none -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Dnoextensions=ODBM_File'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=undef
    usemultiplicity=undef
    use64bitint=define
    use64bitall=define
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
    bincompat5005=undef
  Compiler:
    cc='x86_64-pc-linux-gnu-gcc'
    ccflags ='-fwrapv -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
    optimize='-O2 -pipe -march=native'
    cppflags='-fwrapv -fno-strict-aliasing -pipe'
    ccversion=''
    gccversion='9.2.0'
    gccosandvers=''
    intsize=4
    longsize=8
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=16
    longdblkind=3
    ivtype='long'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='off_t'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='x86_64-pc-linux-gnu-gcc'
    ldflags ='-Wl,-O1 -Wl,--as-needed'
    libpth=/usr/local/lib64 /lib64 /usr/lib64 /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed /usr/lib /lib/../lib64 /usr/lib/../lib64 /lib
    libs=-lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat
    perllibs=-ldl -lm -lcrypt -lutil -lc
    libc=libc-2.30.so
    so=so
    useshrplib=true
    libperl=libperl.so.5.30.1
    gnulibc_version='2.30'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags='-Wl,-E'
    cccdlflags='-fPIC'
    lddlflags='-shared -O2 -pipe -march=native -Wl,-O1 -Wl,--as-needed'


Characteristics of this binary (from libperl): 
  Compile-time options:
    HAS_TIMES
    PERLIO_LAYERS
    PERL_COPY_ON_WRITE
    PERL_DONT_CREATE_GVSV
    PERL_MALLOC_WRAP
    PERL_OP_PARENT
    PERL_PRESERVE_IVUV
    USE_64_BIT_ALL
    USE_64_BIT_INT
    USE_LARGE_FILES
    USE_LOCALE
    USE_LOCALE_COLLATE
    USE_LOCALE_CTYPE
    USE_LOCALE_NUMERIC
    USE_LOCALE_TIME
    USE_PERLIO
    USE_PERL_ATOF
  Locally applied patches:
    gentoo/hints_hpux - Fix hpux hints
    gentoo/aix_soname - aix gcc detection and shared library soname support
    gentoo/EUMM-RUNPATH - https://bugs.gentoo.org/105054 cpan/ExtUtils-MakeMaker: drop $PORTAGE_TMPDIR from LD_RUN_PATH
    gentoo/config_over - Remove -rpath and append LDFLAGS to lddlflags
    gentoo/opensolaris_headers - Add headers for opensolaris
    gentoo/patchlevel - List packaged patches for perl-5.30.1(#1) in patchlevel.h
    gentoo/cleanup-paths - Cleanup PATH and shrpenv
    gentoo/enc2xs - Tweak enc2xs to follow symlinks and ignore missing @INC directories.
    gentoo/darwin-cc-ld - https://bugs.gentoo.org/297751 darwin: Use $CC to link
    gentoo/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
    gentoo/interix - Fix interix hints
    gentoo/create_libperl_soname - https://bugs.gentoo.org/286840 Set libperl soname
    gentoo/mod_paths - Add /etc/perl to @INC
    gentoo/EUMM_perllocalpod - cpan/ExtUtils-MakeMaker: remove targets that generate perllocal.pod
    gentoo/drop_fstack_protector - https://bugs.gentoo.org/348557 Don't force -fstack-protector on everyone
    gentoo/usr_local - Configure: Don't include sources in /usr/local/ for compiling perl
    gentoo/D-SHA-CFLAGS - https://bugs.gentoo.org/506818 Do not set custom CFLAGS in cpan/Digest-SHA
    gentoo/io_socket_ip_tests - cpan/IO-Socket-IP: Disable network tests
    gentoo/tests - Fix EUMM podlocal tests
    gentoo/no-nsl-cl.patch -
    gentoo/no_porting_tests - Disable porting tests which create fun false-failures all over travis
    gentoo/pathtools_enoent - Disable PathTools tests which fails under sandboxing
    debian/cpan-missing-site-dirs - Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable
    debian/makemaker-pasthru - Pass LD settings through to subdirectories
    fixes/memoize_storable_nstore - [rt.cpan.org #77790] Memoize::Storable: respect 'nstore' option not respected
    fixes/podman-pipe - Better errors for man pages from standard input
    fixes/respect_umask - Respect umask during installation
    fixes/net_smtp_docs - [rt.cpan.org #36038] Document the Net::SMTP 'Port' option
    fixes/document_makemaker_ccflags - [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
    fixes/parallel-manisort.patch - Fix parallel building
  Built under linux
  Compiled at Apr  4 2020 03:45:51
  @INC:
    /etc/perl
    /usr/local/lib64/perl5/5.30.1/x86_64-linux
    /usr/local/lib64/perl5/5.30.1
    /usr/lib64/perl5/vendor_perl/5.30.1/x86_64-linux
    /usr/lib64/perl5/vendor_perl/5.30.1
    /usr/lib64/perl5/5.30.1/x86_64-linux
    /usr/lib64/perl5/5.30.1
huettel@farino ~/Gentoo/gentoo/dev-lang/perl $ 

akhuettel avatar Apr 11 '20 11:04 akhuettel

In the past few years, these kinds of bugs have all been because of the operating system having locale bugs. What it appears to be here is that the locale is being set so that the radix character is a comma, but a dot is instead being printed. I suspect an OS bug because its just one OS that is having trouble. But I've been wrong before; to help me figure it out, run the following commands, capture and post the output.

cd t export PERL5OPT=-DLv ./perl -I../lib run/locale.t

khwilliamson avatar Apr 26 '20 01:04 khwilliamson

In the past few years, these kinds of bugs have all been because of the operating system having locale bugs. What it appears to be here is that the locale is being set so that the radix character is a comma, but a dot is instead being printed. I suspect an OS bug because its just one OS that is having trouble. But I've been wrong before; to help me figure it out, run the following commands, capture and post the output.

cd t export PERL5OPT=-DLv ./perl -I../lib run/locale.t

@akhuettel, if this is still a problem for you, could you try out the suggestions made by @khwilliamson?

Thank you very much. Jim Keenan

jkeenan avatar Jul 10 '22 22:07 jkeenan

In the past few years, these kinds of bugs have all been because of the operating system having locale bugs. What it appears to be here is that the locale is being set so that the radix character is a comma, but a dot is instead being printed. I suspect an OS bug because its just one OS that is having trouble. But I've been wrong before; to help me figure it out, run the following commands, capture and post the output. cd t export PERL5OPT=-DLv ./perl -I../lib run/locale.t

@akhuettel, if this is still a problem for you, could you try out the suggestions made by @khwilliamson?

@akhuettel, could you let us know how the suggestions by @khwilliamson have worked out? (Otherwise, we will soon close this Issue.)

jkeenan avatar Sep 21 '22 21:09 jkeenan

In the past few years, these kinds of bugs have all been because of the operating system having locale bugs. What it appears to be here is that the locale is being set so that the radix character is a comma, but a dot is instead being printed. I suspect an OS bug because its just one OS that is having trouble. But I've been wrong before; to help me figure it out, run the following commands, capture and post the output. cd t export PERL5OPT=-DLv ./perl -I../lib run/locale.t

@akhuettel, if this is still a problem for you, could you try out the suggestions made by @khwilliamson?

@akhuettel, could you let us know how the suggestions by @khwilliamson have worked out? (Otherwise, we will soon close this Issue.)

I am self-assigning this ticket for the purpose of closing it within 7 days unless we hear back from the original poster.

jkeenan avatar Sep 26 '22 01:09 jkeenan

No response from OP; closing as per schedule.

jkeenan avatar Oct 06 '22 18:10 jkeenan

FYI I encountered the exact same problem today when running perlbrew install perl-5.38.0 on a Debian 12.2 system. (same for perl-5.32.1, perl-5.34.1 and perl-5.36.1)

Yaribz avatar Oct 14 '23 10:10 Yaribz