Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.98k stars 560 forks source link

perl 5.005_58 vs existing perl modules #288

Closed p5pRT closed 20 years ago

p5pRT commented 25 years ago

Migrated from rt.perl.org#1110 (status was 'resolved')

Searchable as RT1110$

p5pRT commented 25 years ago

From lvirden@cas.org

I don't know whether this latest release is supposed to be compatible or not with previous releases. But here's the behavior I am seeing​:

$ cat $(whence cpan) #!/vol/lwv26ldatae/bin/perl

eval 'exec /vol/lwv26ldatae/bin/perl -S $0 ${1+"$@​"}'   if 0; # not running under some shell

use CPAN; shell;

$ cpan Use of uninitialized value at (eval 3) line 16\, \ line 1931. Use of uninitialized value at /vol/lwv26ldatae/lib/perl5/5.005/Term/Cap.pm line 284. Use of uninitialized value at /vol/lwv26ldatae/lib/perl5/5.005/Term/Cap.pm line 284.

cpan shell -- CPAN exploration and modules installation (v1.50) ReadLine support available (try ``install Bundle​::CPAN'')

cpan> install Term​::Cap defined(@​array) is deprecated at /vol/lwv26ldatae/lib/perl5/site_perl/5.005/sun4-solaris/Net/Cmd.pm line 57\, \ line 1. (Maybe you should just omit the defined()?) CPAN​: Net​::FTP loaded ok Fetching with Net​::FTP​:   ftp​://ftp.perl.org/pub/perl/CPAN/authors/01mailrc.txt.gz Going to read /home/lwv26/.cpan/sources/authors/01mailrc.txt.gz ld.so.1​: /vol/lwv26ldatae/bin/perl​: fatal​: relocation error​: file /vol/lwv26ldatae/lib/perl5/site_perl/5.005/sun4-solaris/auto/Compress/Zlib/Zlib.so​: symbol perl_get_sv​: referenced symbol not found Killed

It looks like there is some sort of incompatibility along the way...

