From: Rafael Garcia-Suarez Date: Wed, 26 Mar 2003 19:55:20 +0000 (+0000) Subject: Add a file utils/cpan.PL to generate the "cpan" utility, X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ce28de53280045efd40d128c35482d809354e666;p=p5sagit%2Fp5-mst-13.2.git Add a file utils/cpan.PL to generate the "cpan" utility, also separately maintained on CPAN, and now moved as lib/CPAN/bin/cpan. Tweak installperl to avoid installing this last file. p4raw-id: //depot/perl@19065 --- diff --git a/MANIFEST b/MANIFEST index ca1b5bf..c96c21c 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1036,6 +1036,7 @@ lib/CPAN/t/loadme.t See if CPAN the module works lib/CPAN/t/mirroredby.t See if CPAN::Mirrored::By works lib/CPAN/t/Nox.t See if CPAN::Nox works lib/CPAN/t/vcmp.t See if CPAN the module works +lib/CPAN/bin/cpan easily interact with CPAN from the command line lib/ctime.pl A ctime workalike lib/Cwd.pm Various cwd routines (getcwd, fastcwd, chdir) lib/DB.pm Debugger API (draft) @@ -2748,7 +2749,7 @@ utfebcdic.h Unicode on EBCDIC (UTF-EBCDIC, tr16) header util.c Utility routines util.h Dummy header utils.lst Lists utilities bundled with Perl -utils/cpan easily interact with CPAN from the command line +utils/cpan.PL easily interact with CPAN from the command line utils/c2ph.PL program to translate dbx stabs to perl utils/dprofpp.PL Perl code profile post-processor utils/enc2xs.PL Encode module generator @@ -2760,7 +2761,7 @@ utils/perlbug.PL A simple tool to submit a bug report utils/perlcc.PL Front-end for compiler utils/perldoc.PL A simple tool to find & display perl's documentation utils/perlivp.PL installation verification procedure -utils/piconv.PL A pl to pm translator +utils/piconv.PL iconv(1), reinvented in perl utils/pl2pm.PL A pl to pm translator utils/splain.PL Stand-alone version of diagnostics.pm uts/sprintf_wrap.c sprintf wrapper for UTS diff --git a/installperl b/installperl index e775c9c..95f9793 100755 --- a/installperl +++ b/installperl @@ -747,16 +747,18 @@ sub installlib { my $name = $_; - # Ignore RCS and CVS directories. - if (($name eq 'CVS' or $name eq 'RCS') and -d $name) { + # Ignore version control directories. + if (($name eq 'CVS' or $name eq 'RCS' or $name eq '.svn') and -d $name) { $File::Find::prune = 1; return; } # ignore patch backups, RCS files, emacs backup & temp files and the # .exists files, .PL files, and .t files. - return if $name =~ m{\.orig$|~$|^#.+#$|,v$|^\.exists|\.PL$|\.t$} || + return if $name =~ m{\.orig$|\.rej$|~$|^#.+#$|,v$|^\.exists|\.PL$|\.t$} || $dir =~ m{/t(?:/|$)}; + # ignore the cpan script in lib/CPAN/bin (installed later with other utils) + return if $name eq 'cpan'; # ignore the test extensions return if $dir =~ m{ext/XS/(?:APItest|Typemap)/}; diff --git a/utils/cpan b/lib/CPAN/bin/cpan similarity index 100% rename from utils/cpan rename to lib/CPAN/bin/cpan diff --git a/utils/Makefile b/utils/Makefile index 3b1294e..8b98950 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -5,9 +5,9 @@ REALPERL = ../perl # Files to be built with variable substitution after miniperl is # available. Dependencies handled manually below (for now). -pl = c2ph.PL h2ph.PL h2xs.PL perlbug.PL perldoc.PL perlivp.PL pl2pm.PL splain.PL perlcc.PL dprofpp.PL libnetcfg.PL piconv.PL enc2xs.PL -plextract = c2ph h2ph h2xs perlbug perldoc perlivp pl2pm splain perlcc dprofpp libnetcfg piconv enc2xs -plextractexe = ./c2ph ./h2ph ./h2xs ./perlbug ./perldoc ./perlivp ./pl2pm ./splain ./perlcc ./dprofpp ./libnetcfg ./piconv ./enc2xs +pl = c2ph.PL cpan.PL h2ph.PL h2xs.PL perlbug.PL perldoc.PL perlivp.PL pl2pm.PL splain.PL perlcc.PL dprofpp.PL libnetcfg.PL piconv.PL enc2xs.PL +plextract = c2ph cpan h2ph h2xs perlbug perldoc perlivp pl2pm splain perlcc dprofpp libnetcfg piconv enc2xs +plextractexe = ./c2ph ./cpan ./h2ph ./h2xs ./perlbug ./perldoc ./perlivp ./pl2pm ./splain ./perlcc ./dprofpp ./libnetcfg ./piconv ./enc2xs all: $(plextract) @@ -29,6 +29,8 @@ $(plextract): c2ph: c2ph.PL ../config.sh +cpan: cpan.PL ../config.sh + h2ph: h2ph.PL ../config.sh h2xs: h2xs.PL ../config.sh diff --git a/utils/cpan.PL b/utils/cpan.PL new file mode 100644 index 0000000..5e12d78 --- /dev/null +++ b/utils/cpan.PL @@ -0,0 +1,48 @@ +#!/usr/local/bin/perl + +use Config; +use File::Basename qw(&basename &dirname); +use Cwd; + +# List explicitly here the variables you want Configure to +# generate. Metaconfig only looks for shell variables, so you +# have to mention them as if they were shell variables, not +# %Config entries. Thus you write +# $startperl +# to ensure Configure will look for $Config{startperl}. + +# This forces PL files to create target in same directory as PL file. +# This is so that make depend always knows where to find PL derivatives. +my $origdir = cwd; +chdir dirname($0); +my $file = basename($0, '.PL'); +$file .= '.com' if $^O eq 'VMS'; + +open OUT,">$file" or die "Can't create $file: $!"; + +print "Extracting $file (with variable substitutions)\n"; + +# In this section, perl variables will be expanded during extraction. +# You can use $Config{...} to use Configure variables. + +print OUT <<"!GROK!THIS!"; +$Config{startperl} + eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' + if \$running_under_some_shell; +!GROK!THIS! + +use File::Spec; + +my $cpan = File::Spec->catfile(File::Spec->catdir(File::Spec->updir, "lib", "CPAN", "bin"), "cpan"); + +if (open(CPAN, $cpan)) { + print OUT ; + close CPAN; +} else { + die "$0: cannot find '$cpan'\n"; +} + +close OUT or die "Can't close $file: $!"; +chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; +exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':'; +chdir $origdir;