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

ext/File-Glob/t/basic.t: Use of PERL_EXTERNAL_GLOB causes test failure on Linux #16733

Closed
p5pRT opened this issue Oct 23, 2018 · 17 comments
Closed
Assignees
Labels
BBC Blead Breaks CPAN - changes in blead broke a cpan module(s)
Projects

Comments

@p5pRT
Copy link

p5pRT commented Oct 23, 2018

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

Searchable as RT133612$

@p5pRT
Copy link
Author

p5pRT commented Oct 23, 2018

From @jkeenan

Last week, on Oct 17, in the two commits below we fatalized
File​::Glob​::glob() as per our schedule of deprecations and fatalizations.

#####
df8b709
a15e41c
#####

Karl Williamson has encountered one gotcha, which I have confirmed. If,
on Linux, you include this obscure (to me, at least) 'ccflag'
configuration option​:

#####
-Accflags='-DPERL_EXTERNAL_GLOB'
#####

... then when you run ext/File-Glob/t/basic.t, you get 1 test failure
and 3 shell-level warnings. See attachments.

I have produced this error on Linux with both gcc and g++ -- but I do
*not* get the error on FreeBSD (where clang is the default compiler).

There is no adequate documentation of PERL_EXTERNAL_GLOB in INSTALL,
pod/perlintern.pod or similar locations. Its name suggests that it
means something like "Use a glob outside Perl", but that doesn't help us
very much. Looking at the source code, I think the following sections
of code need investigation​:

#####
$ grep -nC3 PERL_EXTERNAL_GLOB pp_sys.c op.c doio.c
pp_sys.c-367-
pp_sys.c-368- /* Note that we only ever get here if File​::Glob fails
to load
pp_sys.c-369- * without at the same time croaking, for some reason,
or if
pp_sys.c​:370​: * perl was built with PERL_EXTERNAL_GLOB */
pp_sys.c-371-
pp_sys.c-372- ENTER_with_name("glob");
pp_sys.c-373-
--
op.c-11880- return o;
op.c-11881- }
op.c-11882- else o->op_flags &= ~OPf_SPECIAL;
op.c​:11883​:#if !defined(PERL_EXTERNAL_GLOB)
op.c-11884- if (!PL_globhook) {
op.c-11885- ENTER;
op.c-11886- Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT,
op.c-11887- newSVpvs("File​::Glob"), NULL, NULL, NULL);
op.c-11888- LEAVE;
op.c-11889- }
op.c​:11890​:#endif /* !PERL_EXTERNAL_GLOB */
op.c-11891- gv = (GV *)newSV(0);
op.c-11892- gv_init(gv, 0, "", 0, 0);
op.c-11893- gv_IOadd(gv);
--
doio.c-3208-Function called by C<do_readline> to spawn a glob (or do the
glob inside
doio.c-3209-perl on VMS). This code used to be inline, but now perl
uses C<File​::Glob>
doio.c-3210-this glob starter is only used by miniperl during the build
process,
doio.c​:3211​:or when PERL_EXTERNAL_GLOB is defined.
doio.c-3212-Moving it away shrinks F<pp_hot.c>; shrinking F<pp_hot.c>
helps speed perl up.
doio.c-3213-
doio.c-3214-=cut
#####

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Oct 23, 2018

From @jkeenan

Last week, on Oct 17, in the two commits below we fatalized File​::Glob​::glob() as per our schedule of deprecations and fatalizations.

#####
df8b709
a15e41c
#####

Karl Williamson has encountered one gotcha, which I have confirmed. If, on Linux, you include this obscure (to me, at least) 'ccflag' configuration option​:

#####
-Accflags='-DPERL_EXTERNAL_GLOB'
#####

... then when you run ext/File-Glob/t/basic.t, you get 1 test failure and 3 shell-level warnings. See attachments.

I have produced this error on Linux with both gcc and g++ -- but I do *not* get the error on FreeBSD (where clang is the default compiler).

