Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Dec 1997 18:25:51 +0000
From:      Josef Karthauser <joe@pavilion.net>
To:        ports@freebsd.org
Cc:        Sam Eaton <sam@pavilion.net>
Subject:   Re: A change in the way we port perl anyone?
Message-ID:  <19971204182551.23329@pavilion.net>
In-Reply-To: <19971201175341.20837@pavilion.net>; from Josef Karthauser on Mon, Dec 01, 1997 at 05:53:41PM %2B0000
References:  <Pine.BSF.3.96.971122204135.14432a-100000@picnic.mat.net> <199711231601.IAA22224@baloon.mimi.com> <19971201175341.20837@pavilion.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 01, 1997 at 05:53:41PM +0000, Josef Karthauser wrote:
> 
> On Sun, Nov 23, 1997 at 08:01:47AM -0800, Satoshi Asami wrote:
> >  * I _WISH_ that there had been a p5 category made, because without that,
> >  * it's really hard not to do duplicates on Perl stuff.  There too darn many!
> > 
> > There is a "perl5" virtual category.  It shows up in the ports index
> > page and ports/INDEX. :)
> > 
> > Satoshi
> 
> Why don't we integrate the p5 stuff with mod-CPAN.  The perl code
> changes so often and they've already got an update mechanism for their stuff.
> Seems like we're reinventing the wheel, badly, here.

Let me clarify, to stimulate a reply.

Perl5 contains a module that allows it to integrate to the CPAN archive.
If it's setup it can perform updates of perl modules automagically.

Here's an example of the interactive shell, although it can be invoked
via code as well:

================ Fire up CPAN ================
# /usr/local/bin/perl -MCPAN -eshell

cpan shell -- CPAN exploration and modules installation (v1.3101)
ReadLine support enabled

================ Ask it to check to see what should be upgraded ============
cpan> r
Going to read /root/.cpan/sources/01mailrc.gz
Going to read /root/.cpan/sources/02packag.gz

  There's a new CPAN.pm version (v1.3102) available!
  You might want to try
    install CPAN
    reload cpan
  without quitting the current session. It should be a seamless upgrade
  while we are running...

Going to read /root/.cpan/sources/03mlist.gz

Package namespace         installed    latest  in CPAN file
Apache                         1.16      1.20  DOUGM/mod_perl-1.07.tar.gz
CGI                          2.37b5   2.37010  LDS/CGI.pm-2.37b10.tar.gz
CPAN                         1.3101    1.3102  TIMB/perl5.004_04.tar.gz
DBD::mysql                    2.004     2.006  JWIED/Msql-Mysql-modules-1.1820.tar.gz
DB_File                        1.54      1.55  PMQS/DB_File-1.55.tar.gz
HTML::Element                  1.35      1.37  GAAS/libwww-perl-5.17.tar.gz
IO                             1.17      1.18  GBARR/IO-1.1802.tar.gz
MIME::Base64                   2.03      2.04  GAAS/MIME-Base64-2.04.tar.gz
Net::Cmd                     2.0801      2.10  GBARR/libnet-1.0603.tar.gz
131 installed modules have no parseable version number

================ I want to to upgrade the IO module to the current one ======
cpan> install IO
Running make for GBARR/IO-1.1802.tar.gz
CPAN: LWP loaded ok
Fetching with LWP:
  ftp://ftp.flirble.org/pub/languages/perl/CPAN/authors/id/GBARR/IO-1.1802.tar.gz
CPAN: MD5 loaded ok
Fetching with LWP:
  ftp://ftp.flirble.org/pub/languages/perl/CPAN/authors/id/GBARR/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/GBARR/IO-1.1802.tar.gz ok
IO-1.1802/
IO-1.1802/t/
IO-1.1802/t/io_sel.t
IO-1.1802/t/io_const.t
IO-1.1802/t/io_udp.t
IO-1.1802/t/io_dup.t
IO-1.1802/t/io_xs.t
IO-1.1802/t/io_pipe.t
IO-1.1802/t/io_sock.t
IO-1.1802/t/io_tell.t
IO-1.1802/t/io_poll.t
IO-1.1802/t/io_dir.t
IO-1.1802/IO/
IO-1.1802/IO/Pipe.pm
IO-1.1802/IO/Poll.pm
IO-1.1802/IO/Seekable.pm
IO-1.1802/IO/Socket/
IO-1.1802/IO/Socket/UNIX.pm
IO-1.1802/IO/Socket/INET.pm
IO-1.1802/IO/Dir.pm
IO-1.1802/IO/File.pm
IO-1.1802/IO/Select.pm
IO-1.1802/IO/Socket.pm
IO-1.1802/IO/Handle.pm
IO-1.1802/IO.pm
IO-1.1802/poll.c
IO-1.1802/Makefile.PL
IO-1.1802/ChangeLog
IO-1.1802/poll.h
IO-1.1802/README
IO-1.1802/IO.xs
IO-1.1802/MANIFEST

  CPAN.pm: Going to build GBARR/IO-1.1802.tar.gz

Checking for Socket...ok
Checking if your kit is complete...
Looks good
Writing Makefile for IO
mkdir ./blib
mkdir ./blib/lib
cp IO/Pipe.pm ./blib/lib/IO/Pipe.pm
cp IO/Dir.pm ./blib/lib/IO/Dir.pm
cp IO/File.pm ./blib/lib/IO/File.pm
cp IO/Select.pm ./blib/lib/IO/Select.pm
cp IO.pm ./blib/lib/IO.pm
cp IO/Poll.pm ./blib/lib/IO/Poll.pm
cp IO/Socket/INET.pm ./blib/lib/IO/Socket/INET.pm
cp IO/Socket.pm ./blib/lib/IO/Socket.pm
cp IO/Seekable.pm ./blib/lib/IO/Seekable.pm
cp IO/Socket/UNIX.pm ./blib/lib/IO/Socket/UNIX.pm
cp IO/Handle.pm ./blib/lib/IO/Handle.pm
/usr/local/bin/perl -I/usr/local/lib/perl5/i386-freebsd/5.00403 -I/usr/local/lib/perl5 /usr/local/lib/perl5/ExtUtils/xsubpp  -typemap /usr/local/lib/perl5/ExtUtils/typemap IO.xs >IO.tc && mv IO.tc IO.c
cc -c  -I/usr/local/include -O     -DVERSION=\"1.18\"  -DXS_VERSION=\"1.18\" -DPIC -fpic -I/usr/local/lib/perl5/i386-freebsd/5.00403/CORE -DI_POLL IO.c
cc -c  -I/usr/local/include -O     -DVERSION=\"1.18\"  -DXS_VERSION=\"1.18\" -DPIC -fpic -I/usr/local/lib/perl5/i386-freebsd/5.00403/CORE -DI_POLL poll.c
mkdir ./blib/arch
mkdir ./blib/arch/auto
mkdir ./blib/arch/auto/IO
Running Mkbootstrap for IO ()
chmod 644 IO.bs
LD_RUN_PATH="" ld -o ./blib/arch/auto/IO/IO.so  -Bshareable  -L/usr/local/lib IO.o  poll.o     
chmod 755 ./blib/arch/auto/IO/IO.so
cp IO.bs ./blib/arch/auto/IO/IO.bs
chmod 644 ./blib/arch/auto/IO/IO.bs
mkdir ./blib/lib/auto/IO
mkdir ./blib/man3
Manifying ./blib/man3/IO::Pipe.3
Manifying ./blib/man3/IO::Dir.3
Manifying ./blib/man3/IO::Select.3
Manifying ./blib/man3/IO::File.3
Manifying ./blib/man3/IO.3
Manifying ./blib/man3/IO::Poll.3
Manifying ./blib/man3/IO::Socket::INET.3
Manifying ./blib/man3/IO::Socket.3
Manifying ./blib/man3/IO::Handle.3
Manifying ./blib/man3/IO::Socket::UNIX.3
Manifying ./blib/man3/IO::Seekable.3
  /usr/bin/make  -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/local/bin/perl -I./blib/arch -I./blib/lib -I/usr/local/lib/perl5/i386-freebsd/5.00403 -I/usr/local/lib/perl5 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
t/io_const..........ok
t/io_dir............ok
t/io_dup............ok
t/io_pipe...........ok
t/io_poll...........ok
t/io_sel............ok
t/io_sock...........ok
t/io_tell...........ok
t/io_udp............ok
t/io_xs.............ok
All tests successful.
Files=10,  Tests=85,  4 secs ( 2.41 cusr  0.64 csys =  3.05 cpu)
  /usr/bin/make test -- OK
Running make install
Installing /usr/local/lib/perl5/i386-freebsd/5.00403/./auto/IO/IO.so
Skipping /usr/local/lib/perl5/i386-freebsd/5.00403/./auto/IO/IO.bs (unchanged)
Installing /usr/local/lib/perl5/./IO/Pipe.pm
Skipping /usr/local/lib/perl5/./IO/Dir.pm (unchanged)
Skipping /usr/local/lib/perl5/./IO/File.pm (unchanged)
Installing /usr/local/lib/perl5/./IO/Select.pm
Skipping /usr/local/lib/perl5/./IO/Poll.pm (unchanged)
Skipping /usr/local/lib/perl5/./IO/Socket/INET.pm (unchanged)
Skipping /usr/local/lib/perl5/./IO/Socket/UNIX.pm (unchanged)
Installing /usr/local/lib/perl5/./IO/Socket.pm
Skipping /usr/local/lib/perl5/./IO/Seekable.pm (unchanged)
Installing /usr/local/lib/perl5/./IO/Handle.pm
Installing /usr/local/lib/perl5/./IO.pm
Installing /usr/local/lib/perl5/man/man3/./IO::Pipe.3
Installing /usr/local/lib/perl5/man/man3/./IO::Dir.3
Installing /usr/local/lib/perl5/man/man3/./IO::Select.3
Skipping /usr/local/lib/perl5/man/man3/./IO::File.3 (unchanged)
Installing /usr/local/lib/perl5/man/man3/./IO.3
Skipping /usr/local/lib/perl5/man/man3/./IO::Poll.3 (unchanged)
Skipping /usr/local/lib/perl5/man/man3/./IO::Socket::INET.3 (unchanged)
Installing /usr/local/lib/perl5/man/man3/./IO::Socket.3
Installing /usr/local/lib/perl5/man/man3/./IO::Handle.3
Skipping /usr/local/lib/perl5/man/man3/./IO::Socket::UNIX.3 (unchanged)
Skipping /usr/local/lib/perl5/man/man3/./IO::Seekable.3 (unchanged)
Writing /usr/local/lib/perl5/i386-freebsd/5.00403/auto/IO/.packlist
Appending installation info to /usr/local/lib/perl5/i386-freebsd/5.00403/perllocal.pod
  /usr/bin/make install  -- OK

================ Check to see that it's done it ================
cpan> r

Package namespace         installed    latest  in CPAN file
Apache                         1.16      1.20  DOUGM/mod_perl-1.07.tar.gz
CGI                          2.37b5   2.37010  LDS/CGI.pm-2.37b10.tar.gz
CPAN                         1.3101    1.3102  TIMB/perl5.004_04.tar.gz
DBD::mysql                    2.004     2.006  JWIED/Msql-Mysql-modules-1.1820.tar.gz
DB_File                        1.54      1.55  PMQS/DB_File-1.55.tar.gz
HTML::Element                  1.35      1.37  GAAS/libwww-perl-5.17.tar.gz
MIME::Base64                   2.03      2.04  GAAS/MIME-Base64-2.04.tar.gz
Net::Cmd                     2.0801      2.10  GBARR/libnet-1.0603.tar.gz
131 installed modules have no parseable version number

cpan> quit
#

Cool uh?

Because it does all this, including updating the CPAN module itself and
the core perl5 code this it seems a waste of labout making individual packages
of p5 stuff that do anything other than invoke the CPAN module.

With the current way that perl modules are handled in the ports one of
two things happen:
1.  A port/package that depends upon a perl module fails even though the
module is installed because there's not a relevent pkg entry for it.
2. Existing pkg entries get out of date easily when a new version is
installed using CPAN.

What it seems to me is that the ports handling needs to be expanded to
integrate with CPAN, which can even hot update the core perl5 code.

Is anyone interested in working on this development.  I'd love to do
it myself but unfortunately I haven't got the resources to do so
currently.

Joe
-- 
Josef Karthauser        
Technical Manager       Email: joe@pavilion.net
Pavilion Internet plc.  [Tel: +44 1273 607072  Fax: +44 1273 607073]




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19971204182551.23329>