[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/ExtUtils/Command/ -> MM.pm (source)

   1  package ExtUtils::Command::MM;
   2  
   3  use strict;
   4  
   5  require 5.005_03;
   6  require Exporter;
   7  use vars qw($VERSION @ISA @EXPORT);
   8  @ISA = qw(Exporter);
   9  
  10  @EXPORT  = qw(test_harness pod2man perllocal_install uninstall 
  11                warn_if_old_packlist);
  12  $VERSION = '6.42';
  13  
  14  my $Is_VMS = $^O eq 'VMS';
  15  
  16  
  17  =head1 NAME
  18  
  19  ExtUtils::Command::MM - Commands for the MM's to use in Makefiles
  20  
  21  =head1 SYNOPSIS
  22  
  23    perl "-MExtUtils::Command::MM" -e "function" "--" arguments...
  24  
  25  
  26  =head1 DESCRIPTION
  27  
  28  B<FOR INTERNAL USE ONLY!>  The interface is not stable.
  29  
  30  ExtUtils::Command::MM encapsulates code which would otherwise have to
  31  be done with large "one" liners.
  32  
  33  Any $(FOO) used in the examples are make variables, not Perl.
  34  
  35  =over 4
  36  
  37  =item B<test_harness>
  38  
  39    test_harness($verbose, @test_libs);
  40  
  41  Runs the tests on @ARGV via Test::Harness passing through the $verbose
  42  flag.  Any @test_libs will be unshifted onto the test's @INC.
  43  
  44  @test_libs are run in alphabetical order.
  45  
  46  =cut
  47  
  48  sub test_harness {
  49      require Test::Harness;
  50      require File::Spec;
  51  
  52      $Test::Harness::verbose = shift;
  53  
  54      # Because Windows doesn't do this for us and listing all the *.t files
  55      # out on the command line can blow over its exec limit.
  56      require ExtUtils::Command;
  57      my @argv = ExtUtils::Command::expand_wildcards(@ARGV);
  58  
  59      local @INC = @INC;
  60      unshift @INC, map { File::Spec->rel2abs($_) } @_;
  61      Test::Harness::runtests(sort { lc $a cmp lc $b } @argv);
  62  }
  63  
  64  
  65  
  66  =item B<pod2man>
  67  
  68    pod2man( '--option=value',
  69             $podfile1 => $manpage1,
  70             $podfile2 => $manpage2,
  71             ...
  72           );
  73  
  74    # or args on @ARGV
  75  
  76  pod2man() is a function performing most of the duties of the pod2man
  77  program.  Its arguments are exactly the same as pod2man as of 5.8.0
  78  with the addition of:
  79  
  80      --perm_rw   octal permission to set the resulting manpage to
  81  
  82  And the removal of:
  83  
  84      --verbose/-v
  85      --help/-h
  86  
  87  If no arguments are given to pod2man it will read from @ARGV.
  88  
  89  =cut
  90  
  91  sub pod2man {
  92      require Pod::Man;
  93      require Getopt::Long;
  94  
  95      my %options = ();
  96  
  97      # We will cheat and just use Getopt::Long.  We fool it by putting
  98      # our arguments into @ARGV.  Should be safe.
  99      local @ARGV = @_ ? @_ : @ARGV;
 100      Getopt::Long::config ('bundling_override');
 101      Getopt::Long::GetOptions (\%options, 
 102                  'section|s=s', 'release|r=s', 'center|c=s',
 103                  'date|d=s', 'fixed=s', 'fixedbold=s', 'fixeditalic=s',
 104                  'fixedbolditalic=s', 'official|o', 'quotes|q=s', 'lax|l',
 105                  'name|n=s', 'perm_rw:i'
 106      );
 107  
 108      # If there's no files, don't bother going further.
 109      return 0 unless @ARGV;
 110  
 111      # Official sets --center, but don't override things explicitly set.
 112      if ($options{official} && !defined $options{center}) {
 113          $options{center} = q[Perl Programmer's Reference Guide];
 114      }
 115  
 116      # This isn't a valid Pod::Man option and is only accepted for backwards
 117      # compatibility.
 118      delete $options{lax};
 119  
 120      do {{  # so 'next' works
 121          my ($pod, $man) = splice(@ARGV, 0, 2);
 122  
 123          next if ((-e $man) &&
 124                   (-M $man < -M $pod) &&
 125                   (-M $man < -M "Makefile"));
 126  
 127          print "Manifying $man\n";
 128  
 129          my $parser = Pod::Man->new(%options);
 130          $parser->parse_from_file($pod, $man)
 131            or do { warn("Could not install $man\n");  next };
 132  
 133          if (length $options{perm_rw}) {
 134              chmod(oct($options{perm_rw}), $man)
 135                or do { warn("chmod $options{perm_rw} $man: $!\n"); next };
 136          }
 137      }} while @ARGV;
 138  
 139      return 1;
 140  }
 141  
 142  
 143  =item B<warn_if_old_packlist>
 144  
 145    perl "-MExtUtils::Command::MM" -e warn_if_old_packlist <somefile>
 146  
 147  Displays a warning that an old packlist file was found.  Reads the
 148  filename from @ARGV.
 149  
 150  =cut
 151  
 152  sub warn_if_old_packlist {
 153      my $packlist = $ARGV[0];
 154  
 155      return unless -f $packlist;
 156      print <<"PACKLIST_WARNING";
 157  WARNING: I have found an old package in
 158      $packlist.
 159  Please make sure the two installations are not conflicting
 160  PACKLIST_WARNING
 161  
 162  }
 163  
 164  
 165  =item B<perllocal_install>
 166  
 167      perl "-MExtUtils::Command::MM" -e perllocal_install 
 168          <type> <module name> <key> <value> ...
 169  
 170      # VMS only, key|value pairs come on STDIN
 171      perl "-MExtUtils::Command::MM" -e perllocal_install
 172          <type> <module name> < <key>|<value> ...
 173  
 174  Prints a fragment of POD suitable for appending to perllocal.pod.
 175  Arguments are read from @ARGV.
 176  
 177  'type' is the type of what you're installing.  Usually 'Module'.
 178  
 179  'module name' is simply the name of your module.  (Foo::Bar)
 180  
 181  Key/value pairs are extra information about the module.  Fields include:
 182  
 183      installed into      which directory your module was out into
 184      LINKTYPE            dynamic or static linking
 185      VERSION             module version number
 186      EXE_FILES           any executables installed in a space seperated 
 187                          list
 188  
 189  =cut
 190  
 191  sub perllocal_install {
 192      my($type, $name) = splice(@ARGV, 0, 2);
 193  
 194      # VMS feeds args as a piped file on STDIN since it usually can't
 195      # fit all the args on a single command line.
 196      @ARGV = split /\|/, <STDIN> if $Is_VMS;
 197  
 198      my $pod;
 199      $pod = sprintf <<POD, scalar localtime;
 200   =head2 %s: C<$type> L<$name|$name>
 201   
 202   =over 4
 203   
 204  POD
 205  
 206      do {
 207          my($key, $val) = splice(@ARGV, 0, 2);
 208  
 209          $pod .= <<POD
 210   =item *
 211   
 212   C<$key: $val>
 213   
 214  POD
 215  
 216      } while(@ARGV);
 217  
 218      $pod .= "=back\n\n";
 219      $pod =~ s/^ //mg;
 220      print $pod;
 221  
 222      return 1;
 223  }
 224  
 225  =item B<uninstall>
 226  
 227      perl "-MExtUtils::Command::MM" -e uninstall <packlist>
 228  
 229  A wrapper around ExtUtils::Install::uninstall().  Warns that
 230  uninstallation is deprecated and doesn't actually perform the
 231  uninstallation.
 232  
 233  =cut
 234  
 235  sub uninstall {
 236      my($packlist) = shift @ARGV;
 237  
 238      require ExtUtils::Install;
 239  
 240      print <<'WARNING';
 241  
 242  Uninstall is unsafe and deprecated, the uninstallation was not performed.
 243  We will show what would have been done.
 244  
 245  WARNING
 246  
 247      ExtUtils::Install::uninstall($packlist, 1, 1);
 248  
 249      print <<'WARNING';
 250  
 251  Uninstall is unsafe and deprecated, the uninstallation was not performed.
 252  Please check the list above carefully, there may be errors.
 253  Remove the appropriate files manually.
 254  Sorry for the inconvenience.
 255  
 256  WARNING
 257  
 258  }
 259  
 260  =back
 261  
 262  =cut
 263  
 264  1;


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1