Diff for /loncom/build/lpml_parse.pl between versions 1.14 and 1.18

version 1.14, 2001/11/05 02:57:21 version 1.18, 2001/11/16 21:10:32
Line 6 Line 6
 # 06/19/2001,06/20,06/24 - Scott Harrison  # 06/19/2001,06/20,06/24 - Scott Harrison
 # 9/5/2001,9/6,9/7,9/8 - Scott Harrison  # 9/5/2001,9/6,9/7,9/8 - Scott Harrison
 # 9/17,9/18 - Scott Harrison  # 9/17,9/18 - Scott Harrison
 # 11/4 - Scott Harrison  # 11/4,11/5,11/6,11/7,11/16 - Scott Harrison
   #
   # $Id$
   ###
   
 ###############################################################################  ###############################################################################
 ##                                                                           ##  ##                                                                           ##
Line 85  $targetroot=~s/\/$//; Line 88  $targetroot=~s/\/$//;
   
 my $invocation;  my $invocation;
 # --------------------------------------------------- Record program invocation  # --------------------------------------------------- Record program invocation
 if ($mode eq 'install') {  if ($mode eq 'install' or $mode eq 'configinstall' or $mode eq 'build') {
     $invocation=(<<END);      $invocation=(<<END);
 # Invocation: STDINPUT | lpml_parse.pl  # Invocation: STDINPUT | lpml_parse.pl
 #             1st argument (mode) is: $mode  #             1st argument (mode) is: $mode
Line 340  sub format_lpml { Line 343  sub format_lpml {
  print "\n".$invocation;   print "\n".$invocation;
  $lpml .= "SHELL=\"/bin/bash\"\n\n";   $lpml .= "SHELL=\"/bin/bash\"\n\n";
     }      }
       elsif ($mode eq 'configinstall') {
    print '# LPML configuration file targets (configinstall).'."\n";
    print '# Linux Packaging Markup Language,';
    print ' by Scott Harrison 2001'."\n";
    print '# This file was automatically generated on '.`date`;
    print "\n".$invocation;
    $lpml .= "SHELL=\"/bin/bash\"\n\n";
       }
     elsif ($mode eq 'build') {      elsif ($mode eq 'build') {
  $lpml = "# LPML build targets. Linux Packaging Markup Language,";   $lpml = "# LPML build targets. Linux Packaging Markup Language,";
  $lpml .= ' by Scott Harrison 2001'."\n";   $lpml .= ' by Scott Harrison 2001'."\n";
  $lpml .= '# This file was automatically generated on '.`date`;   $lpml .= '# This file was automatically generated on '.`date`;
  $lpml .= "\n";   $lpml .= "\n".$invocation;
  $lpml .= "SHELL=\"/bin/sh\"\n\n";   $lpml .= "SHELL=\"/bin/sh\"\n\n";
     }      }
     else {      else {
Line 359  sub format_targetroot { Line 370  sub format_targetroot {
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $targetroot="\n<br />TARGETROOT: $text";   return $targetroot="\n<br />TARGETROOT: $text";
     }      }
     elsif ($mode eq 'install') {      elsif ($mode eq 'install' or $mode eq 'build' or
  return '# TARGET INSTALL LOCATION is "'.$targetroot."\"\n";     $mode eq 'configinstall') {
     }  
     elsif ($mode eq 'build') {  
  return '# TARGET INSTALL LOCATION is "'.$targetroot."\"\n";   return '# TARGET INSTALL LOCATION is "'.$targetroot."\"\n";
     }      }
     else {      else {
Line 377  sub format_sourceroot { Line 386  sub format_sourceroot {
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $sourceroot="\n<br />SOURCEROOT: $text";   return $sourceroot="\n<br />SOURCEROOT: $text";
     }      }
     elsif ($mode eq 'install') {      elsif ($mode eq 'install' or $mode eq 'build' or
  return '# SOURCE CODE LOCATION IS "'.$sourceroot."\"\n";;     $mode eq 'configinstall') {
     }  
     elsif ($mode eq 'build') {  
  return '# SOURCE CODE LOCATION IS "'.$sourceroot."\"\n";;   return '# SOURCE CODE LOCATION IS "'.$sourceroot."\"\n";;
     }      }
     else {      else {
Line 696  sub format_files { Line 703  sub format_files {
  if ($olddep) {   if ($olddep) {
     $depstring2.="\t\tECODE=0;\\\n";      $depstring2.="\t\tECODE=0;\\\n";
     $depstring2.="\t\t! test -e $source && test -r $command/$olddep &&".      $depstring2.="\t\t! test -e $source && test -r $command/$olddep &&".
  " { perl filecompare.pl -B $command/$olddep $target ||  ECODE=\$\$?; } && { [ \$\$ECODE != \"2\" ] || echo \"**** WARNING **** dependency $command/$olddep is newer than target file $target; SOMETHING MAY BE WRONG\"; };\\\n";   " { perl filecompare.pl -b2 $command/$olddep $target ||  ECODE=\$\$?; } && { [ \$\$ECODE != \"2\" ] || echo \"**** WARNING **** dependency $command/$olddep is newer than target file $target; SOMETHING MAY BE WRONG\"; };\\\n";
  }   }
  $olddep=$dep;   $olddep=$dep;
     }      }
Line 764  sub format_file { Line 771  sub format_file {
     $depstring.=<<END;      $depstring.=<<END;
  ECODE=0; DEP=''; \\   ECODE=0; DEP=''; \\
  test -e $command/$dep || (echo '**** WARNING **** cannot evaluate status of dependency $command/$dep (for building ${sourceroot}/${source} with)'); DEP="1"; \\   test -e $command/$dep || (echo '**** WARNING **** cannot evaluate status of dependency $command/$dep (for building ${sourceroot}/${source} with)'); DEP="1"; \\
  [ -n DEP ] && { perl filecompare.pl -B $command/$dep ${targetroot}/${target} || ECODE=\$\$?; } || DEP="1"; \\   [ -n DEP ] && { perl filecompare.pl -b2 $command/$dep ${targetroot}/${target} || ECODE=\$\$?; } || DEP="1"; \\
  case "\$\$ECODE" in \\   case "\$\$ECODE" in \\
  2) echo "**** WARNING **** dependency $command/$dep is newer than target file ${targetroot}/${target}; you may want to run make build";; \\   2) echo "**** WARNING **** dependency $command/$dep is newer than target file ${targetroot}/${target}; you may want to run make build";; \\
  esac; \\   esac; \\
Line 783  END Line 790  END
  fi   fi
 END  END
     }      }
             my $bflag='-b';              my $bflag='-b1';
             $bflag='-g' if $dependencies or $buildlink;              $bflag='-b3' if $dependencies or $buildlink;
     return <<END;      return <<END;
 $buildtest \@if !(test -e "${sourceroot}/${source}"); then \\  $buildtest \@if !(test -e "${sourceroot}/${source}"); then \\
  echo "**** WARNING **** CVS source file does not exist: ${sourceroot}/${source}"; \\   echo "**** WARNING **** CVS source file does not exist: ${sourceroot}/${source}"; \\
Line 812  END Line 819  END
  elsif ($mode eq 'configinstall' && $categoryname eq 'conf') {   elsif ($mode eq 'configinstall' && $categoryname eq 'conf') {
     push @configall,$targetroot.'/'.$target;      push @configall,$targetroot.'/'.$target;
     return $targetroot.'/'.$target.': alwaysrun'."\n".      return $targetroot.'/'.$target.': alwaysrun'."\n".
  "\t".'@echo -n ""; ECODE=0 && { perl filecompare.pl -G '.$sourceroot.'/'.$source.' '.$targetroot.'/'.$target.' || ECODE=$$?; } && { [ $$ECODE != "2" ] || (install '.$categoryhash{$categoryname}.' '.   "\t".'@echo -n ""; ECODE=0 && { perl filecompare.pl -b4 '.$sourceroot.'/'.$source.' '.$targetroot.'/'.$target.' || ECODE=$$?; } && { [ $$ECODE != "2" ] || (install '.$categoryhash{$categoryname}.' '.
  $sourceroot.'/'.$source.' '.   $sourceroot.'/'.$source.' '.
  $targetroot.'/'.$target.'.lpmlnewconf'.   $targetroot.'/'.$target.'.lpmlnewconf'.
  ' && echo "*** CONFIGURATION FILE CHANGE ***" && echo "'.   ' && echo "*** CONFIGURATION FILE CHANGE ***" && echo "'.
  'You likely need to compare contents of '.   'You likely need to compare contents of '.
  ''.$targetroot.'/'.$target.' with the new '.   ''.$targetroot.'/'.$target.' with the new '.
                 ''.$targetroot.'/'.$target.'.lpmlnewconf"'.                  ''.$targetroot.'/'.$target.'.lpmlnewconf"'.
  ";) };\n\n";   "); };\n\n";
  }   }
  elsif ($mode eq 'build' && $build) {   elsif ($mode eq 'build' && $build) {
     push @buildall,$sourceroot.'/'.$source;      push @buildall,$sourceroot.'/'.$source;
Line 1024  sub trim { Line 1031  sub trim {
 }   } 
   
 # ----------------------------------- POD (plain old documentation, CPAN style)  # ----------------------------------- POD (plain old documentation, CPAN style)
   
   =head1 NAME
   
   lpml_parse.pl - This is meant to parse files meeting the lpml document type.
   See lpml.dtd.  LPML=Linux Packaging Markup Language.
   
   =head1 SYNOPSIS
   
   Usage is for lpml file to come in through standard input.
   
   =over 4
   
   =item *
   
   1st argument is the mode of parsing.
   
   =item * 
   
   2nd argument is the category permissions to use (runtime or development)
   
   =item *
   
   3rd argument is the distribution
   (default,redhat6.2,debian2.2,redhat7.1,etc).
   
   =item *
   
   4th argument is to manually specify a sourceroot.
   
   =item *
   
   5th argument is to manually specify a targetroot.
   
   =back
   
   Only the 1st argument is mandatory for the program to run.
   
   Example:
   
   cat ../../doc/loncapafiles.lpml |\\
   perl lpml_parse.pl html default /home/sherbert/loncapa /tmp/install
   
   =head1 DESCRIPTION
   
   I am using a multiple pass-through approach to parsing
   the lpml file.  This saves memory and makes sure the server
   will never be overloaded.
   
   =head1 README
   
   I am using a multiple pass-through approach to parsing
   the lpml file.  This saves memory and makes sure the server
   will never be overloaded.
   
   =head1 PREREQUISITES
   
   HTML::TokeParser
   
   =head1 COREQUISITES
   
   =head1 OSNAMES
   
   linux
   
   =head1 SCRIPT CATEGORIES
   
   Packaging/Administrative
   
   =cut

Removed from v.1.14  
changed lines
  Added in v.1.18


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>