There is no adequate documentation of PERL_EXTERNAL_GLOB in INSTALL, pod/perlintern.pod or similar locations. Its name suggests that it means something like "Use a glob outside Perl", but that doesn't help us very much. Looking at the source code, I think the following sections of code need investigation​:

#####
$ grep -nC3 PERL_EXTERNAL_GLOB pp_sys.c op.c doio.c
pp_sys.c-367-
pp_sys.c-368- /* Note that we only ever get here if File​::Glob fails to load
pp_sys.c-369- * without at the same time croaking, for some reason, or if
pp_sys.c​:370​: * perl was built with PERL_EXTERNAL_GLOB */
pp_sys.c-371-
pp_sys.c-372- ENTER_with_name("glob");
pp_sys.c-373-
--
op.c-11880- return o;
op.c-11881- }
op.c-11882- else o->op_flags &= ~OPf_SPECIAL;
op.c​:11883​:#if !defined(PERL_EXTERNAL_GLOB)
op.c-11884- if (!PL_globhook) {
op.c-11885- ENTER;
op.c-11886- Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT,
op.c-11887- newSVpvs("File​::Glob"), NULL, NULL, NULL);
op.c-11888- LEAVE;
op.c-11889- }
op.c​:11890​:#endif /* !PERL_EXTERNAL_GLOB */
op.c-11891- gv = (GV *)newSV(0);
op.c-11892- gv_init(gv, 0, "", 0, 0);
op.c-11893- gv_IOadd(gv);
--
doio.c-3208-Function called by C<do_readline> to spawn a glob (or do the glob inside
doio.c-3209-perl on VMS). This code used to be inline, but now perl uses C<File​::Glob>
doio.c-3210-this glob starter is only used by miniperl during the build process,
doio.c​:3211​:or when PERL_EXTERNAL_GLOB is defined.
doio.c-3212-Moving it away shrinks F<pp_hot.c>; shrinking F<pp_hot.c> helps speed perl up.
doio.c-3213-
doio.c-3214-=cut
#####

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Oct 23, 2018

From @jkeenan

Summary of my perl5 (revision 5 version 29 subversion 5) configuration​:
  Commit id​: dda4a47
  Platform​:
  osname=linux
  osvers=4.15.0-36-generic
  archname=x86_64-linux-thread-multi
  uname='linux zareason 4.15.0-36-generic #39-ubuntu smp mon sep 24 16​:19​:09 utc 2018 x86_64 x86_64 x86_64 gnulinux '
  config_args='-des -Dusedevel -Accflags=-DPERL_EXTERNAL_GLOB'
  hint=previous
  useposix=true
  d_sigaction=define
  useithreads=define
  usemultiplicity=define
  use64bitint=define
  use64bitall=define
  uselongdouble=undef
  usemymalloc=n
  default_inc_excludes_dot=define
  bincompat5005=undef
  Compiler​:
  cc='g++-7'
  ccflags ='-D_REENTRANT -D_GNU_SOURCE -DPERL_EXTERNAL_GLOB -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_EXTERNAL_GLOB'
  optimize='-O2'
  cppflags='-D_REENTRANT -D_GNU_SOURCE -DPERL_EXTERNAL_GLOB -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
  ccversion=''
  gccversion='7.3.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='g++-7'
  ldflags =' -fstack-protector-strong -L/usr/local/lib'
  libpth=/usr/include/c++/7 /usr/include/x86_64-linux-gnu/c++/7 /usr/include/c++/7/backward /usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/7/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 /usr/include/c++/7 /usr/include/x86_64-linux-gnu/c++/7 /usr/include/c++/7/backward /usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed /usr/include/x86_64-linux-gnu /usr/lib
  libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
  perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
  libc=libc-2.27.so
  so=so
  useshrplib=false
  libperl=libperl.a
  gnulibc_version='2.27'
  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
  MULTIPLICITY
  PERLIO_LAYERS
  PERL_COPY_ON_WRITE
  PERL_DONT_CREATE_GVSV
  PERL_EXTERNAL_GLOB
  PERL_IMPLICIT_CONTEXT
  PERL_MALLOC_WRAP
  PERL_OP_PARENT
  PERL_PRESERVE_IVUV
  PERL_USE_DEVEL
  USE_64_BIT_ALL
  USE_64_BIT_INT
  USE_ITHREADS
  USE_LARGE_FILES
  USE_LOCALE
  USE_LOCALE_COLLATE
  USE_LOCALE_CTYPE
  USE_LOCALE_NUMERIC
  USE_LOCALE_TIME
  USE_PERLIO
  USE_PERL_ATOF
  USE_REENTRANT_API
  Built under linux
  Compiled at Oct 23 2018 08​:15​:50
  %ENV​:
  PERL2DIR="/home/jkeenan/gitwork/perl2"
  PERLBREW_HOME="/home/jkeenan/.perlbrew"
  PERLBREW_MANPATH="/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/man"
  PERLBREW_PATH="/home/jkeenan/perl5/perlbrew/bin​:/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/bin"
  PERLBREW_PERL="perl-5.28.0"
  PERLBREW_ROOT="/home/jkeenan/perl5/perlbrew"
  PERLBREW_SHELLRC_VERSION="0.84"
  PERLBREW_VERSION="0.84"
  PERL_WORKDIR="/home/jkeenan/gitwork/perl"
  @​INC​:
  lib
  /usr/local/lib/perl5/site_perl/5.29.5/x86_64-linux-thread-multi
  /usr/local/lib/perl5/site_perl/5.29.5
  /usr/local/lib/perl5/5.29.5/x86_64-linux-thread-multi
  /usr/local/lib/perl5/5.29.5

