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

h2xs failing during 'make'; lacking xlocale.h #16684

Open
p5pRT opened this issue Sep 5, 2018 · 9 comments
Open

h2xs failing during 'make'; lacking xlocale.h #16684

p5pRT opened this issue Sep 5, 2018 · 9 comments

Comments

@p5pRT
Copy link

p5pRT commented Sep 5, 2018

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

Searchable as RT133500$

@p5pRT
Copy link
Author

p5pRT commented Sep 5, 2018

From @jkeenan

In an admittedly naive attempt to create a module using XS, I say (based on
the h2xs) documentation​:

#####
$ h2xs -n Alpha​::Beta
Defaulting to backwards compatibility with perl 5.28.0
If you intend this module to be compatible with earlier perl versions,
please
specify a minimum perl version with the -b option.

Writing Alpha-Beta/ppport.h
Writing Alpha-Beta/lib/Alpha/Beta.pm
Writing Alpha-Beta/Beta.xs
Writing Alpha-Beta/fallback/const-c.inc
Writing Alpha-Beta/fallback/const-xs.inc
Writing Alpha-Beta/Makefile.PL
Writing Alpha-Beta/README
Writing Alpha-Beta/t/Alpha-Beta.t
Writing Alpha-Beta/Changes
Writing Alpha-Beta/MANIFEST

$ cd Alpha-Beta/

$ perl Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Alpha​::Beta
Writing MYMETA.yml and MYMETA.json
#####

I then say​:

#####
$ make
cp lib/Alpha/Beta.pm blib/lib/Alpha/Beta.pm
AutoSplitting blib/lib/Alpha/Beta.pm (blib/lib/auto/Alpha/Beta)
Running Mkbootstrap for Beta ()
chmod 644 "Beta.bs"
"/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/bin/perl"
-MExtUtils​::Command​::MM -e 'cp_nonempty' -- Beta.bs
blib/arch/auto/Alpha/Beta/Beta.bs 644
"/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/bin/perl"
"/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/ExtUtils/xsubpp"
  -typemap
'/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/ExtUtils/typemap'
  Beta.xs > Beta.xsc
Please specify prototyping behavior for Beta.xs (see perlxs manual)
mv Beta.xsc Beta.c
cc -c -I. -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2
-DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" -fPIC
"-I/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/x86_64-linux/CORE"
  Beta.c
In file included from Beta.xs​:3​:0​:
/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/x86_64-linux/CORE/perl.h​:719​:13​:
fatal error​: xlocale.h​: No such file or directory
  # include <xlocale.h>
  ^~~~~~~~~~~
compilation terminated.
Makefile​:334​: recipe for target 'Beta.o' failed
make​: *** [Beta.o] Error 1
#####

Is this a bug which has emerged in h2xs? Inadequate documentation?
What am I
missing?

Thank you very much.
Jim Keenan

(perl -V info not relevant; this was run on perl-5.28.0)

@p5pRT
Copy link
Author

p5pRT commented Sep 5, 2018

From @jkeenan

Summary of my perl5 (revision 5 version 29 subversion 3) configuration​:
  Commit id​: 3809fbe
  Platform​:
  osname=linux
  osvers=4.15.0-33-generic
  archname=x86_64-linux
  uname='linux zareason 4.15.0-33-generic #36-ubuntu smp wed aug 15 16​:00​:05 utc 2018 x86_64 x86_64 x86_64 gnulinux '
  config_args='-des -Dusedevel'
  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='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='cc'
  ldflags =' -fstack-protector-strong -L/usr/local/lib'
  libpth=/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
  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
  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 Sep 4 2018 10​:33​:18
  %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.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_VERSION="0.78"
  PERL_WORKDIR="/home/jkeenan/gitwork/perl"
  @​INC​:
  lib
  /usr/local/lib/perl5/site_perl/5.29.3/x86_64-linux
  /usr/local/lib/perl5/site_perl/5.29.3
  /usr/local/lib/perl5/5.29.3/x86_64-linux
  /usr/local/lib/perl5/5.29.3