Perl Info ``` Site configuration information for perl 5.00558: Configured by lwv26 at Thu Jul 29 13:04:09 EDT 1999. Summary of my perl5 (revision 5.0 version 5 subversion 58) configuration: Platform: osname=solaris, osvers=2.6, archname=sun4-solaris uname='sunos lwv26awu 5.6 generic_105181-14 sun4u sparc sunw,ultra-5_10 ' config_args='' hint=previous, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef use64bits=undef usemultiplicity=undef Compiler: cc='cc', optimize='-O', gccversion= cppflags='-DDEBUGGING -I/projects/gnu/sparc-sun-solaris2.6/include -I/vol/lwv26ldatae/include -I/usr/ccs/include -I/usr/include' ccflags ='-DDEBUGGING -I/projects/gnu/sparc-sun-solaris2.6/include -I/vol/lwv26ldatae/include -I/usr/ccs/include -I/usr/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=y, prototype=define Linker and Libraries: ld='cc', ldflags ='-L/projects/gnu/sparc-sun-solaris2.6/lib -L/vol/lwv26ldatae/lib -L/usr/ccs/lib -R/projects/gnu/sparc-sun-solaris2.6/lib:/vol/lwv26ldatae/lib:/usr/ccs/lib' libpth=/projects/gnu/sparc-sun-solaris2.6/lib /vol/lwv26ldatae/lib /usr/ccs/lib /usr/lib libs=-lsocket -lnsl -lgdbm -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='-R/projects/gnu/sparc-sun-solaris2.6/lib:/vol/lwv26ldatae/lib:/usr/ccs/lib -G -L/projects/gnu/sparc-sun-solaris2.6/lib -L/vol/lwv26ldatae/lib -L/usr/ccs/lib' Locally applied patches: @INC for perl 5.00558: /home/lwv26/lib/perl5/ /projects/sprs_lwv/lib/perl5/ /vol/lwv26ldatae/lib/perl5/5.005/sun4-solaris /vol/lwv26ldatae/lib/perl5/5.005 /vol/lwv26ldatae/lib/perl5/site_perl/5.005/sun4-solaris /vol/lwv26ldatae/lib/site_perl . Environment for perl 5.00558: HOME=/home/lwv26 LANG=C LANGUAGE (unset) LD_LIBRARY_PATH=/lprod/cas/lib:/usr/dt/lib:/usr/openwin/lib:/usr/lib LOGDIR (unset) PATH=/opt/SUNWspro/bin:/ldatae/bin:/projects/sprs_lwv/sol26/bin:/projects/sprs_lwv/sol26/bin/mime:/projects/sprs_lwv/sol2/bin:/projects/sprs_lwv/bin:/projects/sprs_lwv/bin/mime:/home/lwv26/bin/D.news:/usr/perl5/bin:/projects/gnu/sparc-sun-solaris2.6/bin:/usr/tcl80/pd/sun4/bin:/usr/tcl80/pd/bin:/usr/tcl80/sun4/bin:/usr/tcl80/bin:/projects/xopsrc/sun4/bin:/projects/xopsrc/bin:/usr/atria/bin:/projects/intranet/bin:/projects/clearcase/bin:/vol/tclsrcsol/TclPro1.2/solaris-sparc/bin:/ldata2/teTeX/bin/sparc-sun-solaris2.6:/usr/tcl81/sun4/bin:/usr/tcl81/bin:/ldata/bin:/home/lwv26/bin/D.aws:/home/lwv26/bin/sol2:/home/lwv26/bin/D.frontend:/home/lwv26/bin/D.ksh:/cas/test/bin/sun4:/projects/sprs_lwv/bin/sol2:/usr/java1.2/bin:/home/lwv26/bin/sun4:/lprod/cas/bin:/usr/local/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/cas/bin/sun4:/cas/abin/sun4:/cas/X11/sun4/bin:/usr/ccs/bin:/uprod/bin:/usr/sbin:/cas/tools/bin/sun4:/cas/X11/sun4/tools/bin:/usr/ucb:/home/lwv26/bin:/cas/tools/pdbin/sun4:/home/l! wv26/bin/D.mistypes:/home/lwv26/bin/D.toys:/home/lwv26/bin/D.tools:/projects/npd/npdweb/bin-sol2 PERL5LIB=/home/lwv26/lib/perl5/:/projects/sprs_lwv/lib/perl5/: PERLDOC=-t PERLLIB=/home/lwv26/lib/perl:/projects/sprs_lwv/lib/perl: PERL_BADLANG (unset) SHELL=/bin/ksh ```
p5pRT commented 25 years ago

From [Unknown Contact. See original ticket]

On Thu\, 29 Jul 1999 14​:39​:13 EDT\, "Larry W. Virden" wrote​:

I don't know whether this latest release is supposed to be compatible or not with previous releases.

perldelta.pod is your friend.

Hmm - so it is. I guess I am surprised by the behavior in Configure though. In the past\, when there was a break in binary compatibility\, a different directory was presented as the default by Configure. When I didn't get that prompt\, I assumed (yes\, bad to do ... sorry) that things were continuing to be compatible. To date\, this release was the first in the 5.005_5x series that demonstrated the difference.

$ cpan Use of uninitialized value at (eval 3) line 16\, \ line 1931. Use of uninitialized value at /vol/lwv26ldatae/lib/perl5/5.005/Term/Cap.pm lin e 284. Use of uninitialized value at /vol/lwv26ldatae/lib/perl5/5.005/Term/Cap.pm lin e 284.

Were these warnings emitted by previous versions too?

No\, they were not.

ftp​://ftp.perl.org/pub/perl/CPAN/authors/01mailrc.txt.gz Going to read /home/lwv26/.cpan/sources/authors/01mailrc.txt.gz ld.so.1​: /vol/lwv26ldatae/bin/perl​: fatal​: relocation error​: file /vol/lwv26ld atae/lib/perl5/site_perl/5.005/sun4-solaris/auto/Compress/Zlib/Zlib.so​: symbol   > ^^^^^

You'll need to enable PERL_BINCOMPAT_5005 as perldelta.pod suggests. (Jarkko​: This needs to be a Configure flag that defaults to on.)

Beware that 5.005_5x can only hope to be binary compatible with 5.005 extensions when your are making a plain-vanilla-no-doodads-whatsoever build. If you ask for MULTIPLICITY or USE_THREADS\, you're out of luck.