@p5pRT
Copy link
Author

p5pRT commented Oct 23, 2018

From @jkeenan

On Tue, 23 Oct 2018 12​:42​:23 GMT, jkeenan@​pobox.com wrote​:

Last week, on Oct 17, in the two commits below we fatalized
File​::Glob​::glob() as per our schedule of deprecations and fatalizations.

#####
df8b709
a15e41c
#####

Karl Williamson has encountered one gotcha, which I have confirmed. If,
on Linux, you include this obscure (to me, at least) 'ccflag'
configuration option​:

#####
-Accflags='-DPERL_EXTERNAL_GLOB'
#####

... then when you run ext/File-Glob/t/basic.t, you get 1 test failure
and 3 shell-level warnings. See attachments.

I have produced this error on Linux with both gcc and g++ -- but I do
*not* get the error on FreeBSD (where clang is the default compiler).

There is no adequate documentation of PERL_EXTERNAL_GLOB in INSTALL,
pod/perlintern.pod or similar locations. Its name suggests that it
means something like "Use a glob outside Perl", but that doesn't help us
very much. Looking at the source code, I think the following sections
of code need investigation​:

#####
$ grep -nC3 PERL_EXTERNAL_GLOB pp_sys.c op.c doio.c
pp_sys.c-367-
pp_sys.c-368- /* Note that we only ever get here if File​::Glob fails
to load
pp_sys.c-369- * without at the same time croaking, for some reason,
or if
pp_sys.c​:370​: * perl was built with PERL_EXTERNAL_GLOB */
pp_sys.c-371-
pp_sys.c-372- ENTER_with_name("glob");
pp_sys.c-373-
--
op.c-11880- return o;
op.c-11881- }
op.c-11882- else o->op_flags &= ~OPf_SPECIAL;
op.c​:11883​:#if !defined(PERL_EXTERNAL_GLOB)
op.c-11884- if (!PL_globhook) {
op.c-11885- ENTER;
op.c-11886- Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT,
op.c-11887- newSVpvs("File​::Glob"), NULL, NULL, NULL);
op.c-11888- LEAVE;
op.c-11889- }
op.c​:11890​:#endif /* !PERL_EXTERNAL_GLOB */
op.c-11891- gv = (GV *)newSV(0);
op.c-11892- gv_init(gv, 0, "", 0, 0);
op.c-11893- gv_IOadd(gv);
--
doio.c-3208-Function called by C<do_readline> to spawn a glob (or do the
glob inside
doio.c-3209-perl on VMS). This code used to be inline, but now perl
uses C<File​::Glob>
doio.c-3210-this glob starter is only used by miniperl during the build
process,
doio.c​:3211​:or when PERL_EXTERNAL_GLOB is defined.
doio.c-3212-Moving it away shrinks F<pp_hot.c>; shrinking F<pp_hot.c>
helps speed perl up.
doio.c-3213-
doio.c-3214-=cut
#####