@p5pRT
Copy link
Author

p5pRT commented Sep 5, 2018

From @jkeenan

On Wed, 05 Sep 2018 01​:10​:22 GMT, jkeenan@​pobox.com wrote​:

In an admittedly naive attempt to create a module using XS, I say
(based on
the h2xs) documentation​:

#####
$ h2xs -n Alpha​::Beta
Defaulting to backwards compatibility with perl 5.28.0
If you intend this module to be compatible with earlier perl
versions,
please
specify a minimum perl version with the -b option.

Writing Alpha-Beta/ppport.h
Writing Alpha-Beta/lib/Alpha/Beta.pm
Writing Alpha-Beta/Beta.xs
Writing Alpha-Beta/fallback/const-c.inc
Writing Alpha-Beta/fallback/const-xs.inc
Writing Alpha-Beta/Makefile.PL
Writing Alpha-Beta/README
Writing Alpha-Beta/t/Alpha-Beta.t
Writing Alpha-Beta/Changes
Writing Alpha-Beta/MANIFEST

$ cd Alpha-Beta/

$ perl Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Alpha​::Beta
Writing MYMETA.yml and MYMETA.json
#####

I then say​:

#####
$ make
cp lib/Alpha/Beta.pm blib/lib/Alpha/Beta.pm
AutoSplitting blib/lib/Alpha/Beta.pm (blib/lib/auto/Alpha/Beta)
Running Mkbootstrap for Beta ()
chmod 644 "Beta.bs"
"/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/bin/perl"
-MExtUtils​::Command​::MM -e 'cp_nonempty' -- Beta.bs
blib/arch/auto/Alpha/Beta/Beta.bs 644
"/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/bin/perl"
"/home/jkeenan/perl5/perlbrew/perls/perl-
5.28.0/lib/5.28.0/ExtUtils/xsubpp"
-typemap
'/home/jkeenan/perl5/perlbrew/perls/perl-
5.28.0/lib/5.28.0/ExtUtils/typemap'
Beta.xs > Beta.xsc
Please specify prototyping behavior for Beta.xs (see perlxs manual)
mv Beta.xsc Beta.c
cc -c -I. -fwrapv -fno-strict-aliasing -pipe -fstack-protector-
strong
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2
-DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" -fPIC
"-I/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/x86_64-
linux/CORE"
Beta.c
In file included from Beta.xs​:3​:0​:
/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/x86_64-
linux/CORE/perl.h​:719​:13​:
fatal error​: xlocale.h​: No such file or directory
# include <xlocale.h>
^~~~~~~~~~~
compilation terminated.
Makefile​:334​: recipe for target 'Beta.o' failed
make​: *** [Beta.o] Error 1
#####

Is this a bug which has emerged in h2xs? Inadequate documentation?
What am I
missing?

I get the same result in perl-5.26.0, but perl-5.24.1 works much more as expected. In that case the module I was creating was Gamma​::Delta.

#####
$ perl Makefile.PL && make
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Gamma​::Delta
Writing MYMETA.yml and MYMETA.json
cp lib/Gamma/Delta.pm blib/lib/Gamma/Delta.pm
AutoSplitting blib/lib/Gamma/Delta.pm (blib/lib/auto/Gamma/Delta)
Running Mkbootstrap for Delta ()
chmod 644 "Delta.bs"
"/home/jkeenan/perl5/perlbrew/perls/perl-5.24.1/bin/perl" -MExtUtils​::Command​::MM -e 'cp_nonempty' -- Delta.bs blib/arch/auto/Gamma/Delta/Delta.bs 644
"/home/jkeenan/perl5/perlbrew/perls/perl-5.24.1/bin/perl" "/home/jkeenan/perl5/perlbrew/perls/perl-5.24.1/lib/5.24.1/ExtUtils/xsubpp" -typemap '/home/jkeenan/perl5/perlbrew/perls/perl-5.24.1/lib/5.24.1/ExtUtils/typemap' Delta.xs > Delta.xsc
Please specify prototyping behavior for Delta.xs (see perlxs manual)
mv Delta.xsc Delta.c
cc -c -I. -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" -fPIC "-I/home/jkeenan/perl5/perlbrew/perls/perl-5.24.1/lib/5.24.1/x86_64-linux/CORE" Delta.c
rm -f blib/arch/auto/Gamma/Delta/Delta.so
cc -shared -O2 -L/usr/local/lib -fstack-protector-strong Delta.o -o blib/arch/auto/Gamma/Delta/Delta.so \
  \
 