It's a shame Configure can not detect that special case (as far as I am aware\, I've not asked for either of these) and prompt the configurer to use a different directory structure... -- Larry W. Virden \<URL​: mailto​:lvirden@​cas.org> \<URL​: http​://www.purl.org/NET/lvirden/> \<*> O- "No one is what he seems." Unless explicitly stated to the contrary\, nothing in this posting should be construed as representing my employer's opinions. ->\<-

p5pRT commented 25 years ago

From @gsar

On Thu\, 29 Jul 1999 14​:39​:13 EDT\, "Larry W. Virden" wrote​:

I don't know whether this latest release is supposed to be compatible or not with previous releases.

perldelta.pod is your friend.

                        But here's the behavior I am seeing&#8203;:

$ cat $(whence cpan) #!/vol/lwv26ldatae/bin/perl

eval 'exec /vol/lwv26ldatae/bin/perl -S $0 ${1+"$@​"}' if 0; # not running under some shell

use CPAN; shell;

$ cpan Use of uninitialized value at (eval 3) line 16\, \ line 1931. Use of uninitialized value at /vol/lwv26ldatae/lib/perl5/5.005/Term/Cap.pm lin e 284. Use of uninitialized value at /vol/lwv26ldatae/lib/perl5/5.005/Term/Cap.pm lin e 284.

Were these warnings emitted by previous versions too?

cpan shell -- CPAN exploration and modules installation (v1.50) ReadLine support available (try ``install Bundle​::CPAN'')

cpan> install Term​::Cap defined(@​array) is deprecated at /vol/lwv26ldatae/lib/perl5/site_perl/5.005/su n4-solaris/Net/Cmd.pm line 57\, \ line 1. (Maybe you should just omit the defined()?)

Seems to be a problem in Net​::Cmd.

CPAN​: Net​::FTP loaded ok Fetching with Net​::FTP​: ftp​://ftp.perl.org/pub/perl/CPAN/authors/01mailrc.txt.gz Going to read /home/lwv26/.cpan/sources/authors/01mailrc.txt.gz ld.so.1​: /vol/lwv26ldatae/bin/perl​: fatal​: relocation error​: file /vol/lwv26ld atae/lib/perl5/site_perl/5.005/sun4-solaris/auto/Compress/Zlib/Zlib.so​: symbol   ^^^^^

You'll need to enable PERL_BINCOMPAT_5005 as perldelta.pod suggests. (Jarkko​: This needs to be a Configure flag that defaults to on.)

Beware that 5.005_5x can only hope to be binary compatible with 5.005 extensions when your are making a plain-vanilla-no-doodads-whatsoever build. If you ask for MULTIPLICITY or USE_THREADS\, you're out of luck.

Sarathy gsar@​activestate.com

p5pRT commented 25 years ago

From @gsar

On Thu\, 29 Jul 1999 22​:23​:32 +0300\, Jarkko Hietaniemi wrote​:

You'll need to enable PERL_BINCOMPAT_5005 as perldelta.pod suggests. (Jarkko​: This needs to be a Configure flag that defaults to on.)

Come again? A "Configure flag"? Do you mean there should be a question like "You wanna binary compatibility with 5.005? [y] " the answer to which ends up in $Config{bincompat5005}?

Yes.

Sarathy gsar@​activestate.com

p5pRT commented 25 years ago

From [Unknown Contact. See original ticket]

Okay\, after reading the perldelta.pod\, I tried editing my config.sh to include the -DPERL_BINCOMPAT_5005 -DPERL_POLLUTE flags. I then did a Configure -der and a make. The results I get are interesting​:

/usr/ccs/bin/ar rcu libperl.a perl.o malloc.o gv.o toke.o perly.o op.o regcomp.o dump.o util.o mg.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o cc -L/projects/gnu/sparc-sun-solaris2.6/lib -L/vol/lwv26ldatae/lib -L/usr/ccs/l ib -R/projects/gnu/sparc-sun-solaris2.6/lib​:/vol/lwv26ldatae/lib​:/usr/ccs/lib -o miniperl miniperlmain.o libperl.a -lsocket -lnsl -lgdbm -ldb -ldl -lm -lc -lcry pt ./miniperl -w -Ilib -MExporter -e 0 || make minitest Bus Error - core dumped make[1]​: Entering directory `/ldatae/gnu/perl5.005_58' You may see some irrelevant test failures if you have been unable to build lib/Config.pm. cd t && (rm -f perl; /bin/ln -s ../miniperl perl) \   && ./perl TEST base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t \</dev /tty Bus Error - core dumped make[1]​: [minitest] Error 138 (ignored) make[1]​: Leaving directory `/ldatae/gnu/perl5.005_58' ./miniperl configpm configpm.tmp make​: *** [lib/Config.pm] Bus Error (core dumped) -- Larry W. Virden \<URL​: mailto​:lvirden@​cas.org> \<URL​: http​://www.purl.org/NET/lvirden/> \<*> O- "No one is what he seems." Unless explicitly stated to the contrary\, nothing in this posting should be construed as representing my employer's opinions. ->\<-

p5pRT commented 25 years ago

From @jhi

Gurusamy Sarathy writes​:

CPAN​: Net​::FTP loaded ok Fetching with Net​::FTP​: ftp​://ftp.perl.org/pub/perl/CPAN/authors/01mailrc.txt.gz Going to read /home/lwv26/.cpan/sources/authors/01mailrc.txt.gz ld.so.1​: /vol/lwv26ldatae/bin/perl​: fatal​: relocation error​: file /vol/lwv26ld atae/lib/perl5/site_perl/5.005/sun4-solaris/auto/Compress/Zlib/Zlib.so​: symbol ^^^^^

You'll need to enable PERL_BINCOMPAT_5005 as perldelta.pod suggests. (Jarkko​: This needs to be a Configure flag that defaults to on.)

Come again? A "Configure flag"? Do you mean there should be a question like "You wanna binary compatibility with 5.005? [y] " the answer to which ends up in $Config{bincompat5005}?

Beware that 5.005_5x can only hope to be binary compatible with 5.005 extensions when your are making a plain-vanilla-no-doodads-whatsoever build. If you ask for MULTIPLICITY or USE_THREADS\, you're out of luck.

Sarathy gsar@​activestate.com

-- $jhi++; # http​://www.iki.fi/jhi/   # There is this special biologist word we use for 'stable'.   # It is 'dead'. -- Jack Cohen

p5pRT commented 25 years ago

From @jhi

Gurusamy Sarathy writes​:

On Thu\, 29 Jul 1999 22​:23​:32 +0300\, Jarkko Hietaniemi wrote​:

You'll need to enable PERL_BINCOMPAT_5005 as perldelta.pod suggests. (Jarkko​: This needs to be a Configure flag that defaults to on.)

Come again? A "Configure flag"? Do you mean there should be a question like "You wanna binary compatibility with 5.005? [y] " the answer to which ends up in $Config{bincompat5005}?

Yes.

Does the sesquipedalian -DPERL_BINCOMPAT_5005 have to go to ccflags? Isn't some shameful shady corner of config.h enough?

-- $jhi++; # http​://www.iki.fi/jhi/   # There is this special biologist word we use for 'stable'.   # It is 'dead'. -- Jack Cohen

p5pRT commented 25 years ago

From @jhi

Ilya Zakharevich writes​:

Jarkko Hietaniemi writes​:

Come again? A "Configure flag"? Do you mean there should be a question like "You wanna binary compatibility with 5.005? [y] " the answer to which ends up in $Config{bincompat5005}?

Yes.

Does the sesquipedalian -DPERL_BINCOMPAT_5005 have to go to ccflags? Isn't some shameful shady corner of config.h enough?

There should be -D add_ccflags=... option to Configure.

There is. It's called -Dccflags. All that gets prepended to your ccflags-- unless your hints file does naughty things like

  ccflags="-blah"

instead of

  ccflags="$ccflags -blah"

-- $jhi++; # http​://www.iki.fi/jhi/   # There is this special biologist word we use for 'stable'.   # It is 'dead'. -- Jack Cohen

p5pRT commented 25 years ago

From [Unknown Contact. See original ticket]