Thank you very much.
Jim Keenan

Add attachment holding test results.

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

@p5pRT
Copy link
Author

p5pRT commented Oct 23, 2018

From @jkeenan

1..49
ok 1 - use File​::Glob;
ok 2 - Got expected error message for removal of File​::Glob​::glob()
ok 3 - GLOB_TILDE expands patterns that start with '~' to user name home directories
ok 4 - tilde expansion - no environment
ok 5 # skip MSWin32 only
ok 6 - tilde expansion
ok 7 - GLOB_QUOTE works as expected
ok 8 - bsd_glob() works as expected for unmatched pattern and 0 flag
ok 9 - GLOB_ERROR is not 0
ok 10 - Got empty list as expected
ok 11 - Check for csh-style globbing
# TEST a b
ok 12 - Got list of 3 elements, including 'TEST'
ok 13 - ~ expands to envvar $HOME
# f_names = Ax.pl Bx.pl Cx.pl aY.pl bY.pl cY.pl
# g_names = Ax.pl Bx.pl Cx.pl aY.pl bY.pl cY.pl
ok 14 - Got expected case-sensitive list of filenames
# f_alpha = Ax.pl aY.pl Bx.pl bY.pl Cx.pl cY.pl
# g_alpha = Ax.pl aY.pl Bx.pl bY.pl Cx.pl cY.pl
ok 15 - Got expected case-insensitive list of filenames
sh​: 1​: tr​: not found
sh​: 1​: tr​: not found
ok 16 - Don't panic
sh​: 1​: tr​: not found
not ok 17 - Got expected list​: metacharacters and character class in pattern
# Failed test 'Got expected list​: metacharacters and character class in pattern'
# at ext/File-Glob/t/basic.t line 242.
# Structures begin differing at​:
# $got->[0] = Does not exist
# $expected->[0] = 'a_dej'
ok 18 - Successfuly ignored unsupported flag
ok 19 - a'b' with and without spaces
ok 20 - a"b" without spaces
ok 21 - a"b" without spaces
ok 22 - backslashes with(out) spaces
ok 23 - final escaped space
ok 24 - unmatched quote
ok 25 - unmatched quote with surrounding spaces
ok 26 - \ before quote *only* escapes quote
ok 27 - \ before single quote *only* escapes quote
ok 28 - before \" within "..."
ok 29 - before \' within '...'
ok 30 - :bsd_glob exports GLOB_ABEND
ok 31 - :bsd_glob exports GLOB_ALPHASORT
ok 32 - :bsd_glob exports GLOB_ALTDIRFUNC
ok 33 - :bsd_glob exports GLOB_BRACE
ok 34 - :bsd_glob exports GLOB_CSH
ok 35 - :bsd_glob exports GLOB_ERR
ok 36 - :bsd_glob exports GLOB_ERROR
ok 37 - :bsd_glob exports GLOB_LIMIT
ok 38 - :bsd_glob exports GLOB_MARK
ok 39 - :bsd_glob exports GLOB_NOCASE
ok 40 - :bsd_glob exports GLOB_NOCHECK
ok 41 - :bsd_glob exports GLOB_NOMAGIC
ok 42 - :bsd_glob exports GLOB_NOSORT
ok 43 - :bsd_glob exports GLOB_NOSPACE
ok 44 - :bsd_glob exports GLOB_QUOTE
ok 45 - :bsd_glob exports GLOB_TILDE
ok 46 - :bsd_glob exports bsd_glob
ok 47 - <a b> under :bsd_glob
ok 48 - <"a" "b"> under :bsd_glob
ok 49 - <> in list context under :bsd_glob
# Looks like you failed 1 test of 49.