chmod 755 blib/arch/auto/Gamma/Delta/Delta.so
Manifying 1 pod document
#####

So this is not just my ignorance. It's a regression in code (and perhaps inadequate documentation).

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

@p5pRT
Copy link
Author

p5pRT commented Sep 5, 2018

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

@p5pRT
Copy link
Author

p5pRT commented Sep 5, 2018

From @jkeenan

On Wed, 05 Sep 2018 01​:15​:40 GMT, jkeenan wrote​:

On Wed, 05 Sep 2018 01​:10​:22 GMT, jkeenan@​pobox.com wrote​:

In an admittedly naive attempt to create a module using XS, I say
(based on
the h2xs) documentation​:

#####
$ h2xs -n Alpha​::Beta
Defaulting to backwards compatibility with perl 5.28.0
If you intend this module to be compatible with earlier perl
versions,
please
specify a minimum perl version with the -b option.

Writing Alpha-Beta/ppport.h
Writing Alpha-Beta/lib/Alpha/Beta.pm
Writing Alpha-Beta/Beta.xs
Writing Alpha-Beta/fallback/const-c.inc
Writing Alpha-Beta/fallback/const-xs.inc
Writing Alpha-Beta/Makefile.PL
Writing Alpha-Beta/README
Writing Alpha-Beta/t/Alpha-Beta.t
Writing Alpha-Beta/Changes
Writing Alpha-Beta/MANIFEST

$ cd Alpha-Beta/

$ perl Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Alpha​::Beta
Writing MYMETA.yml and MYMETA.json
#####

I then say​:

#####
$ make
cp lib/Alpha/Beta.pm blib/lib/Alpha/Beta.pm
AutoSplitting blib/lib/Alpha/Beta.pm (blib/lib/auto/Alpha/Beta)
Running Mkbootstrap for Beta ()
chmod 644 "Beta.bs"
"/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/bin/perl"
-MExtUtils​::Command​::MM -e 'cp_nonempty' -- Beta.bs
blib/arch/auto/Alpha/Beta/Beta.bs 644
"/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/bin/perl"
"/home/jkeenan/perl5/perlbrew/perls/perl-
5.28.0/lib/5.28.0/ExtUtils/xsubpp"
-typemap
'/home/jkeenan/perl5/perlbrew/perls/perl-
5.28.0/lib/5.28.0/ExtUtils/typemap'
Beta.xs > Beta.xsc
Please specify prototyping behavior for Beta.xs (see perlxs manual)
mv Beta.xsc Beta.c
cc -c -I. -fwrapv -fno-strict-aliasing -pipe -fstack-protector-
strong
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2
-DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" -fPIC
"-I/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/x86_64-
linux/CORE"
Beta.c
In file included from Beta.xs​:3​:0​:
/home/jkeenan/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/x86_64-
linux/CORE/perl.h​:719​:13​:
fatal error​: xlocale.h​: No such file or directory
# include <xlocale.h>
^~~~~~~~~~~
compilation terminated.
Makefile​:334​: recipe for target 'Beta.o' failed
make​: *** [Beta.o] Error 1
#####

Is this a bug which has emerged in h2xs? Inadequate documentation?
What am I
missing?

I get the same result in perl-5.26.0, but perl-5.24.1 works much more
as expected. In that case the module I was creating was Gamma​::Delta.

