Diff for /loncom/build/lpml_parse.pl between versions 1.20 and 1.27

version 1.20, 2001/11/17 21:30:28 version 1.27, 2001/12/06 00:22:53
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,11/5,11/6,11/7,11/16 - Scott Harrison  # 11/4,11/5,11/6,11/7,11/16,11/17 - Scott Harrison
 #  # 12/2,12/3,12/4,12/5 - Scott Harrison
 # $Id$  # $Id$
 ###  ###
   
Line 49  Only the 1st argument is mandatory for t Line 49  Only the 1st argument is mandatory for t
 Example:  Example:
   
 cat ../../doc/loncapafiles.lpml |\\  cat ../../doc/loncapafiles.lpml |\\
 perl lpml_parse.pl html default /home/sherbert/loncapa /tmp/install  perl lpml_parse.pl html development default /home/sherbert/loncapa /tmp/install
 END  END
   
 # ------------------------------------------------- Grab command line arguments  # ------------------------------------------------- Grab command line arguments
Line 77  if (@ARGV) { Line 77  if (@ARGV) {
   
 my $targetroot;  my $targetroot;
 my $sourceroot;  my $sourceroot;
   my $targetrootarg;
   my $sourcerootarg;
 if (@ARGV) {  if (@ARGV) {
     $sourceroot = shift @ARGV;      $sourceroot = shift @ARGV;
 }  }
Line 85  if (@ARGV) { Line 87  if (@ARGV) {
 }  }
 $sourceroot=~s/\/$//;  $sourceroot=~s/\/$//;
 $targetroot=~s/\/$//;  $targetroot=~s/\/$//;
   $sourcerootarg=$sourceroot;
   $targetrootarg=$targetroot;
   
 my $logcmd='| tee -a WARNINGS';  my $logcmd='| tee -a WARNINGS';
   
Line 198  my $category_att_name; Line 202  my $category_att_name;
 my $category_att_type;  my $category_att_type;
 my $chown;  my $chown;
 my $chmod;  my $chmod;
   my $abbreviation; # space-free abbreviation; esp. for image names
 my $rpm;  my $rpm;
 my $rpmSummary;  my $rpmSummary;
 my $rpmName;  my $rpmName;
Line 237  my $dependencies; Line 242  my $dependencies;
 my $dependency;  my $dependency;
 my @links;  my @links;
 my %categoryhash;  my %categoryhash;
   my $dpathlength;
   my %fab; # file category abbreviation
   
 my @buildall;  my @buildall;
 my @buildinfo;  my @buildinfo;
Line 250  $parser = HTML::TokeParser->new(\$cleans Line 257  $parser = HTML::TokeParser->new(\$cleans
 $parser->xml_mode('1');  $parser->xml_mode('1');
   
 # Define handling methods for mode-dependent text rendering  # Define handling methods for mode-dependent text rendering
   
 $parser->{textify}={  $parser->{textify}={
     targetroot => \&format_targetroot,      targetroot => \&format_targetroot,
     sourceroot => \&format_sourceroot,      sourceroot => \&format_sourceroot,
     categories => \&format_categories,      categories => \&format_categories,
     category => \&format_category,      category => \&format_category,
       abbreviation => \&format_abbreviation,
     targetdir => \&format_targetdir,      targetdir => \&format_targetdir,
     chown => \&format_chown,      chown => \&format_chown,
     chmod => \&format_chmod,      chmod => \&format_chmod,
Line 317  exit; Line 326  exit;
 # ------------------------ Final output at end of markup parsing and formatting  # ------------------------ Final output at end of markup parsing and formatting
 sub end {  sub end {
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return "<br />THE END\n";   return "</body></html>\n";
     }      }
     if ($mode eq 'install') {      if ($mode eq 'install') {
  return '';   return '';
Line 336  sub format_lpml { Line 345  sub format_lpml {
     my (@tokeninfo)=@_;      my (@tokeninfo)=@_;
     my $date=`date`; chop $date;      my $date=`date`; chop $date;
     if ($mode eq 'html') {      if ($mode eq 'html') {
  $lpml = "<br />LPML BEGINNING: $date";   $lpml=<<END;
   <html>
   <head>
   <title>LPML Description Page
   (dist=$dist, categorytype=$categorytype, $date)</title>
   </head>
   <body>
   END
    $lpml .= "<br /><font size='+2'>LPML Description Page (dist=$dist, ".
       "categorytype=$categorytype, $date)".
       "</font>";
    $lpml .=<<END;
   <ul>
   <li><a href='#about'>About this file</a></li>
   <li><a href='#ownperms'>File Type Ownership and Permissions
   Descriptions</a></li>
   <li><a href='#package'>Software Package Description</a></li>
   <li><a href='#directories'>Directory Structure</a></li>
   <li><a href='#files'>Files</a></li>
   </ul>
   END
           $lpml .=<<END;
   <br />&nbsp;<br /><a name='about' />
   <font size='+2'>About this file</font>
   <p>
   This file is generated dynamically by <tt>lpml_parse.pl</tt> as
   part of a development compilation process.  Author: Scott
   Harrison (harris41\@msu.edu).
   </p>
   END
       }
       elsif ($mode eq 'text') {
    $lpml = "LPML Description Page (dist=$dist, $date)";
    $lpml .=<<END;
   
   * About this file
   * Software Package Description
   * Directory Structure
   * File Type Ownership and Permissions
   * Files
   END
           $lpml .=<<END;
   
   About this file
   
   This file is generated dynamically by lpml_parse.pl as
   part of a development compilation process.  Author: Scott
   Harrison (harris41\@msu.edu).
   
   END
     }      }
     elsif ($mode eq 'install') {      elsif ($mode eq 'install') {
  print '# LPML install targets. Linux Packaging Markup Language,';   print '# LPML install targets. Linux Packaging Markup Language,';
Line 401  sub format_categories { Line 459  sub format_categories {
     my $text=&trim($parser->get_text('/categories'));      my $text=&trim($parser->get_text('/categories'));
     $parser->get_tag('/categories');      $parser->get_tag('/categories');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $categories="\n<br />BEGIN CATEGORIES\n$text\n".   return $categories="\n<br />&nbsp;<br />".
     "<br />END CATEGORIES\n";      "\n<a name='ownperms'>".
       "\n<font size='+2'>File Type Ownership and Permissions".
       " Descriptions</font>".
       "\n<p>This table shows what permissions and ownership settings ".
       "correspond to each category.</p>".
       "\n<table border='1' cellpadding='5' width='60%'>\n".
       "<tr>".
       "<th align='left' bgcolor='#ffffff'>Icon</th>".
       "<th align='left' bgcolor='#ffffff'>Category Name</th>".
       "<th align='left' bgcolor='#ffffff'>Permissions ".
       "($categorytype)</th>".
       "</tr>".
       "\n$text\n".
       "</table>\n";
       }
       elsif ($mode eq 'text') {
    return $categories="\n".
       "\nFile Type Ownership and Permissions".
       " Descriptions".
       "\n$text".
       "\n";
     }      }
     else {      else {
  return '';   return '';
Line 413  sub format_category { Line 491  sub format_category {
     my (@tokeninfo)=@_;      my (@tokeninfo)=@_;
     $category_att_name=$tokeninfo[2]->{'name'};      $category_att_name=$tokeninfo[2]->{'name'};
     $category_att_type=$tokeninfo[2]->{'type'};      $category_att_type=$tokeninfo[2]->{'type'};
     $chmod='';$chown='';      $abbreviation=''; $chmod='';$chown='';
     $parser->get_text('/category');      $parser->get_text('/category');
     $parser->get_tag('/category');      $parser->get_tag('/category');
       $fab{$category_att_name}=$abbreviation;
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $category="\n<br />CATEGORY $category_att_name ".   if ($category_att_type eq $categorytype) {
     "$category_att_type $chmod $chown";      $categoryhash{$category_att_name}="$chmod $chown";
       return $category="<tr>".
    "<td><img src='$abbreviation.gif' ".
              "alt='${category_att_name}' /></td>\n".
    "<td>${category_att_name}</td>\n".
    "<td>$chmod $chown</td>\n".
    "</tr>".
    "\n";
   # return $category="\n<br />CATEGORY $category_att_name ".
   #    "$category_att_type $chmod $chown";
    }
     }      }
     else {      else {
  if ($category_att_type eq $categorytype) {   if ($category_att_type eq $categorytype) {
Line 429  sub format_category { Line 518  sub format_category {
  return '';   return '';
     }      }
 }  }
   # --------------------------------------------------- Format categories section
   sub format_abbreviation {
       my @tokeninfo=@_;
       $abbreviation='';
       my $text=&trim($parser->get_text('/abbreviation'));
       if ($text) {
    $parser->get_tag('/abbreviation');
    $abbreviation=$text;
       }
       return '';
   }
 # -------------------------------------------------------- Format chown section  # -------------------------------------------------------- Format chown section
 sub format_chown {  sub format_chown {
     my @tokeninfo=@_;      my @tokeninfo=@_;
Line 456  sub format_rpm { Line 556  sub format_rpm {
     my $text=&trim($parser->get_text('/rpm'));      my $text=&trim($parser->get_text('/rpm'));
     $parser->get_tag('/rpm');      $parser->get_tag('/rpm');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpm="\n<br />BEGIN RPM\n$text\n<br />END RPM";   return $rpm=<<END;
   <br />&nbsp;<br />
   <a name='package' />
   <font size='+2'>Software Package Description</font>
   <p>
   <table bgcolor='#ffffff' border='0' cellpadding='10' cellspacing='0'>
   <tr><td><pre>
   $text
   </pre></td></tr>
   </table>
   END
       }
       elsif ($mode eq 'text') {
    return $rpm=<<END;
   Software Package Description
   
   $text
   END
     }      }
     else {      else {
  return '';   return '';
Line 467  sub format_rpmSummary { Line 584  sub format_rpmSummary {
     my $text=&trim($parser->get_text('/rpmSummary'));      my $text=&trim($parser->get_text('/rpmSummary'));
     $parser->get_tag('/rpmSummary');      $parser->get_tag('/rpmSummary');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmSummary="\n<br />RPMSUMMARY $text";   return $rpmSummary="\nSummary     : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmSummary="\nSummary     : $text";
     }      }
     else {      else {
  return '';   return '';
Line 478  sub format_rpmName { Line 598  sub format_rpmName {
     my $text=&trim($parser->get_text('/rpmName'));      my $text=&trim($parser->get_text('/rpmName'));
     $parser->get_tag('/rpmName');      $parser->get_tag('/rpmName');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmName="\n<br />RPMNAME $text";   return $rpmName="\nName        : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmName="\nName        : $text";
     }      }
     else {      else {
  return '';   return '';
Line 489  sub format_rpmVersion { Line 612  sub format_rpmVersion {
     my $text=$parser->get_text('/rpmVersion');      my $text=$parser->get_text('/rpmVersion');
     $parser->get_tag('/rpmVersion');      $parser->get_tag('/rpmVersion');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmVersion="\n<br />RPMVERSION $text";   return $rpmVersion="\nVersion     : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmVersion="\nVersion     : $text";
     }      }
     else {      else {
  return '';   return '';
Line 500  sub format_rpmRelease { Line 626  sub format_rpmRelease {
     my $text=$parser->get_text('/rpmRelease');      my $text=$parser->get_text('/rpmRelease');
     $parser->get_tag('/rpmRelease');      $parser->get_tag('/rpmRelease');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmRelease="\n<br />RPMRELEASE $text";   return $rpmRelease="\nRelease     : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmRelease="\nRelease     : $text";
     }      }
     else {      else {
  return '';   return '';
Line 511  sub format_rpmVendor { Line 640  sub format_rpmVendor {
     my $text=$parser->get_text('/rpmVendor');      my $text=$parser->get_text('/rpmVendor');
     $parser->get_tag('/rpmVendor');      $parser->get_tag('/rpmVendor');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmVendor="\n<br />RPMVENDOR $text";   return $rpmVendor="\nVendor      : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmVendor="\nVendor      : $text";
     }      }
     else {      else {
  return '';   return '';
Line 522  sub format_rpmBuildRoot { Line 654  sub format_rpmBuildRoot {
     my $text=$parser->get_text('/rpmBuildRoot');      my $text=$parser->get_text('/rpmBuildRoot');
     $parser->get_tag('/rpmBuildRoot');      $parser->get_tag('/rpmBuildRoot');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmBuildRoot="\n<br />RPMBUILDROOT $text";   return $rpmBuildRoot="\nBuild Root  : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmBuildRoot="\nBuild Root  : $text";
     }      }
     else {      else {
  return '';   return '';
Line 533  sub format_rpmCopyright { Line 668  sub format_rpmCopyright {
     my $text=$parser->get_text('/rpmCopyright');      my $text=$parser->get_text('/rpmCopyright');
     $parser->get_tag('/rpmCopyright');      $parser->get_tag('/rpmCopyright');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmCopyright="\n<br />RPMCOPYRIGHT $text";   return $rpmCopyright="\nLicense     : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmCopyright="\nLicense     : $text";
     }      }
     else {      else {
  return '';   return '';
Line 544  sub format_rpmGroup { Line 682  sub format_rpmGroup {
     my $text=$parser->get_text('/rpmGroup');      my $text=$parser->get_text('/rpmGroup');
     $parser->get_tag('/rpmGroup');      $parser->get_tag('/rpmGroup');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmGroup="\n<br />RPMGROUP $text";   return $rpmGroup="\nGroup       : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmGroup="\nGroup       : $text";
     }      }
     else {      else {
  return '';   return '';
Line 555  sub format_rpmSource { Line 696  sub format_rpmSource {
     my $text=$parser->get_text('/rpmSource');      my $text=$parser->get_text('/rpmSource');
     $parser->get_tag('/rpmSource');      $parser->get_tag('/rpmSource');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmSource="\n<br />RPMSOURCE $text";   return $rpmSource="\nSource      : $text";
       }
       elsif ($mode eq 'text') {
    return $rpmSource="\nSource      : $text";
     }      }
     else {      else {
  return '';   return '';
Line 566  sub format_rpmAutoReqProv { Line 710  sub format_rpmAutoReqProv {
     my $text=$parser->get_text('/rpmAutoReqProv');      my $text=$parser->get_text('/rpmAutoReqProv');
     $parser->get_tag('/rpmAutoReqProv');      $parser->get_tag('/rpmAutoReqProv');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmAutoReqProv="\n<br />RPMAUTOREQPROV $text";   return $rpmAutoReqProv="\nAutoReqProv : $text";
       }
       if ($mode eq 'text') {
    return $rpmAutoReqProv="\nAutoReqProv : $text";
     }      }
     else {      else {
  return '';   return '';
Line 577  sub format_rpmdescription { Line 724  sub format_rpmdescription {
     my $text=$parser->get_text('/rpmdescription');      my $text=$parser->get_text('/rpmdescription');
     $parser->get_tag('/rpmdescription');      $parser->get_tag('/rpmdescription');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmdescription="\n<br />RPMDESCRIPTION $text";   $text=~s/\n//g;
    $text=~s/\\n/\n/g;
    return $rpmdescription="\nDescription : $text";
       }
       elsif ($mode eq 'text') {
    $text=~s/\n//g;
    $text=~s/\\n/\n/g;
    return $rpmdescription="\nDescription : $text";
     }      }
     else {      else {
  return '';   return '';
Line 588  sub format_rpmpre { Line 742  sub format_rpmpre {
     my $text=$parser->get_text('/rpmpre');      my $text=$parser->get_text('/rpmpre');
     $parser->get_tag('/rpmpre');      $parser->get_tag('/rpmpre');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $rpmpre="\n<br />RPMPRE $text";  # return $rpmpre="\n<br />RPMPRE $text";
    return '';
     }      }
     else {      else {
  return '';   return '';
Line 599  sub format_directories { Line 754  sub format_directories {
     my $text=$parser->get_text('/directories');      my $text=$parser->get_text('/directories');
     $parser->get_tag('/directories');      $parser->get_tag('/directories');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $directories="\n<br />BEGIN DIRECTORIES\n$text\n<br />".   $text=~s/\[\{\{\{\{\{DPATHLENGTH\}\}\}\}\}\]/$dpathlength/g;
     "END DIRECTORIES\n";   return $directories="\n<br />&nbsp;<br />".
       "<a name='directories' />".
       "<font size='+2'>Directory Structure</font>".
       "\n<br />&nbsp;<br />".
       "<table border='1' cellpadding='3' cellspacing='0'>\n".
       "<tr><th bgcolor='#ffffff'>Category</th>".
       "<th bgcolor='#ffffff'>Status</th>\n".
       "<th bgcolor='#ffffff'>Expected Permissions & Ownership</th>\n".
       "<th bgcolor='#ffffff' colspan='$dpathlength'>Target Directory ".
       "Path</th></tr>\n".
        "\n$text\n</table><br />"."\n";
       }
       elsif ($mode eq 'text') {
    return $directories="\nDirectory Structure\n$text\n".
       "\n";
     }      }
     elsif ($mode eq 'install') {      elsif ($mode eq 'install') {
  return "\n".'directories:'."\n".$text;   return "\n".'directories:'."\n".$text;
Line 616  sub format_directory { Line 785  sub format_directory {
     $parser->get_text('/directory');      $parser->get_text('/directory');
     $parser->get_tag('/directory');      $parser->get_tag('/directory');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $directory="\n<br />DIRECTORY $targetdir $categoryname ".   my @a;
    @a=($targetdir=~/\//g);
    my $d=scalar(@a)+1;
    $dpathlength=$d if $d>$dpathlength;
    my $thtml=$targetdir;
    $thtml=~s/\//\<\/td\>\<td bgcolor='#ffffff'\>/g;
    return $directory="\n<tr><td rowspan='2' bgcolor='#ffffff'>".
       "$categoryname</td>".
       "<td rowspan='2' bgcolor='#ffffff'><!-- POSTEVAL: -->&nbsp;</td>".
       "<td rowspan='2' bgcolor='#ffffff'>$chmod<br />$chown</td>".
       "<td bgcolor='#ffffff'>$thtml</td></tr>".
       "<tr><td bgcolor='#ffffff' colspan='[{{{{{DPATHLENGTH}}}}}]'>".
       "$description</td></tr>";
       }
       if ($mode eq 'text') {
    return $directory="\nDIRECTORY $targetdir $categoryname ".
     "$description";      "$description";
     }      }
     elsif ($mode eq 'install') {      elsif ($mode eq 'install') {
Line 665  sub format_files { Line 849  sub format_files {
     my $text=$parser->get_text('/files');      my $text=$parser->get_text('/files');
     $parser->get_tag('/files');      $parser->get_tag('/files');
     if ($mode eq 'html') {      if ($mode eq 'html') {
  return $directories="\n<br />BEGIN FILES\n$text\n<br />END FILES\n";   return $directories="\n<br />&nbsp;<br />".
       "<a name='files' />".
       "<font size='+2'>Files</font><br />&nbsp;<br />".
       "<p>All source and target locations are relative to the ".
       "sourceroot and targetroot values at the beginning of this ".
       "document.</p>".
       "\n<table border='1' cellpadding='5'>".
       "<tr><th>Status</th><th colspan='2'>Category</th>".
       "<th>Name/Location</th>".
       "<th>Description</th><th>Notes</th></tr>".
       "$text</table>\n".
       "\n";
       }
       elsif ($mode eq 'text') {
    return $directories="\n".
       "File and Directory Structure".
       "\n$text\n".
       "\n";
     }      }
     elsif ($mode eq 'install') {      elsif ($mode eq 'install') {
  return "\n".'files:'."\n".$text.   return "\n".'files:'."\n".$text.
Line 755  sub format_file { Line 956  sub format_file {
     if ($source) {      if ($source) {
  $parser->get_tag('/file');   $parser->get_tag('/file');
  if ($mode eq 'html') {   if ($mode eq 'html') {
     return ($file="\n<br />BEGIN FILE\n".      return ($file="\n<!-- FILESORT:$target -->".
  "$source $target $categoryname $description $note " .      "<tr>".
  "$build $status $dependencies" .      "<td><!-- POSTEVAL -->&nbsp;</td><td>".
  "\nEND FILE");      "<img src='$fab{$categoryname}.gif' ".
       "alt='$categoryname icon' /></td>".
       "<td>$categoryname<br /><font size='-1'>".
       $categoryhash{$categoryname}."</font></td>".
       "<td>SOURCE: $source<br />TARGET: $target</td>".
       "<td>$description</td>".
       "<td>$note</td>".
       "</tr>");
   #    return ($file="\n<br />BEGIN FILE\n".
   # "$source $target $categoryname $description $note " .
   # "$build $status $dependencies" .
   # "\nEND FILE");
  }   }
  elsif ($mode eq 'install' && $categoryname ne 'conf') {   elsif ($mode eq 'install' && $categoryname ne 'conf') {
     if ($build) {      if ($build) {
Line 799  $buildtest \@if !(test -e "${sourceroot} Line 1011  $buildtest \@if !(test -e "${sourceroot}
  echo "**** ERROR **** CVS source file does not exist: ${sourceroot}/${source} and neither does target: ${targetroot}/${target}"$logcmd; \\   echo "**** ERROR **** CVS source file does not exist: ${sourceroot}/${source} and neither does target: ${targetroot}/${target}"$logcmd; \\
  elif !(test -e "${sourceroot}/${source}"); then \\   elif !(test -e "${sourceroot}/${source}"); then \\
  echo "**** WARNING **** CVS source file does not exist: ${sourceroot}/${source}"$logcmd; \\   echo "**** WARNING **** CVS source file does not exist: ${sourceroot}/${source}"$logcmd; \\
    perl verifymodown.pl ${targetroot}/${target} "$categoryhash{$categoryname}"$logcmd; \\
  else \\   else \\
  ECODE=0; \\   ECODE=0; \\
  perl filecompare.pl $bflag ${sourceroot}/${source} ${targetroot}/${target} || ECODE=\$\$?; \\   perl filecompare.pl $bflag ${sourceroot}/${source} ${targetroot}/${target} || ECODE=\$\$?; \\
  case "\$\$ECODE" in \\   case "\$\$ECODE" in \\
  1) echo "${targetroot}/${target} is unchanged";; \\   1) echo "${targetroot}/${target} is unchanged";; \\
  2) echo "**** WARNING **** target file ${targetroot}/${target} is newer than CVS source; creating ${targetroot}/${target}.lpmlnewfile instead"$logcmd && install -o www -g www -m 0500 ${sourceroot}/${source} ${targetroot}/${target}.lpmlnewfile;; \\   2) echo "**** WARNING **** target file ${targetroot}/${target} is newer than CVS source; saving current (old) target file to ${targetroot}/${target}.lpmlsave and then overwriting"$logcmd && install -o www -g www -m 0600 ${targetroot}/${target} ${targetroot}/${target}.lpmlsave && install $categoryhash{$categoryname} ${sourceroot}/${source} ${targetroot}/${target};; \\
  0) echo "install -o www -g www -m 0500 ${sourceroot}/${source} ${targetroot}/${target}" && install -o www -g www -m 0500 ${sourceroot}/${source} ${targetroot}/${target};; \\   0) echo "install $categoryhash{$categoryname} ${sourceroot}/${source} ${targetroot}/${target}" && install $categoryhash{$categoryname} ${sourceroot}/${source} ${targetroot}/${target};; \\
  esac; \\   esac; \\
    perl verifymodown.pl ${targetroot}/${target} "$categoryhash{$categoryname}"$logcmd; \\
  fi   fi
 END  END
 #    return "\t".'@test -e '.$sourceroot.'/'.$source.  
 # ' && perl filecompare.pl -b '.$sourceroot.'/'.$source.' '.  
 # $targetroot.'/'.$target.  
 # ' && install '.  
 # $categoryhash{$categoryname}.' '.  
 # $sourceroot.'/'.$source.' '.  
 # $targetroot.'/'.$target.  
 # ' || echo "**** WARNING '.  
 # '**** CVS source file does not exist: '.$sourceroot.'/'.  
 # $source.'"'."\n";  
  }   }
  elsif ($mode eq 'configinstall' && $categoryname eq 'conf') {   elsif ($mode eq 'configinstall' && $categoryname eq 'conf') {
     push @configall,$targetroot.'/'.$target;      push @configall,$targetroot.'/'.$target;
Line 829  END Line 1033  END
  '{ [ $$ECODE != "2" ] || (install '.   '{ [ $$ECODE != "2" ] || (install '.
                 $categoryhash{$categoryname}.' '.                  $categoryhash{$categoryname}.' '.
  $sourceroot.'/'.$source.' '.   $sourceroot.'/'.$source.' '.
  $targetroot.'/'.$target.'.lpmlnewconf'.   $targetroot.'/'.$target.'.lpmlnew'.
  ' && echo "**** NOTE: CONFIGURATION FILE CHANGE ****"'.   ' && echo "**** NOTE: CONFIGURATION FILE CHANGE ****"'.
  $logcmd.' && echo "'.   $logcmd.' && 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.'.lpmlnew"'.
  "$logcmd); } && ".   "$logcmd); } && ".
  '{ [ $$ECODE != "3" ] || (install '.   '{ [ $$ECODE != "3" ] || (install '.
                 $categoryhash{$categoryname}.' '.                  $categoryhash{$categoryname}.' '.
Line 851  END Line 1055  END
  $logcmd.' && echo "'.   $logcmd.' && echo "'.
  'Configuration source file does not exist '.   'Configuration source file does not exist '.
  ''.$sourceroot.'/'.$source.'"'.   ''.$sourceroot.'/'.$source.'"'.
  "$logcmd); };\n\n";   "$logcmd); } && perl verifymodown.pl ${targetroot}/${target} \"$categoryhash{$categoryname}\"$logcmd;\n\n";
  }   }
  elsif ($mode eq 'build' && $build) {   elsif ($mode eq 'build' && $build) {
     push @buildall,$sourceroot.'/'.$source;      push @buildall,$sourceroot.'/'.$source;
Line 869  END Line 1073  END
 # --------------------------------------------------------- Format link section  # --------------------------------------------------------- Format link section
 sub format_link {  sub format_link {
     my @tokeninfo=@_;      my @tokeninfo=@_;
     $link=''; $linkto=''; $target=''; $categoryname=''; $description='';      $link=''; $linkto=''; $source=''; $target=''; $categoryname=''; 
     $note=''; $build=''; $status=''; $dependencies='';      $description=''; $note=''; $build=''; $status=''; $dependencies='';
     my $text=&trim($parser->get_text('/link'));      my $text=&trim($parser->get_text('/link'));
     if ($linkto) {      if ($linkto) {
  $parser->get_tag('/link');   $parser->get_tag('/link');
  if ($mode eq 'html') {   if ($mode eq 'html') {
     return $link="\n<br />BEGIN LINK\n".      my @targets=map {s/^\s*//;s/\s$//;$_} split(/\;/,$target);
  "$linkto $target $categoryname $description $note " .      foreach my $tgt (@targets) {
  "$build $status $dependencies" .   push @links,("\n<!-- FILESORT:$tgt -->".
     "\nEND LINK";      "<tr>".
       "<td><!-- POSTEVAL -->&nbsp;</td><td>".
       "<img src='$fab{$categoryname}.gif' ".
       "alt='$categoryname icon' /></td>".
       "<td><font size='-1'>$categoryname</font></td>".
       "<td>LINKTO: $linkto<br />TARGET: $tgt</td>".
       "<td>$description</td>".
       "<td>$note</td>".
       "</tr>");
   # push @links,"\t".'ln -fs /'.$linkto.' /'.$targetroot.$tgt.
   #    "\n";
       }
       return join('',@links);
   #    return ($link="\n<!-- FILESORT:$target -->".
   #    "<tr>".
   #    "<td>&nbsp;</td><td><img src='$fab{$categoryname}.gif' ".
   #    "alt='$categoryname icon' /></td>".
   #    "<td>$categoryname</td>".
   #    "<td>LINKTO: $linkto<br />TARGET: $target</td>".
   #    "<td>$description</td>".
   #    "<td>$note</td>".
   #    "</tr>");
   #    return $link="\n<tr><td colspan='6'>BEGIN LINK\n".
   # "$linkto $target $categoryname $description $note " .
   # "$build $status $dependencies" .
   #    "\nEND LINK</td></tr>";
  }   }
  elsif ($mode eq 'install') {   elsif ($mode eq 'install') {
     my @targets=map {s/^\s*//;s/\s$//;$_} split(/\;/,$target);      my @targets=map {s/^\s*//;s/\s$//;$_} split(/\;/,$target);
Line 902  sub format_fileglob { Line 1131  sub format_fileglob {
     $note=''; $build=''; $status=''; $dependencies='';      $note=''; $build=''; $status=''; $dependencies='';
     $filenames='';      $filenames='';
     my $text=&trim($parser->get_text('/fileglob'));      my $text=&trim($parser->get_text('/fileglob'));
       my $filenames2=$filenames;$filenames2=~s/\s//g;
     if ($sourcedir) {      if ($sourcedir) {
  $parser->get_tag('/fileglob');   $parser->get_tag('/fileglob');
  if ($mode eq 'html') {   if ($mode eq 'html') {
     return $fileglob="\n<br />BEGIN FILEGLOB\n".      return $fileglob="\n<tr>".
  "$glob sourcedir $targetdir $categoryname $description $note ".   "<td><!-- POSTEVAL2 verify.pl fileglob '$sourcerootarg' ".
  "$build $status $dependencies $filenames" .   "'$targetrootarg' ".
     "\nEND FILEGLOB";   "'$glob' '$sourcedir' '$filenames2' '$targetdir' ".
    "$categoryhash{$categoryname} -->&nbsp;</td>".
    "<td>"."<img src='$fab{$categoryname}.gif' ".
           "alt='$categoryname icon' /></td>".
    "<td>$categoryname<br />".
    "<font size='-1'>".$categoryhash{$categoryname}."</font></td>".
    "<td>SOURCEDIR: $sourcedir<br />".
    "TARGETDIR: $targetdir<br />".
                   "GLOB: $glob<br />".
                   "FILENAMES: $filenames".
    "</td>".
    "<td>$description</td>".
    "<td>$note</td>".
    "</tr>";
   #    return $fileglob="\n<tr><td colspan='6'>BEGIN FILEGLOB\n".
   # "$glob sourcedir $targetdir $categoryname $description $note ".
   # "$build $status $dependencies $filenames" .
   # "\nEND FILEGLOB</td></tr>";
  }   }
  elsif ($mode eq 'install') {   elsif ($mode eq 'install') {
     return "\t".'install '.      return "\t".'install '.
Line 959  sub format_source { Line 1206  sub format_source {
 sub format_note {  sub format_note {
     my @tokeninfo=@_;      my @tokeninfo=@_;
     $note='';      $note='';
     my $text=&trim($parser->get_text('/note'));  #    my $text=&trim($parser->get_text('/note'));
       my $aref;
       my $text;
       while ($aref=$parser->get_token()) {
    if ($aref->[0] eq 'E' && $aref->[1] eq 'note') {
       last;
    }
    elsif ($aref->[0] eq 'S') {
       $text.=$aref->[4];
    }
    elsif ($aref->[0] eq 'E') {
       $text.=$aref->[2];
    }
    else {
       $text.=$aref->[1];
    }
       }
     if ($text) {      if ($text) {
  $parser->get_tag('/note');  # $parser->get_tag('/note');
  $note=$text;   $note=$text;
     }      }
     return '';      return '';

Removed from v.1.20  
changed lines
  Added in v.1.27


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