Closed p5pRT closed 20 years ago
The h2ph included with 5.00503 will autogenerate _h2ph_pre.ph\, and the file it creates is then explicitly required by each and every *.ph file subsequently generated.
Unfortunately\, the file is not necessarily syntactically correct:
Warning: Use of "defined" without parens is ambiguous at /usr/tools/lib/perl5/_h2ph_pre.ph line 2. Can't use subscript on subroutine entry at /usr/tools/lib/perl5/_h2ph_pre.ph line 2\, near "} }" (Did you mean $ or @ instead of &?) syntax error at /usr/tools/lib/perl5/_h2ph_pre.ph line 4\, near "unless"
The offensive line is:
unless (defined &) { sub () { "" } }
This causes modules such as Sys::Syslog\, which requires syslog.ph\, to fail at compile time. This is bad...
The problem is caused by the _extract_cc_defines() subroutine\, which parses the values found in 3 %Config values\, but doesn't deal with empty values correctly.
In my case\, building with SunProC 4.2 on Solaris 2.5.1\, $Config{ccsymbols} is empty\, and this results in the null key\, and the bogus _h2ph_pre.ph\, and thus the very unhappy users.
BTW\, the test suite doesn't catch this\, as it compares the resulting test of an h2ph invocation\, but doesn't require the code to verify that it is syntactically correct.
The h2ph.PL patch is exceedingly trivial (sorry\, no time to hack the test suite today).
*** h2ph.PL.orig Tue Jun 15 16:30:52 1999
--- h2ph.PL Tue Jun 15 16:31:21 1999
***************
*** 576\,582 ****
# Split compiler pre-definitions into `key=value' pairs:
foreach (split /\s+/\, $allsymbols) {
! /(.*?)=(.*)/;
$define{$1} = $2;
if ($opt_D) {
--- 576\,582 ----
# Split compiler pre-definitions into `key=value' pairs:
foreach (split /\s+/\, $allsymbols) {
! next unless /(.*?)=(.*)/;
$define{$1} = $2;
if ($opt_D) {
This perlbug was built using Perl 5.00503 - Thu May 20 11:43:00 EDT 1999 It is being executed now by Perl 5.00503 - Thu May 20 11:45:48 EDT 1999.
Site configuration information for perl 5.00503:
Configured by wpm at Thu May 20 11:45:48 EDT 1999.
Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=solaris\, osvers=2.5.1\, archname=sun4-solaris uname='sunos sascs1 5.5.1 generic_103640-24 sun4u sparc sunw\,ultra-enterprise ' hint=recommended\, useposix=true\, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc'\, optimize='-O'\, gccversion= cppflags='-DAPPLLIB_EXP="/ms/dist/perl5/VERS/5.00503-core/lib/perl5:/ms/dist/perl5/VERS/5.005-core/lib/perl5" -I/usr/local/include' ccflags ='-DAPPLLIB_EXP="/ms/dist/perl5/VERS/5.00503-core/lib/perl5:/ms/dist/perl5/VERS/5.005-core/lib/perl5" -I/usr/local/include' stdchar='unsigned char'\, d_stdstdio=define\, usevfork=false intsize=4\, longsize=4\, ptrsize=4\, doublesize=8 d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=16 alignbytes=8\, usemymalloc=n\, prototype=define Linker and Libraries: ld='cc'\, ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib libs=-lsocket -lnsl -ldb -ldl -lm -lc -lcrypt libc=/lib/libc.so\, so=so\, useshrplib=false\, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags=' ' cccdlflags='-KPIC'\, lddlflags='-G -L/usr/local/lib'
Locally applied patches:
@INC for perl 5.00503: /ms/dist/perl5/VERS/5.00503-core/lib/perl5 /ms/dist/perl5/VERS/5.005-core/lib/perl5 /ms/dist/perl5/PROJ/core/5.00503/exec/lib/perl5 /ms/dist/perl5/PROJ/core/5.00503/common/lib/perl5 /ms/dist/perl5/VERS/5.00503/lib/perl5 /ms/dist/perl5/VERS/5.005/lib/perl5 /ms/dist/perl5/lib/perl5 /ms/dist/aurora/lib/perl5 .
Environment for perl 5.00503: HOME=/ms/user/w/wpm LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH=/usr/dt/lib:/usr/openwin/lib:/ms/dist/aurora/lib LOGDIR (unset) PATH=/ms/dist/perl5/bin:/ms/dist/i18n/bin:/ms/dist/afs/PROJ/vms/beta/common/bin:/ms/dist/afs/PROJ/vms/beta/common/sbin:/ms/dist/msde/PROJ/msde/1.4/bin:/ms/user/w/wpm/bin:/ms/user/w/wpm/bin/@sys:/ms/dist/aurora/hackbin:/ms/dist/aurora/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ccs/bin:/usr/ucb:/ms/dist/fsf/bin:/ms/dist/afs/bin:/ms/dist/aurora/sbin:/usr/sbin:/ms/dist/afs/sbin:/ms/dist/fidunix/bin:.:/ms/dist/eoffice/bin:/ms/dist/mq/sbin:/ms/dist/mq/bin:/opt/mqm/bin:/opt/mqm/samp/bin:/ms/dist/syb/bin PERL_BADLANG (unset) SHELL=/bin/ksh
Migrated from rt.perl.org#872 (status was 'resolved')
Searchable as RT872$