You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by TGS <sp...@tachegroup.com> on 2004/04/07 14:39:52 UTC

[mp1] Apache::Symbol and perl Symbol.pm possible clash due to bareword gensym reference

I am having problems compiling mod_perl as the following errors report.

...
make[1]: Entering directory 
`/usr/local/perl-cpan/build/mod_perl-1.29/Symbol'
Running Mkbootstrap for Apache::Symbol ()
chmod 644 Symbol.bs
rm -f ../blib/arch/auto/Apache/Symbol/Symbol.so
LD_RUN_PATH="" gcc  -shared -L/usr/local/lib Symbol.o  -o 
../blib/arch/auto/Apache/Symbol/Symbol.so
chmod 755 ../blib/arch/auto/Apache/Symbol/Symbol.so
cp Symbol.bs ../blib/arch/auto/Apache/Symbol/Symbol.bs
chmod 644 ../blib/arch/auto/Apache/Symbol/Symbol.bs
Bareword "gensym" not allowed while "strict subs" in use at 
/usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158.
Bareword "gensym" not allowed while "strict subs" in use at 
/usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158.
Compilation failed in require at /usr/lib/perl5/5.8.3/Pod/Man.pm line 30.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.3/Pod/Man.pm 
line 30.
Compilation failed in require at 
/usr/lib/perl5/5.8.3/ExtUtils/Command/MM.pm line 86.
make[1]: *** [manifypods] Error 255
make[1]: Leaving directory `/usr/local/perl-cpan/build/mod_perl-1.29/Symbol'
make: *** [subdirs] Error 2

The offending /usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158 is

my ($in_fh,  $out_fh) = (gensym, gensym)  if ($] < 5.6);

I thought that I could fix it by changing the reference to 
Symbol::gensym() from the gensym reference.

for instance, this works fine as a small test program to resolve the 
bareword issue ...

#!/usr/bin/perl -w
use strict;
require Symbol;
import Symbol;
my ($in_fh,  $out_fh) = (Symbol::gensym(), Symbol::gensym())  if ($] < 5.6);

But when I do that, it seems that I get a clash on perl's Symbol.pm and 
Apache::Symbol with this new error

Undefined subroutine &Symbol::gensym called at 
/usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158.

perl -v follows:

Summary of my perl5 (revision 5.0 version 8 subversion 3) configuration:
  Platform:
    osname=linux, osvers=2.4.21-2.elsmp, archname=i386-linux-thread-multi
    uname='linux porky.devel.redhat.com 2.4.21-2.elsmp #1 smp wed sep 17 
15:00:55 edt 2003 i686 i686 i386 gnulinux '
    config_args='-des -Doptimize=-O2 -g -pipe -march=i386 -mcpu=i686 
-Dversion=5.8.3 -Dmyhostname=localhost -Dperladmin=root@localhost 
-Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr 
-Darchname=i386-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib 
-Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun 
-Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio 
-Dinstallusrbinperl -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less 
-isr -Dinc_version_list=5.8.2 5.8.1 5.8.0'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define 
usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS 
-DDEBUGGING -fno-strict-aliasing -I/usr/local/include 
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
    optimize='-O2 -g -pipe -march=i386 -mcpu=i686',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING 
-fno-strict-aliasing -I/usr/local/include -I/usr/include/gdbm'
    ccversion='', gccversion='3.3.3 20040311 (Red Hat Linux 3.3.3-3)', 
gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', 
lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=/lib/libc-2.3.3.so, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.3.3'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic 
-Wl,-rpath,/usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'


Characteristics of this binary (from libperl):
  Compile-time options: DEBUGGING MULTIPLICITY USE_ITHREADS 
USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
  Built under linux
  Compiled at Apr  3 2004 13:27:55
  %ENV:
    PERLLIB="/usr/local/perl5.005_02/lib/perl5:."
  @INC:
    /usr/local/perl5.005_02/lib/perl5
    .
    /usr/lib/perl5/5.8.3/i386-linux-thread-multi
    /usr/lib/perl5/5.8.3
    /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.3
    /usr/lib/perl5/site_perl/5.8.2
    /usr/lib/perl5/site_perl/5.8.1
    /usr/lib/perl5/site_perl/5.8.0
    /usr/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.3
    /usr/lib/perl5/vendor_perl/5.8.2
    /usr/lib/perl5/vendor_perl/5.8.1
    /usr/lib/perl5/vendor_perl/5.8.0
    /usr/lib/perl5/vendor_perl
    .


-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [mp1] Apache::Symbol and perl Symbol.pm possible clash due to bareword gensym reference

Posted by TGS <sp...@tachegroup.com>.
Perfect! Cleaning up the path worked wonders.

on 4/07/2004 1:02 PM, Stas Bekman at stas@stason.org wrote:

> TGS wrote:
>> I am having problems compiling mod_perl as the following errors report.
>> 
>> ...
>> make[1]: Entering directory
>> `/usr/local/perl-cpan/build/mod_perl-1.29/Symbol'
>> Running Mkbootstrap for Apache::Symbol ()
>> chmod 644 Symbol.bs
>> rm -f ../blib/arch/auto/Apache/Symbol/Symbol.so
>> LD_RUN_PATH="" gcc  -shared -L/usr/local/lib Symbol.o  -o
>> ../blib/arch/auto/Apache/Symbol/Symbol.so
>> chmod 755 ../blib/arch/auto/Apache/Symbol/Symbol.so
>> cp Symbol.bs ../blib/arch/auto/Apache/Symbol/Symbol.bs
>> chmod 644 ../blib/arch/auto/Apache/Symbol/Symbol.bs
>> Bareword "gensym" not allowed while "strict subs" in use at
>> /usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158.
>> Bareword "gensym" not allowed while "strict subs" in use at
>> /usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158.
>> Compilation failed in require at /usr/lib/perl5/5.8.3/Pod/Man.pm line 30.
>> BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.3/Pod/Man.pm
>> line 30.
>> Compilation failed in require at
>> /usr/lib/perl5/5.8.3/ExtUtils/Command/MM.pm line 86.
>> make[1]: *** [manifypods] Error 255
>> make[1]: Leaving directory
>> `/usr/local/perl-cpan/build/mod_perl-1.29/Symbol'
>> make: *** [subdirs] Error 2
>> 
>> The offending /usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158 is
>> 
>> my ($in_fh,  $out_fh) = (gensym, gensym)  if ($] < 5.6);
> 
> Your problem is that you've modified @INC to push "." before all other
> directories. And it should be last. When "." is first in the path it picks
> Symbol.pm when it's inside mod_perl-1.29/Symbol and it shouldn't.
> 
>>  %ENV:
>>    PERLLIB="/usr/local/perl5.005_02/lib/perl5:."
>                                               ^^^
> 
>>  @INC:
>>    /usr/local/perl5.005_02/lib/perl5
>>    .
>     ^^^
>>    /usr/lib/perl5/5.8.3/i386-linux-thread-multi
>>    /usr/lib/perl5/5.8.3
>>    /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi
>>    /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
>>    /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi
>>    /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
>>    /usr/lib/perl5/site_perl/5.8.3
>>    /usr/lib/perl5/site_perl/5.8.2
>>    /usr/lib/perl5/site_perl/5.8.1
>>    /usr/lib/perl5/site_perl/5.8.0
>>    /usr/lib/perl5/site_perl
>>    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi
>>    /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
>>    /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi
>>    /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
>>    /usr/lib/perl5/vendor_perl/5.8.3
>>    /usr/lib/perl5/vendor_perl/5.8.2
>>    /usr/lib/perl5/vendor_perl/5.8.1
>>    /usr/lib/perl5/vendor_perl/5.8.0
>>    /usr/lib/perl5/vendor_perl
> 
> So run the build after unsetting PERLLIB and you will be fine.
> 
> __________________________________________________________________
> Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
> http://stason.org/     mod_perl Guide ---> http://perl.apache.org
> mailto:stas@stason.org http://use.perl.org http://apacheweek.com
> http://modperlbook.org http://apache.org   http://ticketmaster.com
> 


-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [mp1] Apache::Symbol and perl Symbol.pm possible clash due to bareword gensym reference

Posted by Stas Bekman <st...@stason.org>.
TGS wrote:
> I am having problems compiling mod_perl as the following errors report.
> 
> ...
> make[1]: Entering directory 
> `/usr/local/perl-cpan/build/mod_perl-1.29/Symbol'
> Running Mkbootstrap for Apache::Symbol ()
> chmod 644 Symbol.bs
> rm -f ../blib/arch/auto/Apache/Symbol/Symbol.so
> LD_RUN_PATH="" gcc  -shared -L/usr/local/lib Symbol.o  -o 
> ../blib/arch/auto/Apache/Symbol/Symbol.so
> chmod 755 ../blib/arch/auto/Apache/Symbol/Symbol.so
> cp Symbol.bs ../blib/arch/auto/Apache/Symbol/Symbol.bs
> chmod 644 ../blib/arch/auto/Apache/Symbol/Symbol.bs
> Bareword "gensym" not allowed while "strict subs" in use at 
> /usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158.
> Bareword "gensym" not allowed while "strict subs" in use at 
> /usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158.
> Compilation failed in require at /usr/lib/perl5/5.8.3/Pod/Man.pm line 30.
> BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.3/Pod/Man.pm 
> line 30.
> Compilation failed in require at 
> /usr/lib/perl5/5.8.3/ExtUtils/Command/MM.pm line 86.
> make[1]: *** [manifypods] Error 255
> make[1]: Leaving directory 
> `/usr/local/perl-cpan/build/mod_perl-1.29/Symbol'
> make: *** [subdirs] Error 2
> 
> The offending /usr/lib/perl5/5.8.3/Pod/Parser.pm line 1158 is
> 
> my ($in_fh,  $out_fh) = (gensym, gensym)  if ($] < 5.6);

Your problem is that you've modified @INC to push "." before all other 
directories. And it should be last. When "." is first in the path it picks 
Symbol.pm when it's inside mod_perl-1.29/Symbol and it shouldn't.

>  %ENV:
>    PERLLIB="/usr/local/perl5.005_02/lib/perl5:."
                                                ^^^

>  @INC:
>    /usr/local/perl5.005_02/lib/perl5
>    .
      ^^^
>    /usr/lib/perl5/5.8.3/i386-linux-thread-multi
>    /usr/lib/perl5/5.8.3
>    /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi
>    /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
>    /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi
>    /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
>    /usr/lib/perl5/site_perl/5.8.3
>    /usr/lib/perl5/site_perl/5.8.2
>    /usr/lib/perl5/site_perl/5.8.1
>    /usr/lib/perl5/site_perl/5.8.0
>    /usr/lib/perl5/site_perl
>    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi
>    /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
>    /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi
>    /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
>    /usr/lib/perl5/vendor_perl/5.8.3
>    /usr/lib/perl5/vendor_perl/5.8.2
>    /usr/lib/perl5/vendor_perl/5.8.1
>    /usr/lib/perl5/vendor_perl/5.8.0
>    /usr/lib/perl5/vendor_perl

So run the build after unsetting PERLLIB and you will be fine.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html