#####
$ perl Makefile.PL && make
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Gamma​::Delta
Writing MYMETA.yml and MYMETA.json
cp lib/Gamma/Delta.pm blib/lib/Gamma/Delta.pm
AutoSplitting blib/lib/Gamma/Delta.pm (blib/lib/auto/Gamma/Delta)
Running Mkbootstrap for Delta ()
chmod 644 "Delta.bs"
"/home/jkeenan/perl5/perlbrew/perls/perl-5.24.1/bin/perl"
-MExtUtils​::Command​::MM -e 'cp_nonempty' -- Delta.bs
blib/arch/auto/Gamma/Delta/Delta.bs 644
"/home/jkeenan/perl5/perlbrew/perls/perl-5.24.1/bin/perl"
"/home/jkeenan/perl5/perlbrew/perls/perl-
5.24.1/lib/5.24.1/ExtUtils/xsubpp" -typemap
'/home/jkeenan/perl5/perlbrew/perls/perl-
5.24.1/lib/5.24.1/ExtUtils/typemap' Delta.xs > Delta.xsc
Please specify prototyping behavior for Delta.xs (see perlxs manual)
mv Delta.xsc Delta.c
cc -c -I. -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2
-DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" -fPIC "-
I/home/jkeenan/perl5/perlbrew/perls/perl-5.24.1/lib/5.24.1/x86_64-
linux/CORE" Delta.c
rm -f blib/arch/auto/Gamma/Delta/Delta.so
cc -shared -O2 -L/usr/local/lib -fstack-protector-strong Delta.o -o
blib/arch/auto/Gamma/Delta/Delta.so \
\

chmod 755 blib/arch/auto/Gamma/Delta/Delta.so
Manifying 1 pod document
#####

So this is not just my ignorance. It's a regression in code (and
perhaps inadequate documentation).

Thank you very much.

On #p5p xenu and TonyC inquired as to whether I had upgraded the operating system (and, presumably, glibc-dev) subsequent to building the perls (each built by perlbrew) used in the examples above. And, indeed, I had a tortuous and torturous upgrade to Ubuntu Linux 18.04 LTS this past weekend.

So I just built perl at blead and re-tested h2xs. I got satisfactory results​:

#####
$ ./bin/perl -Ilib -v |head -2 | tail -1
This is perl 5, version 29, subversion 3 (v5.29.3 (v5.29.2-46-g3809fbedec)) built for x86_64-linux

$ grep H2XS_VERSION bin/h2xs | head -1
my( $H2XS_VERSION ) = ' $Revision​: 1.23 $ ' =~ /\$Revision​:\s+([^\s]+)/;

$ ./bin/h2xs -n Iota​::Kappa
Defaulting to backwards compatibility with perl 5.29.3
If you intend this module to be compatible with earlier perl versions, please
specify a minimum perl version with the -b option.

Writing Iota-Kappa/ppport.h
Writing Iota-Kappa/lib/Iota/Kappa.pm
Writing Iota-Kappa/Kappa.xs
Writing Iota-Kappa/fallback/const-c.inc
Writing Iota-Kappa/fallback/const-xs.inc
Writing Iota-Kappa/Makefile.PL
Writing Iota-Kappa/README
Writing Iota-Kappa/t/Iota-Kappa.t
Writing Iota-Kappa/Changes
Writing Iota-Kappa/MANIFEST

$ cd Iota-Kappa/

$ ../bin/perl -I../lib Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Iota​::Kappa
Writing MYMETA.yml and MYMETA.json