@p5pRT
Copy link
Author

p5pRT commented Oct 23, 2018

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

@p5pRT
Copy link
Author

p5pRT commented Oct 23, 2018

From @jkeenan

On Tue, 23 Oct 2018 12​:49​:02 GMT, jkeenan wrote​:

On Tue, 23 Oct 2018 12​:42​:23 GMT, jkeenan@​pobox.com wrote​:

Last week, on Oct 17, in the two commits below we fatalized
File​::Glob​::glob() as per our schedule of deprecations and fatalizations.

#####
df8b709
a15e41c
#####

Karl Williamson has encountered one gotcha, which I have confirmed. If,
on Linux, you include this obscure (to me, at least) 'ccflag'
configuration option​:

#####
-Accflags='-DPERL_EXTERNAL_GLOB'
#####

... then when you run ext/File-Glob/t/basic.t, you get 1 test failure
and 3 shell-level warnings. See attachments.

I have produced this error on Linux with both gcc and g++ -- but I do
*not* get the error on FreeBSD (where clang is the default compiler).

There is no adequate documentation of PERL_EXTERNAL_GLOB in INSTALL,
pod/perlintern.pod or similar locations. Its name suggests that it
means something like "Use a glob outside Perl", but that doesn't help us
very much. Looking at the source code, I think the following sections
of code need investigation​:

#####
$ grep -nC3 PERL_EXTERNAL_GLOB pp_sys.c op.c doio.c
pp_sys.c-367-
pp_sys.c-368- /* Note that we only ever get here if File​::Glob fails
to load
pp_sys.c-369- * without at the same time croaking, for some reason,
or if
pp_sys.c​:370​: * perl was built with PERL_EXTERNAL_GLOB */
pp_sys.c-371-
pp_sys.c-372- ENTER_with_name("glob");
pp_sys.c-373-
--
op.c-11880- return o;
op.c-11881- }
op.c-11882- else o->op_flags &= ~OPf_SPECIAL;
op.c​:11883​:#if !defined(PERL_EXTERNAL_GLOB)
op.c-11884- if (!PL_globhook) {
op.c-11885- ENTER;
op.c-11886- Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT,
op.c-11887- newSVpvs("File​::Glob"), NULL, NULL, NULL);
op.c-11888- LEAVE;
op.c-11889- }
op.c​:11890​:#endif /* !PERL_EXTERNAL_GLOB */
op.c-11891- gv = (GV *)newSV(0);
op.c-11892- gv_init(gv, 0, "", 0, 0);
op.c-11893- gv_IOadd(gv);
--
doio.c-3208-Function called by C<do_readline> to spawn a glob (or do the
glob inside
doio.c-3209-perl on VMS). This code used to be inline, but now perl
uses C<File​::Glob>
doio.c-3210-this glob starter is only used by miniperl during the build
process,
doio.c​:3211​:or when PERL_EXTERNAL_GLOB is defined.
doio.c-3212-Moving it away shrinks F<pp_hot.c>; shrinking F<pp_hot.c>
helps speed perl up.
doio.c-3213-
doio.c-3214-=cut
#####

Thank you very much.
Jim Keenan

Add attachment holding test results.

And as reflected in this smoke test​:

http​://perl5.test-smoke.org/report/72937

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

@p5pRT
Copy link
Author

p5pRT commented Oct 23, 2018

From [Unknown Contact. See original ticket]

On Tue, 23 Oct 2018 12​:49​:02 GMT, jkeenan wrote​:

On Tue, 23 Oct 2018 12​:42​:23 GMT, jkeenan@​pobox.com wrote​:

Last week, on Oct 17, in the two commits below we fatalized
File​::Glob​::glob() as per our schedule of deprecations and fatalizations.