Jarkko Hietaniemi writes​:

Come again? A "Configure flag"? Do you mean there should be a question like "You wanna binary compatibility with 5.005? [y] " the answer to which ends up in $Config{bincompat5005}?

Yes.

Does the sesquipedalian -DPERL_BINCOMPAT_5005 have to go to ccflags? Isn't some shameful shady corner of config.h enough?

There should be -D add_ccflags=... option to Configure.

Ilya

p5pRT commented 25 years ago

From @jhi

Ilya Zakharevich writes​:

On Thu\, Jul 29\, 1999 at 11​:29​:34PM +0300\, Jarkko Hietaniemi wrote​:

There is. It's called -Dccflags. All that gets prepended to your ccflags-- unless your hints file does naughty things like

ccflags="\-blah"

instead of

ccflags="$ccflags \-blah"

How would you *change* ccflags then? I

In hints files you mean? sed\, basically.

grep ccflags= \*

in ./hints\, and see both styles prolific there. It should be possible

Yes\, I know. That's a sin of the hints file writers.

to do it both ways.

Well\, *sometimes* the hints file writer is right in clobbering the old value of a setting.

Just checking that we are on the same page​: you are suggesting a Configure -Dthing that would append something to ccflags after the hints file has been processed?

-- $jhi++; # http​://www.iki.fi/jhi/   # There is this special biologist word we use for 'stable'.   # It is 'dead'. -- Jack Cohen

p5pRT commented 25 years ago

From [Unknown Contact. See original ticket]

On Thu\, Jul 29\, 1999 at 11​:29​:34PM +0300\, Jarkko Hietaniemi wrote​:

There is. It's called -Dccflags. All that gets prepended to your ccflags-- unless your hints file does naughty things like

ccflags="\-blah"

instead of

ccflags="$ccflags \-blah"

How would you *change* ccflags then? I

  grep ccflags= *

in ./hints\, and see both styles prolific there. It should be possible to do it both ways.

Ilya

p5pRT commented 25 years ago

From [Unknown Contact. See original ticket]

On Fri\, Jul 30\, 1999 at 12​:22​:35AM +0300\, Jarkko Hietaniemi wrote​:

There is. It's called -Dccflags. All that gets prepended to your ccflags-- unless your hints file does naughty things like

ccflags="\-blah"

instead of

ccflags="$ccflags \-blah"

How would you *change* ccflags then? I

In hints files you mean? sed\, basically.

No. How would you *replace* ccflags from Configure command line?

grep ccflags= \*

in ./hints\, and see both styles prolific there. It should be possible

Yes\, I know. That's a sin of the hints file writers.

I do not think so. We cannot require people follow non-existing suggestions. Where is it written which flags are appended/prepended/replaced?

Just checking that we are on the same page​: you are suggesting a Configure -Dthing that would append something to ccflags after the hints file has been processed?

Given the amound of hints/*.sh files which append/prepend ccflags\, it is probably not needed - just fix those which do not do this. However\, in the future one may need to have an "overwrite_ccflags" option. Probably Configure could recognize any "overwrite_*" option.

BTW\, yesterday I realized how useful may be mv_if_different when extracting .SH files. This may remove a redundant recompilation.

Ilya

p5pRT commented 25 years ago

From @jhi

Ilya Zakharevich writes​:

In hints files you mean? sed\, basically.

No. How would you *replace* ccflags from Configure command line?

You mean ignore completely what the hints file says?

grep ccflags= \*

in ./hints\, and see both styles prolific there. It should be possible

Yes\, I know. That's a sin of the hints file writers.

I do not think so. We cannot require people follow non-existing suggestions. Where is it written which flags are appended/prepended/replaced?

INSTALL​:

=head2 Other Compiler Flags

For most users\, all of the Configure defaults are fine. However\, you can change a number of factors in the way perl is built by adding appropriate -D directives to your ccflags variable in config.sh.

You should also run Configure interactively to verify that a hint file doesn't inadvertently override your ccflags setting. (Hints files shouldn't do that\, but some might.)

-- $jhi++; # http​://www.iki.fi/jhi/   # There is this special biologist word we use for 'stable'.   # It is 'dead'. -- Jack Cohen