home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume30 / oraperl-v2 / part04 / install.pl < prev    next >
Encoding:
Perl Script  |  1992-07-06  |  2.8 KB  |  134 lines

  1. #!./oraperl
  2. #
  3. # install.pl
  4. #
  5. # Perl script to install Oraperl, Coraperl (if present) and sql.
  6. # Hacked from Larry's installperl script in the Perl distribution.
  7.  
  8. ($nonono = 1, shift) if $ARGV[0] eq '-n';
  9. $SRC = shift || die "Usage: $0 [-n] perl_source_directory";
  10.  
  11. umask 022;
  12.  
  13. @scripts = ('examples/sql');
  14.  
  15. # Read in the config file.
  16.  
  17. open(CONFIG, "${SRC}/config.sh") || die "Can't find Perl's config.sh\n";
  18. while (<CONFIG>) {
  19.     if (s/^(\w+=)/\$$1/) {
  20.     $accum =~ s/'undef'/undef/g;
  21.     eval $accum;
  22.     $accum = '';
  23.     }
  24.     $accum .= $_;
  25. }
  26.  
  27. # Do some quick sanity checks.
  28.  
  29.    $installbin        || die "No installbin directory in config.sh\n";
  30. -d $installbin        || die "$installbin is not a directory\n";
  31. -w $installbin        || die "$installbin is not writable by you\n"
  32.     unless $installbin =~ m#^/afs/#;
  33.  
  34. -x 'oraperl'        || die "oraperl isn't executable!\n";
  35. -f 'coraperl' && ! -x 'coraperl' && die "coraperl isn't executable!\n";
  36.  
  37. # Install oraperl (and coraperl if it exists)
  38.  
  39. &unlink("$installbin/oraperl");
  40. &cmd("cp oraperl $installbin/oraperl");
  41.  
  42. if (-f 'coraperl')
  43. {
  44.     &unlink("$installbin/coraperl");
  45.     &cmd("cp coraperl $installbin/coraperl");
  46. }
  47.  
  48.  
  49. # Install scripts.
  50.  
  51. &makedir($installscr);
  52.  
  53. for (@scripts) {
  54.     &cmd("cp $_ $installscr");
  55.     s#.*/##; &chmod(0755, "$installscr/$_");
  56. }
  57.  
  58.  
  59. # Install man pages.
  60.  
  61. if ($mansrc ne '') {
  62.     &makedir($mansrc);
  63.  
  64.     ($mdev,$mino) = stat($mansrc);
  65.     if ($mdev != $ddev || $mino != $dino) {
  66.     &cmd("cp doc/oraperl.1 $mansrc/oraperl.$manext");
  67.     if (-f 'coraperl')
  68.     {
  69.         &unlink("$mansrc/coraperl.$manext") if (-f 'coraperl');
  70.         &link("$mansrc/oraperl.$manext", "$mansrc/coraperl.$manext");
  71.     }
  72.     &cmd("cp examples/sql $mansrc/sql.$manext");
  73.     }
  74. }
  75.  
  76.  
  77. # Install library files.
  78.  
  79. &makedir($installprivlib);
  80. &cmd("cp oraperl.ph $installprivlib");
  81.  
  82. print STDERR "  Installation complete\n";
  83.  
  84. exit 0;
  85.  
  86. ###############################################################################
  87.  
  88. sub unlink {
  89.     local(@names) = @_;
  90.  
  91.     foreach $name (@names) {
  92.     next unless -e $name;
  93.     print STDERR "  unlink $name\n";
  94.     unlink($name) || warn "Couldn't unlink $name: $!\n" unless $nonono;
  95.     }
  96. }
  97.  
  98. sub cmd {
  99.     local($cmd) = @_;
  100.     print STDERR "  $cmd\n";
  101.     unless ($nonono) {
  102.     system $cmd;
  103.     warn "Command failed!!!\n" if $?;
  104.     }
  105. }
  106.  
  107. sub link {
  108.     local($from,$to) = @_;
  109.  
  110.     print STDERR "  ln $from $to\n";
  111.     link($from,$to) || warn "Couldn't link $from to $to: $!\n" unless $nonono;
  112. }
  113.  
  114. sub chmod {
  115.     local($mode,$name) = @_;
  116.  
  117.     printf STDERR "  chmod %o %s\n", $mode, $name;
  118.     chmod($mode,$name) || warn "Couldn't chmod $mode $name: $!\n"
  119.     unless $nonono;
  120. }
  121.  
  122. sub makedir {
  123.     local($dir) = @_;
  124.     unless (-d $dir) {
  125.     local($shortdir) = $dir;
  126.  
  127.     $shortdir =~ s#(.*)/.*#$1#;
  128.     &makedir($shortdir);
  129.  
  130.     print STDERR "  mkdir $dir\n";
  131.     mkdir($dir, 0777) || warn "Couldn't create $dir: $!\n" unless $nonono;
  132.     }
  133. }
  134.