#####
df8b709
a15e41c
#####

Karl Williamson has encountered one gotcha, which I have confirmed. If,
on Linux, you include this obscure (to me, at least) 'ccflag'
configuration option​:

#####
-Accflags='-DPERL_EXTERNAL_GLOB'
#####

... then when you run ext/File-Glob/t/basic.t, you get 1 test failure
and 3 shell-level warnings. See attachments.

I have produced this error on Linux with both gcc and g++ -- but I do
*not* get the error on FreeBSD (where clang is the default compiler).

There is no adequate documentation of PERL_EXTERNAL_GLOB in INSTALL,
pod/perlintern.pod or similar locations. Its name suggests that it
means something like "Use a glob outside Perl", but that doesn't help us
very much. Looking at the source code, I think the following sections
of code need investigation​:

#####
$ grep -nC3 PERL_EXTERNAL_GLOB pp_sys.c op.c doio.c
pp_sys.c-367-
pp_sys.c-368- /* Note that we only ever get here if File​::Glob fails
to load
pp_sys.c-369- * without at the same time croaking, for some reason,
or if
pp_sys.c​:370​: * perl was built with PERL_EXTERNAL_GLOB */
pp_sys.c-371-
pp_sys.c-372- ENTER_with_name("glob");
pp_sys.c-373-
--
op.c-11880- return o;
op.c-11881- }
op.c-11882- else o->op_flags &= ~OPf_SPECIAL;
op.c​:11883​:#if !defined(PERL_EXTERNAL_GLOB)
op.c-11884- if (!PL_globhook) {
op.c-11885- ENTER;
op.c-11886- Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT,
op.c-11887- newSVpvs("File​::Glob"), NULL, NULL, NULL);
op.c-11888- LEAVE;
op.c-11889- }
op.c​:11890​:#endif /* !PERL_EXTERNAL_GLOB */
op.c-11891- gv = (GV *)newSV(0);
op.c-11892- gv_init(gv, 0, "", 0, 0);
op.c-11893- gv_IOadd(gv);
--
doio.c-3208-Function called by C<do_readline> to spawn a glob (or do the
glob inside
doio.c-3209-perl on VMS). This code used to be inline, but now perl
uses C<File​::Glob>
doio.c-3210-this glob starter is only used by miniperl during the build
process,
doio.c​:3211​:or when PERL_EXTERNAL_GLOB is defined.
doio.c-3212-Moving it away shrinks F<pp_hot.c>; shrinking F<pp_hot.c>
helps speed perl up.
doio.c-3213-
doio.c-3214-=cut
#####

Thank you very much.
Jim Keenan

Add attachment holding test results.

And as reflected in this smoke test​:

http​://perl5.test-smoke.org/report/72937

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

@p5pRT
Copy link
Author

p5pRT commented Oct 24, 2018

From @Leont

On Tue, Oct 23, 2018 at 2​:43 PM James E Keenan (via RT) <
perlbug-followup@​perl.org> wrote​:

There is no adequate documentation of PERL_EXTERNAL_GLOB in INSTALL,
pod/perlintern.pod or similar locations. Its name suggests that it
means something like "Use a glob outside Perl", but that doesn't help us
very much. Looking at the source code, I think the following sections
of code need investigation​:

Before File​::Glob entered core in 5.6.0 globbing was implemented by
shelling out. If PERL_EXTERNAL_GLOB is defined perl still does this the old
way.

Leon

@p5pRT
Copy link
Author

p5pRT commented Oct 24, 2018

From @Leont

On Tue, Oct 23, 2018 at 2​:43 PM James E Keenan (via RT) <
perlbug-followup@​perl.org> wrote​:

I have produced this error on Linux with both gcc and g++ -- but I do
*not* get the error on FreeBSD (where clang is the default compiler).

I suspect this difference is actually related to the absence (Linux) or
presence (FreeBSD) of csh. Perl will prefer csh over bourne shell.