$ make
cp lib/Iota/Kappa.pm blib/lib/Iota/Kappa.pm
AutoSplitting blib/lib/Iota/Kappa.pm (blib/lib/auto/Iota/Kappa)
Running Mkbootstrap for Kappa ()
chmod 644 "Kappa.bs"
"/home/jkeenan/testing/blead/bin/perl" -MExtUtils​::Command​::MM -e 'cp_nonempty' -- Kappa.bs blib/arch/auto/Iota/Kappa/Kappa.bs 644
"/home/jkeenan/testing/blead/bin/perl" "/home/jkeenan/testing/blead/lib/perl5/5.29.3/ExtUtils/xsubpp" -typemap '/home/jkeenan/testing/blead/lib/perl5/5.29.3/ExtUtils/typemap' Kappa.xs > Kappa.xsc
Please specify prototyping behavior for Kappa.xs (see perlxs manual)
mv Kappa.xsc Kappa.c
cc -c -I. -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" -fPIC "-I/home/jkeenan/testing/blead/lib/perl5/5.29.3/x86_64-linux/CORE" Kappa.c
rm -f blib/arch/auto/Iota/Kappa/Kappa.so
cc -shared -O2 -L/usr/local/lib -fstack-protector-strong Kappa.o -o blib/arch/auto/Iota/Kappa/Kappa.so \
  \
 
chmod 755 blib/arch/auto/Iota/Kappa/Kappa.so
#####

So, at the very least, I think we need some guidance in the h2xs docs so that others don't get bit by this.

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

@p5pRT
Copy link
Author

p5pRT commented Sep 5, 2018

From @ppisar

On 2018-09-05, "James E Keenan via RT" <perlbug-followup@​perl.org> wrote​:

On #p5p xenu and TonyC inquired as to whether I had upgraded the
operating system (and, presumably, glibc-dev) subsequent to building
the perls (each built by perlbrew) used in the examples above. And,
indeed, I had a tortuous and torturous upgrade to Ubuntu Linux 18.04
LTS this past weekend.

So I just built perl at blead and re-tested h2xs. I got satisfactory results​:

glibc-2.26 removed xlocale.h
<https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27>.
perl.h includes it only if I_XLOCALE is defined in config.h and config.h is
generated when building perl.

-- Petr

@p5pRT
Copy link
Author

p5pRT commented Mar 9, 2019

From @khwilliamson

On Wed, 05 Sep 2018 01​:10​:05 -0700, ppisar wrote​:

On 2018-09-05, "James E Keenan via RT" <perlbug-followup@​perl.org>
wrote​:

On #p5p xenu and TonyC inquired as to whether I had upgraded the
operating system (and, presumably, glibc-dev) subsequent to building
the perls (each built by perlbrew) used in the examples above. And,
indeed, I had a tortuous and torturous upgrade to Ubuntu Linux 18.04
LTS this past weekend.

So I just built perl at blead and re-tested h2xs. I got satisfactory
results​:

glibc-2.26 removed xlocale.h
<https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27>.
perl.h includes it only if I_XLOCALE is defined in config.h and
config.h is
generated when building perl.

-- Petr

Whaat is needed to close this ticket?
--
Karl Williamson

@p5pRT
Copy link
Author

p5pRT commented Mar 9, 2019

From @Leont

On Wed, Sep 5, 2018 at 10​:10 AM Petr Pisar <ppisar@​redhat.com> wrote​:

On 2018-09-05, "James E Keenan via RT" <perlbug-followup@​perl.org> wrote​:

On #p5p xenu and TonyC inquired as to whether I had upgraded the
operating system (and, presumably, glibc-dev) subsequent to building
the perls (each built by perlbrew) used in the examples above. And,
indeed, I had a tortuous and torturous upgrade to Ubuntu Linux 18.04
LTS this past weekend.

So I just built perl at blead and re-tested h2xs. I got satisfactory results​:

glibc-2.26 removed xlocale.h
<https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27>.
perl.h includes it only if I_XLOCALE is defined in config.h and config.h is
generated when building perl.

Our configuration logic is quite greedy when it comes to including
headers, and this isn't the first time such an issue happens. Probably
we should stop including headers just because they're around, and
instead only include them when we have reason to believe we need them.
Not sure how much work that would be though.

Leon

@khwilliamson
Copy link
Contributor

I think it would be significant amount of work, so I think we should just close this ticket

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants