Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blead Breaks CPAN: ZEFRAM/Lexical-SealRequireHints-0.011.tar.gz #16520

Open
p5pRT opened this issue Apr 20, 2018 · 15 comments
Open

Blead Breaks CPAN: ZEFRAM/Lexical-SealRequireHints-0.011.tar.gz #16520

p5pRT opened this issue Apr 20, 2018 · 15 comments
Labels
BBC

Comments

@p5pRT
Copy link

@p5pRT p5pRT commented Apr 20, 2018

Migrated from rt.perl.org#133135 (status was 'open')

Searchable as RT133135$

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 20, 2018

From @eserte

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.41 running under perl 5.27.11.


The swash tests of Lexical-SealRequireHints-0.011 fail
with perl 5.27.11​:

...
# Failed test at t/swash.t line 51.
# Looks like you failed 1 test of 6.
t/swash.t ...............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests

# Failed test at ./t/swash.t line 51.
# Looks like you failed 1 test of 6.
t/swash_pp.t ............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests
...



Flags​:
  category=core
  severity=low


Site configuration information for perl 5.27.11​:

Configured by eserte at Fri Apr 20 21​:45​:30 CEST 2018.

Summary of my perl5 (revision 5 version 27 subversion 11) configuration​:
 
  Platform​:
  osname=linux
  osvers=3.16.0-4-amd64
  archname=x86_64-linux
  uname='linux cabulja 3.16.0-4-amd64 #1 smp debian 3.16.51-3 (2017-12-13) x86_64 gnulinux '
  config_args='-ds -e -Dprefix=/opt/perl-5.27.11 -Dusedevel -Dusemallocwrap=no -Dcf_email=srezic@​cpan.org'
  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='cc'
  ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'
  optimize='-O2'
  cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
  ccversion=''
  gccversion='4.9.2'
  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='cc'
  ldflags =' -fstack-protector-strong -L/usr/local/lib'
  libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
  libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat
  perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
  libc=libc-2.19.so
  so=so
  useshrplib=false
  libperl=libperl.a
  gnulibc_version='2.19'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs
  dlext=so
  d_dlsymun=undef
  ccdlflags='-Wl,-E'
  cccdlflags='-fPIC'
  lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'


@​INC for perl 5.27.11​:
  /opt/perl-5.27.11/lib/site_perl/5.27.11/x86_64-linux
  /opt/perl-5.27.11/lib/site_perl/5.27.11
  /opt/perl-5.27.11/lib/5.27.11/x86_64-linux
  /opt/perl-5.27.11/lib/5.27.11


Environment for perl 5.27.11​:
  HOME=/home/eserte
  LANG=en_US.UTF-8
  LANGUAGE (unset)
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)
  PATH=/usr/local/bin​:/usr/bin​:/bin​:/usr/local/sbin​:/usr/sbin​:/sbin​:/home/eserte/bin/linux-gnu​:/home/eserte/bin/sh​:/home/eserte/bin​:/home/eserte/bin/pistachio-perl/bin​:/usr/games​:/home/eserte/devel
  PERLDOC=-MPod​::Perldoc​::ToTextOverstrike
  PERL_BADLANG (unset)
  SHELL=/bin/zsh

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 20, 2018

From @dur-randir

On Fri, 20 Apr 2018 13​:41​:15 -0700, slaven@​rezic.de wrote​:

-----------------------------------------------------------------
The swash tests of Lexical-SealRequireHints-0.011 fail
with perl 5.27.11​:

This happened somewhere in the 2d74dcf..394d2d3 range (3 commits). I can't bisect inside this range (see #133136).

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 20, 2018

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 20, 2018

From @khwilliamson

On 04/20/2018 03​:36 PM, Sergey Aleynikov via RT wrote​:

On Fri, 20 Apr 2018 13​:41​:15 -0700, slaven@​rezic.de wrote​:

-----------------------------------------------------------------
The swash tests of Lexical-SealRequireHints-0.011 fail
with perl 5.27.11​:

This happened somewhere in the 2d74dcf..394d2d3 range (3 commits). I can't bisect inside this range (see #133136).

These commits remove swashes from being used, mostly, in the perl core,
My guess is that these tests are now meaningless.

Swashes still exist and are usable; its just that they don't get created
by the perl core except under rare circumstances. The goal that has
been agreed upon for several releases now, is to remove them completely,
and I plan to finish the job in 5.30.

---
via perlbug​: queue​: perl5 status​: new
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133135

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 21, 2018

From @jkeenan

On Fri, 20 Apr 2018 20​:41​:15 GMT, slaven@​rezic.de wrote​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.41 running under perl 5.27.11.

-----------------------------------------------------------------
The swash tests of Lexical-SealRequireHints-0.011 fail
with perl 5.27.11​:

...
# Failed test at t/swash.t line 51.
# Looks like you failed 1 test of 6.
t/swash.t ...............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests

# Failed test at ./t/swash.t line 51.
# Looks like you failed 1 test of 6.
t/swash_pp.t ............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests
...

Failure confirmed. As Sergey Aleynikov noted in RT #133136, bisection pointed to a range of 3 commits which could not be bisected further. I built perl at each of the three commits in question. 'make' failed in the first two of them, so modules could only be installed on the third -- which is where I was able to confirm the problem. See attachment.

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 21, 2018

From @jkeenan

$ install_branch_for_testing 2d74dcf
...
cc -c -DPERL_CORE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings taint.c
In file included from perl.h​:5303​:0,
  from utf8.c​:33​:
utf8.c​: In function ‘Perl_init_uniprops’​:
utf8.c​:5881​:54​: error​: ‘PL_XPERLSPACE_invlist’ undeclared (first use in this function)
  PL_XPosix_ptrs[_CC_SPACE] = _new_invlist_C_array(PL_XPERLSPACE_invlist);
  ^
embed.h​:1240​:65​: note​: in definition of macro ‘_new_invlist_C_array’
#define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a)
  ^
utf8.c​:5881​:54​: note​: each undeclared identifier is reported only once for each function it appears in
  PL_XPosix_ptrs[_CC_SPACE] = _new_invlist_C_array(PL_XPERLSPACE_invlist);
  ^
embed.h​:1240​:65​: note​: in definition of macro ‘_new_invlist_C_array’
#define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a)
  ^
cc -c -DPERL_CORE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings deb.c
makefile​:249​: recipe for target 'utf8.o' failed
make​: *** [utf8.o] Error 1
make​: *** Waiting for unfinished jobs....

$ install_branch_for_testing 2cdbf8d
...
cc -c -DPERL_CORE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings globals.c
In file included from perl.h​:5303​:0,
  from utf8.c​:33​:
utf8.c​: In function ‘Perl_init_uniprops’​:
utf8.c​:5881​:54​: error​: ‘PL_XPERLSPACE_invlist’ undeclared (first use in this function)
  PL_XPosix_ptrs[_CC_SPACE] = _new_invlist_C_array(PL_XPERLSPACE_invlist);
  ^
embed.h​:1241​:65​: note​: in definition of macro ‘_new_invlist_C_array’
#define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a)
  ^
utf8.c​:5881​:54​: note​: each undeclared identifier is reported only once for each function it appears in
  PL_XPosix_ptrs[_CC_SPACE] = _new_invlist_C_array(PL_XPERLSPACE_invlist);
  ^
embed.h​:1241​:65​: note​: in definition of macro ‘_new_invlist_C_array’
#define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a)
  ^
makefile​:249​: recipe for target 'utf8.o' failed
make​: *** [utf8.o] Error 1
make​: *** Waiting for unfinished jobs....

$ install_branch_for_testing 394d2d3
...
[make completed successfully]

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 21, 2018

From @jkeenan

Summary of my perl5 (revision 5 version 27 subversion 11) configuration​:
  Commit id​: 394d2d3
  Platform​:
  osname=linux
  osvers=4.4.0-119-generic
  archname=x86_64-linux
  uname='linux zareason 4.4.0-119-generic #143-ubuntu smp mon apr 2 16​:08​:24 utc 2018 x86_64 x86_64 x86_64 gnulinux '
  config_args='-des -Dusedevel -Uversiononly -Dprefix=/home/jkeenan/testing/394d2d3f374c001b40cce3e2709c7b75de05f55e -Dman1dir=none -Dman3dir=none'
  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='cc'
  ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
  optimize='-O2'
  cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
  ccversion=''
  gccversion='5.4.0 20160609'
  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='cc'
  ldflags =' -fstack-protector-strong -L/usr/local/lib'
  libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /lib64 /usr/lib64
  libs=-lpthread -lnsl -ldb -ldl -lm -lcrypt -lutil -lc
  perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
  libc=libc-2.23.so
  so=so
  useshrplib=false
  libperl=libperl.a
  gnulibc_version='2.23'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs
  dlext=so
  d_dlsymun=undef
  ccdlflags='-Wl,-E'
  cccdlflags='-fPIC'
  lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'

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
  PERL_USE_DEVEL
  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
  Built under linux
  Compiled at Apr 20 2018 20​:26​:20
  %ENV​:
  PERL2DIR="/home/jkeenan/gitwork/perl2"
  PERLBREW_BASHRC_VERSION="0.78"
  PERLBREW_HOME="/home/jkeenan/.perlbrew"
  PERLBREW_MANPATH="/home/jkeenan/perl5/perlbrew/perls/perl-5.26.0/man"
  PERLBREW_PATH="/home/jkeenan/perl5/perlbrew/bin​:/home/jkeenan/perl5/perlbrew/perls/perl-5.26.0/bin"
  PERLBREW_PERL="perl-5.26.0"
  PERLBREW_ROOT="/home/jkeenan/perl5/perlbrew"
  PERLBREW_VERSION="0.78"
  PERL_WORKDIR="/home/jkeenan/gitwork/perl"
  @​INC​:
  lib
  /home/jkeenan/testing/394d2d3f374c001b40cce3e2709c7b75de05f55e/lib/perl5/site_perl/5.27.11/x86_64-linux
  /home/jkeenan/testing/394d2d3f374c001b40cce3e2709c7b75de05f55e/lib/perl5/site_perl/5.27.11
  /home/jkeenan/testing/394d2d3f374c001b40cce3e2709c7b75de05f55e/lib/perl5/5.27.11/x86_64-linux
  /home/jkeenan/testing/394d2d3f374c001b40cce3e2709c7b75de05f55e/lib/perl5/5.27.11

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 21, 2018

From @eserte

Dana Fri, 20 Apr 2018 13​:41​:15 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.41 running under perl 5.27.11.

-----------------------------------------------------------------
The swash tests of Lexical-SealRequireHints-0.011 fail
with perl 5.27.11​:

...
# Failed test at t/swash.t line 51.
# Looks like you failed 1 test of 6.
t/swash.t ...............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests

# Failed test at ./t/swash.t line 51.
# Looks like you failed 1 test of 6.
t/swash_pp.t ............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests
...

-----------------------------------------------------------------
---
Flags​:
category=core
severity=low
---
Site configuration information for perl 5.27.11​:

Configured by eserte at Fri Apr 20 21​:45​:30 CEST 2018.

Summary of my perl5 (revision 5 version 27 subversion 11)
configuration​:

Platform​:
osname=linux
osvers=3.16.0-4-amd64
archname=x86_64-linux
uname='linux cabulja 3.16.0-4-amd64 #1 smp debian 3.16.51-3 (2017-
12-13) x86_64 gnulinux '
config_args='-ds -e -Dprefix=/opt/perl-5.27.11 -Dusedevel
-Dusemallocwrap=no -Dcf_email=srezic@​cpan.org'
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='cc'
ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-
strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-D_FORTIFY_SOURCE=2'
optimize='-O2'
cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-
strong -I/usr/local/include'
ccversion=''
gccversion='4.9.2'
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='cc'
ldflags =' -fstack-protector-strong -L/usr/local/lib'
libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-
fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu
/lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
-lgdbm_compat
perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
libc=libc-2.19.so
so=so
useshrplib=false
libperl=libperl.a
gnulibc_version='2.19'
Dynamic Linking​:
dlsrc=dl_dlopen.xs
dlext=so
d_dlsymun=undef
ccdlflags='-Wl,-E'
cccdlflags='-fPIC'
lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'

---
@​INC for perl 5.27.11​:
/opt/perl-5.27.11/lib/site_perl/5.27.11/x86_64-linux
/opt/perl-5.27.11/lib/site_perl/5.27.11
/opt/perl-5.27.11/lib/5.27.11/x86_64-linux
/opt/perl-5.27.11/lib/5.27.11

---
Environment for perl 5.27.11​:
HOME=/home/eserte
LANG=en_US.UTF-8
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/local/bin​:/usr/bin​:/bin​:/usr/local/sbin​:/usr/sbin​:/sbin​:/home/eserte/bin/linux-
gnu​:/home/eserte/bin/sh​:/home/eserte/bin​:/home/eserte/bin/pistachio-
perl/bin​:/usr/games​:/home/eserte/devel
PERLDOC=-MPod​::Perldoc​::ToTextOverstrike
PERL_BADLANG (unset)
SHELL=/bin/zsh

The changed behavior can be reduced to​:

$ strace -eopen perl5.27.10 -e '"foo\x{666}" =~ /foo\p{Alnum}/' |& grep utf8.pm
open("/opt/perl-5.27.10/lib/5.27.10/utf8.pm", O_RDONLY|O_CLOEXEC) = 4

$ strace -eopen perl5.27.11 -e '"foo\x{666}" =~ /foo\p{Alnum}/' |& grep utf8.pm
(nothing)

That is, utf8.pm is not loaded anymore in this situation, and that's what the now failing swash.t test checks.

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 22, 2018

From @jkeenan

On Fri, 20 Apr 2018 20​:41​:15 GMT, slaven@​rezic.de wrote​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.41 running under perl 5.27.11.

-----------------------------------------------------------------
The swash tests of Lexical-SealRequireHints-0.011 fail
with perl 5.27.11​:

...
# Failed test at t/swash.t line 51.
# Looks like you failed 1 test of 6.
t/swash.t ...............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests

# Failed test at ./t/swash.t line 51.
# Looks like you failed 1 test of 6.
t/swash_pp.t ............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests
...

Because Lexical​::SealHints is high up on the CPAN river, this failure means that, absent the use of 'force install', other CPAN distributions cannot be reached by 'cpan', 'cpanm', etc., and therefore cannot be assessed for 5.28.0-readiness.

Some of the modules known to be broken are​:

strictures
multidimensinal
bareword​::filehandles

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 22, 2018

From @arc

The test failure is caused by Perl no longer loading utf8.pm for most Unicode property matches. I've written a patch to the Lexical​::SealRequireHints test suite so that it now picks one of the few remaining property matches that *does* load utf8.pm, and submitted it to the L​::SRH RT queue as https://rt.cpan.org/Ticket/Display.html?id=125176

For reference, the patch looks like this​:

Inline Patch
diff -urN Lexical-SealRequireHints-0.011.orig/t/swash.t Lexical-SealRequireHints-0.011/t/swash.t
--- Lexical-SealRequireHints-0.011.orig/t/swash.t	2017-07-15 22:56:08.000000000 +0200
+++ Lexical-SealRequireHints-0.011/t/swash.t	2018-04-22 15:08:14.000000000 +0200
@@ -44,8 +44,13 @@
 	# is the execution.  Hence for this test we must arrange for
 	# both to occur between the surrounding segments of test code.
 	# A BEGIN block achieves this nicely.
-	my $x = "foo\x{666}";
-	$x =~ /foo\p{Alnum}/;
+	#
+	# From Perl 5.27.11 onwards, far fewer properties cause the swash
+	# mechanism to be invoked.  One option is an nv property in
+	# non-canonical form, but nv properties don't work in older Perls.
+	my ($x, $prop) = "$]" >= 5.027011 ? ("foo\x{be}", '\p{nv=0.75}')
+		: ("foo\x{666}", '\p{Alnum}');
+	$x =~ /foo$prop/;
 }
 BEGIN {
 	ok exists($INC{"utf8.pm"});


-- 

Aaron Crane

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 22, 2018

From @khwilliamson

On 04/22/2018 07​:18 AM, Aaron Crane via RT wrote​:

The test failure is caused by Perl no longer loading utf8.pm for most Unicode property matches. I've written a patch to the Lexical​::SealRequireHints test suite so that it now picks one of the few remaining property matches that *does* load utf8.pm, and submitted it to the L​::SRH RT queue as https://rt.cpan.org/Ticket/Display.html?id=125176

But note, that those few properties are going to stop loading utf8.pm
early in 5.29.

For reference, the patch looks like this​:

diff -urN Lexical-SealRequireHints-0.011.orig/t/swash.t Lexical-SealRequireHints-0.011/t/swash.t
--- Lexical-SealRequireHints-0.011.orig/t/swash.t 2017-07-15 22​:56​:08.000000000 +0200
+++ Lexical-SealRequireHints-0.011/t/swash.t 2018-04-22 15​:08​:14.000000000 +0200
@​@​ -44,8 +44,13 @​@​
# is the execution. Hence for this test we must arrange for
# both to occur between the surrounding segments of test code.
# A BEGIN block achieves this nicely.
- my $x = "foo\x{666}";
- $x =~ /foo\p{Alnum}/;
+ #
+ # From Perl 5.27.11 onwards, far fewer properties cause the swash
+ # mechanism to be invoked. One option is an nv property in
+ # non-canonical form, but nv properties don't work in older Perls.
+ my ($x, $prop) = "$]" >= 5.027011 ? ("foo\x{be}", '\p{nv=0.75}')
+ : ("foo\x{666}", '\p{Alnum}');
+ $x =~ /foo$prop/;
}
BEGIN {
ok exists($INC{"utf8.pm"});

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 23, 2018

From @iabyn

On Sun, Apr 22, 2018 at 08​:18​:58AM -0600, Karl Williamson wrote​:

On 04/22/2018 07​:18 AM, Aaron Crane via RT wrote​:

The test failure is caused by Perl no longer loading utf8.pm for most Unicode property matches. I've written a patch to the Lexical​::SealRequireHints test suite so that it now picks one of the few remaining property matches that *does* load utf8.pm, and submitted it to the L​::SRH RT queue as https://rt.cpan.org/Ticket/Display.html?id=125176

But note, that those few properties are going to stop loading utf8.pm early
in 5.29.

Given that the module needs fixing rather than perl, and that the module
is maintained by Zefram, I don't see any need to keep this ticket as a
5.28 blocker.

--
A walk of a thousand miles begins with a single step...
then continues for another 1,999,999 or so.

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Apr 26, 2018

From @eserte

Dana Mon, 23 Apr 2018 05​:59​:01 -0700, davem reče​:

On Sun, Apr 22, 2018 at 08​:18​:58AM -0600, Karl Williamson wrote​:

On 04/22/2018 07​:18 AM, Aaron Crane via RT wrote​:

The test failure is caused by Perl no longer loading utf8.pm for
most Unicode property matches. I've written a patch to the
Lexical​::SealRequireHints test suite so that it now picks one of
the few remaining property matches that *does* load utf8.pm, and
submitted it to the L​::SRH RT queue as
https://rt.cpan.org/Ticket/Display.html?id=125176

But note, that those few properties are going to stop loading utf8.pm
early
in 5.29.

Given that the module needs fixing rather than perl, and that the
module
is maintained by Zefram, I don't see any need to keep this ticket as a
5.28 blocker.

Having a stable release where more than 100 CPAN distributions are not buildable anymore is just bad user experience. A blocker ticket does not have to mean that something have to be changed in the perl interpreter, but that at least there should be some management done to fix this situation.

@p5pRT
Copy link
Author

@p5pRT p5pRT commented May 15, 2018

From @jkeenan

On Thu, 26 Apr 2018 06​:02​:50 GMT, slaven@​rezic.de wrote​:

Dana Mon, 23 Apr 2018 05​:59​:01 -0700, davem reče​:

On Sun, Apr 22, 2018 at 08​:18​:58AM -0600, Karl Williamson wrote​:

On 04/22/2018 07​:18 AM, Aaron Crane via RT wrote​:

The test failure is caused by Perl no longer loading utf8.pm for
most Unicode property matches. I've written a patch to the
Lexical​::SealRequireHints test suite so that it now picks one of
the few remaining property matches that *does* load utf8.pm, and
submitted it to the L​::SRH RT queue as
https://rt.cpan.org/Ticket/Display.html?id=125176

But note, that those few properties are going to stop loading
utf8.pm
early
in 5.29.

Given that the module needs fixing rather than perl, and that the
module
is maintained by Zefram, I don't see any need to keep this ticket as
a
5.28 blocker.

Having a stable release where more than 100 CPAN distributions are not
buildable anymore is just bad user experience. A blocker ticket does
not have to mean that something have to be changed in the perl
interpreter, but that at least there should be some management done to
fix this situation.

Today I posted in https://rt.cpan.org/Ticket/Display.html?id=125176 confirming the value of the patch submitted by Aaron Crane and requesting that the upstream maintainer apply it and issue a new CPAN release.

Thank you very much.
--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

@p5pRT p5pRT commented May 17, 2018

From @iabyn

On Tue, May 15, 2018 at 10​:31​:49AM -0700, James E Keenan via RT wrote​:

Today I posted in https://rt.cpan.org/Ticket/Display.html?id=125176
confirming the value of the patch submitted by Aaron Crane and
requesting that the upstream maintainer apply it and issue a new CPAN
release.

In the meantime, Karl has pushed v5.27.11-39-g3cacfe74ed, which
provides a temporary workaround in blead that makes
Lexical-SealRequireHints's tests pass.

--
Diplomacy is telling someone to go to hell in such a way that they'll
look forward to the trip

@xenu xenu removed the Severity Low label Dec 29, 2021
@jkeenan jkeenan added BBC non-5.36-blocker labels Mar 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BBC
Projects
None yet
Development

No branches or pull requests

4 participants