Leon

@p5pRT
Copy link
Author

p5pRT commented Oct 24, 2018

From @jkeenan

On Wed, 24 Oct 2018 00​:28​:40 GMT, LeonT wrote​:

On Tue, Oct 23, 2018 at 2​:43 PM James E Keenan (via RT) <
perlbug-followup@​perl.org> wrote​:

There is no adequate documentation of PERL_EXTERNAL_GLOB in INSTALL,
pod/perlintern.pod or similar locations. Its name suggests that it
means something like "Use a glob outside Perl", but that doesn't help us
very much. Looking at the source code, I think the following sections
of code need investigation​:

Before File​::Glob entered core in 5.6.0 globbing was implemented by
shelling out. If PERL_EXTERNAL_GLOB is defined perl still does this the old
way.

Leon

On Wed, 24 Oct 2018 00​:33​:26 GMT, LeonT wrote​:

On Tue, Oct 23, 2018 at 2​:43 PM James E Keenan (via RT) <
perlbug-followup@​perl.org> wrote​:

I have produced this error on Linux with both gcc and g++ -- but I do
*not* get the error on FreeBSD (where clang is the default compiler).

I suspect this difference is actually related to the absence (Linux) or
presence (FreeBSD) of csh. Perl will prefer csh over bourne shell.

Leon

Thanks. Would you be able to take a look at the 3 *.c code fragments I posted the other day and suggest a patch?

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

@p5pRT p5pRT added BBC Blead Breaks CPAN - changes in blead broke a cpan module(s) Severity Low labels Oct 19, 2019
@toddr
Copy link
Member

toddr commented Feb 17, 2020

5.30 is already released. What did we end up doing about this?

@Leont
Copy link
Contributor

Leont commented Feb 17, 2020

5.30 is already released. What did we end up doing about this?

It seems we ignored it. I don't think we should necessarily fix it (we can't really, as it's an external dependency), but perhaps we should document that running an external glob requires having a csh installed.

@toddr
Copy link
Member

toddr commented Feb 17, 2020

but perhaps we should document that running an external glob requires having a csh installed.

Its kinda a https://github.com/Perl/metaconfig/issues documentation update, right? we could open a ticket there?

@toddr toddr added this to Monitoring in toddr Feb 17, 2020
@toddr toddr added the Closable? We might be able to close this ticket, but we need to check with the reporter label Feb 18, 2020
@jkeenan
Copy link
Contributor

jkeenan commented Mar 1, 2020

but perhaps we should document that running an external glob requires having a csh installed.

Its kinda a https://github.com/Perl/metaconfig/issues documentation update, right? we could open a ticket there?

On Linux I installed csh via apt, then configured with sh ./Configure -des -Dusedevel -Accflags='-DPERL_EXTERNAL_GLOB'. After building perl, I called cd t;./perl harness -v ../ext/File-Glob/t/basic.t;cd -. It PASSed and generate no test-time warnings.

I tried this both with and without export SHELL=/bin/csh. It made no difference, i.e., the mere presence of csh on the machine enabled me to get a PASS when I configured with -Accflags='-DPERL_EXTERNAL_GLOB'. I believe this should be documented in INSTALL as it affects how people are using Configure, not how Configure is composed.

Thank you very much.
Jim Keenan

@jkeenan
Copy link
Contributor

jkeenan commented Mar 2, 2020

Since with 0a790ce we have documented PERL_EXTERNAL_GLOB, I believe this ticket is now closable. Anyone disagree?

@jkeenan jkeenan self-assigned this Mar 2, 2020
@toddr
Copy link
Member

toddr commented Mar 3, 2020

Nope. thanks @jkeenan

@toddr toddr closed this as completed Mar 3, 2020
@toddr toddr removed the Closable? We might be able to close this ticket, but we need to check with the reporter label Mar 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BBC Blead Breaks CPAN - changes in blead broke a cpan module(s)
Projects
toddr
  
Monitoring
Development

No branches or pull requests

4 participants