home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / hypertext / latex2html_1 / OtherStuff / install-te < prev    next >
Text File  |  1996-01-12  |  7KB  |  214 lines

  1. #!/usr/local/bin/perl
  2.  
  3. # LaTeX2HTML Version 95 : install_test
  4.  
  5. # This perl script substitutes the variable $LATEX2HTMLDIR in the main
  6. # latex2html script with the actual path to the latex2html distribution 
  7. # files. It then tests for the availability of the external support programs.
  8.  
  9. # To do the installation manually:
  10. # (1) Edit the file latex2html.config to set the correct pathnames where 
  11. #     necessary
  12. # (2) Put the path to the latex2html source files in the variable 
  13. #     $LATEX2HTMLDIR in the main latex2html script 
  14. #     OR
  15. #     set an environment variable LATEX2HTMLDIR to point to the latex2html 
  16. #     source files.
  17.  
  18. # Read latex2html.config to get the value of $LATEX2HTML
  19. &read_config_file;
  20.  
  21. # Substitute the variable $LATEX2HTMLDIR
  22. print "\nMain script installation was " . (&substitute_dir_variable ? "" : "not ") .
  23.     "successful.\n\n";
  24.  
  25. print "Testing availability of external programs...\n\n";
  26. &test_external_programs;
  27.  
  28. sub read_config_file {
  29.     &deal_with_forward_references;
  30.     require("latex2html.config") if
  31.     ((-f "latex2html.config") ||
  32.      die "Could not find file latex2html.config\n");
  33. }
  34.  
  35. # Changes lines of the form:
  36. # $LATEX2HTMLDIR = <SOMETHING> 
  37. # to
  38. # $LATEX2HTMLDIR = <current value of $LATEX2HTMLDIR> 
  39. sub substitute_dir_variable {
  40.     local($SUCCESS) = 0;
  41.     if ( (-f "$LATEX2HTMLDIR/latex2html") ||
  42.     die "\nCannot find $LATEX2HTMLDIR/latex2html\nPlease check the value of \$LATEX2HTMLDIR in latex2html.config\n") {
  43.     open(IN, "<$LATEX2HTMLDIR/latex2html")
  44.         || die "Cannot open $LATEX2HTMLDIR/latex2html";
  45.     rename("$LATEX2HTMLDIR/latex2html","$LATEX2HTMLDIR/latex2html.bak");
  46.     open(OUT, ">$LATEX2HTMLDIR/latex2html")
  47.         || die "Cannot open $LATEX2HTMLDIR/latex2html";
  48.     chmod 0755, "$LATEX2HTMLDIR/latex2html";
  49.     while (<IN>) {
  50.         s/\$LATEX2HTMLDIR\s*=.*$/
  51.         do {$SUCCESS = 1;
  52.             "\$LATEX2HTMLDIR='$LATEX2HTMLDIR';" .
  53.             "# Inserted by installation script"}/eo;
  54.         print OUT;
  55.     }
  56.     close IN;
  57.     close OUT;
  58.     }
  59.     $SUCCESS && (! &look_for("$LATEX2HTMLDIR/latex2html","exec",
  60.                  "LaTeX2HTML program in $LATEX2HTMLDIR"));
  61. }
  62.  
  63. sub deal_with_forward_references {
  64.     foreach ("ignore_commands", "process_commands_in_tex") {
  65.     eval "sub $_ {}"}
  66. }
  67.  
  68. sub test_external_programs {
  69.     local ($nolatex2html, $version, $revision, $nopic, $nojust, $tmp) = (0,0);
  70.     # Perl
  71.     $_ = `perl -v`;
  72.     s/Version\s*([\d\.]+)/$version = $1;/eio;
  73.     s/Revision:\s*([\d\.]+)/$revision = $1;/eio;
  74.     s/Patch level:\s*(\d+)/$patch = $1;/eio;
  75.     if ( ($patch && ($patch < 36) ) && (! ($version >= 5))) {
  76.     print "\n*** ERROR: You are using Perl $revision at Patch level $patch.\n".
  77.         "\nThis may cause problems." .
  78.         "Please upgrade to version 4 at patch level 36\n\n";}
  79.     elsif ((! $patch)  && (! ($version >= 5))) {
  80.     print "Warning: Please make sure your Perl is at least version 4 at patch level 36.".
  81.         "\nI was unable to verify this.\n\n";}
  82.     elsif ($patch) {
  83.     print "Perl version $revision at patch level $patch is OK.\n\n"}
  84.     elsif ($version) {
  85.        print "Perl version $version is OK. \n\n"}
  86.  
  87.     print "\n*** ERROR: Will not be able to run latex2html: ".
  88.     "Cannot find texexpand.\n\n"
  89.         if ($nolatex2html = &look_for($TEXEXPAND, "exec", "texexpand"));
  90.  
  91.     print "Checking for availability of DBM or NDBM (Unix DataBase Management)...\n";
  92.     print "*** ERROR: $@ \nYou will not be able to use latex2html.\n\n"
  93.     if  (eval 'dbmopen(%array, "DBM.tst",0755)' && $@);
  94.     # If there was no error, but we *cannot* write to DBM
  95.     if ((! $@) && eval "\$array{'abc'}=123" && $@) {
  96.     print "*** ERROR: $@ \nYou will not be able to use latex2html.\n\n"}
  97.     else {
  98.     dbmclose(%array);
  99.     unlink ('DBM.tst.dir', 'DBM.tst.pag');
  100.     print "DBM was found.\n\n";
  101.     }
  102.     
  103.     $_ = &get_first_line_of_stderr("$DVIPS -f DUMMY");
  104.     s/dvipsk?\s*([\d\.]+)/$version = $1;/eo;
  105.     $patch = $version;
  106.     if ($patch && ($patch < 5.516)) {
  107.     $nopic = 1;
  108.     print "\n*** Warning: You are using DVIPS $version.".
  109.         "\nThis may cause problems when generating inlined images" .
  110.             "\nif your DVIPS does not support the command line options".
  111.             "\n-S, -i and -o".
  112.             "\nSee the manual for more details.\n\n";}
  113.     elsif (! $patch) {
  114.     print "Warning: Please make sure that your version of DVIPS".
  115.               "\nsupports the command line options -S, -i and -o.".
  116.           "\nI was unable to verify this.\n\n";}
  117.     else {
  118.     print "DVIPS version $version is OK.\n\n"}
  119.    
  120.     $nopic = &look_for($PSTOGIF,"util", "pstogif");
  121.     foreach ($LATEX, $ENV{'GS'},$ENV{'PSTOPPM'},
  122.          $ENV{'PNMCROP'}, $ENV{'PPMTOGIF'}) {
  123.     $tmp = &look_for($_, "util", $_);
  124.     $nopic = $tmp unless $nopic;
  125.     }
  126.     
  127.     print "Warning: May not be able to convert equations, figures, tables ".
  128.     "\nand unknown environments to inlined images.\n\n" if $nopic;
  129.  
  130.     $gs = $ENV{'GS'};
  131.     $_ = `$gs -v`;
  132.     $version = 0;
  133.     s/version\s*([\d\.]+)/$version = $1;/eio;
  134.     if ($version ge 3.0) {
  135.     print "You are using GS version $version\n".
  136.         "Updating pstoppm.ps in latex2html.config...\n";
  137.     print `perl -pi.bak -e "s/pstoppm.ps/pstoppm3.ps/;" latex2html.config`;
  138.     print "Done.\n\n";
  139.     }
  140.  
  141.     print "Warning: Could not find 'giftrans'. Equations and other inlined images ".
  142.     "\nwill have ugly white backgrounds.\n\n"
  143.         if ((! $USENETPBM)  &&
  144.         ($not_found = &look_for($GIFTRANS, "util", "Giftrans")));
  145.  
  146.     do {$_ = &get_first_line_of_stderr("$GIFTRANS")} if (-x $GIFTRANS);
  147.     print "Warning: Cannot find GIFTRANS or GIFTRANS does not accept the -t option."
  148.     if ((! $USENETPBM) && (! $not_found) && (! /-t/));
  149.     
  150.     foreach ($GIFTOPPM, $PNMFILE, $PNMTILE, $PNMCAT) {
  151.     $tmp = &look_for($_, "util", $_);
  152.     $nojust = $tmp unless $nojust;
  153.     }
  154.     
  155.     print "Warning: Will not be able to right justify equations.\n\n" if $nojust;
  156.     print "Warning: Please check the relevant pathnames in latex2html.config.\n\n"
  157.     if ($nojust || $nopic || $nolatex2html);
  158.  
  159.     print "Warning: Will not be able to deal with some style files.\n\n"
  160.     if &look_for($LATEX2HTMLSTYLES, "dir", "Styles directory");
  161. }
  162.  
  163. sub look_for {
  164.     local($what,$type, $name) = @_;
  165.     local($fail,$_);
  166.     if (($type eq "exec") && (! -x $what)) {
  167.     print "Making $what executable...\n\n";
  168.     chmod 0755, $what;
  169.     if (! -x $what) {
  170.         $fail = "Error: Could not make $what executable.\n\n";
  171.     }
  172.     }
  173.     elsif (($type eq "util") && (! -f $what)) {
  174.     print "Looking for $name...\n";
  175.     $_ = `sh -c "type  $what"`;
  176.     chop;
  177.     if ((/no /) || (/not found/) || (/^\s*$/)) {
  178.         $fail = "Warning: $name was * NOT * found.\n\n";}
  179.     else {
  180.         $what = $_;}
  181.     }
  182.     elsif (($type eq "dir") && (! -d $what)) {
  183.     $fail = "Error: directory $name was * NOT * found.\n\n";
  184.     }
  185.     ($fail ? print $fail : print "$name was found.\n\n");
  186.     $fail;
  187. }    
  188.     
  189. # Page 164 of the Camel book.     
  190. sub get_first_line_of_stderr {
  191.     local($prog) = @_[0];
  192.     open(SO, ">&STDOUT");
  193.     open(SE, ">&STDERR");
  194.  
  195.     open(STDOUT, ">/tmp/foo$$");
  196.     open(STDERR,">&STDOUT");
  197.  
  198.     select(STDERR); $| = 1;
  199.     select(STDOUT); $| = 1;
  200.  
  201.     `$prog`;
  202.  
  203.     close(STDOUT);
  204.     close(STDERR);
  205.  
  206.     open(STDOUT, ">&SO");
  207.     open(STDERR, ">&SE");
  208.  
  209.     open(FOO,"</tmp/foo$$");
  210.     $_ = <FOO> ;
  211.     close(FOO);
  212.     $_;
  213. }
  214.