version 1.27, 2001/12/06 00:22:53
|
version 1.42, 2002/03/22 02:09:41
|
Line 1
|
Line 1
|
#!/usr/bin/perl |
#!/usr/bin/perl |
|
|
# Scott Harrison |
# The LearningOnline Network with CAPA |
|
# lpml_parse.pl - Linux Packaging Markup Language parser |
|
# |
|
# $Id$ |
|
# |
|
# Written by Scott Harrison, harris41@msu.edu |
|
# |
|
# Copyright Michigan State University Board of Trustees |
|
# |
|
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
|
# |
|
# LON-CAPA is free software; you can redistribute it and/or modify |
|
# it under the terms of the GNU General Public License as published by |
|
# the Free Software Foundation; either version 2 of the License, or |
|
# (at your option) any later version. |
|
# |
|
# LON-CAPA is distributed in the hope that it will be useful, |
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
# GNU General Public License for more details. |
|
# |
|
# You should have received a copy of the GNU General Public License |
|
# along with LON-CAPA; if not, write to the Free Software |
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
# |
|
# /home/httpd/html/adm/gpl.txt |
|
# |
|
# http://www.lon-capa.org/ |
|
# |
# YEAR=2001 |
# YEAR=2001 |
# May 2001 |
# May 2001 |
# 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,11/17 - 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 |
# 12/2,12/3,12/4,12/5,12/6,12/13,12/19,12/29 - Scott Harrison |
# $Id$ |
# YEAR=2002 |
|
# 1/8,1/9,1/29,1/31,2/5,3/21 - Scott Harrison |
### |
### |
|
|
############################################################################### |
############################################################################### |
Line 100 if ($mode eq 'install' or $mode eq 'conf
|
Line 129 if ($mode eq 'install' or $mode eq 'conf
|
# 1st argument (mode) is: $mode |
# 1st argument (mode) is: $mode |
# 2nd argument (category type) is: $categorytype |
# 2nd argument (category type) is: $categorytype |
# 3rd argument (distribution) is: $dist |
# 3rd argument (distribution) is: $dist |
# 4th argument (targetroot) is: described below |
# 4th argument (sourceroot) is: described below |
# 5th argument (sourceroot) is: described below |
# 5th argument (targetroot) is: described below |
END |
END |
} |
} |
|
|
Line 178 while ($token = $parser->get_token()) {
|
Line 207 while ($token = $parser->get_token()) {
|
$cleanstring.=$token->[4]; |
$cleanstring.=$token->[4]; |
} |
} |
if ($token->[4]=~/\/>$/) { |
if ($token->[4]=~/\/>$/) { |
$hloc--; |
# $hloc--; |
} |
} |
} |
} |
if ($token->[0] eq 'E') { |
if ($token->[0] eq 'E') { |
Line 197 $cleanstring=~s/\>\s*\n\s*\</\>\</g;
|
Line 226 $cleanstring=~s/\>\s*\n\s*\</\>\</g;
|
# storage variables |
# storage variables |
my $lpml; |
my $lpml; |
my $categories; |
my $categories; |
|
my @categorynamelist; |
my $category; |
my $category; |
my $category_att_name; |
my $category_att_name; |
my $category_att_type; |
my $category_att_type; |
Line 244 my @links;
|
Line 274 my @links;
|
my %categoryhash; |
my %categoryhash; |
my $dpathlength; |
my $dpathlength; |
my %fab; # file category abbreviation |
my %fab; # file category abbreviation |
|
my $directory_count; |
|
my $file_count; |
|
my $link_count; |
|
my $fileglob_count; |
|
my $fileglobnames_count; |
|
my %categorycount; |
|
|
my @buildall; |
my @buildall; |
my @buildinfo; |
my @buildinfo; |
Line 259 $parser->xml_mode('1');
|
Line 295 $parser->xml_mode('1');
|
# Define handling methods for mode-dependent text rendering |
# Define handling methods for mode-dependent text rendering |
|
|
$parser->{textify}={ |
$parser->{textify}={ |
|
specialnotices => \&format_specialnotices, |
|
specialnotice => \&format_specialnotice, |
targetroot => \&format_targetroot, |
targetroot => \&format_targetroot, |
sourceroot => \&format_sourceroot, |
sourceroot => \&format_sourceroot, |
categories => \&format_categories, |
categories => \&format_categories, |
Line 280 $parser->{textify}={
|
Line 318 $parser->{textify}={
|
rpmAutoReqProv => \&format_rpmAutoReqProv, |
rpmAutoReqProv => \&format_rpmAutoReqProv, |
rpmdescription => \&format_rpmdescription, |
rpmdescription => \&format_rpmdescription, |
rpmpre => \&format_rpmpre, |
rpmpre => \&format_rpmpre, |
|
rpmRequires => \&format_rpmRequires, |
directories => \&format_directories, |
directories => \&format_directories, |
directory => \&format_directory, |
directory => \&format_directory, |
categoryname => \&format_categoryname, |
categoryname => \&format_categoryname, |
Line 326 exit;
|
Line 365 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 "</body></html>\n"; |
return "<br /> <br />". |
|
"<a name='summary' /><font size='+2'>Summary of Source Repository". |
|
"</font>". |
|
"<br /> <br />". |
|
"<table border='1' cellpadding='5'>". |
|
"<caption>Files, Directories, and Symbolic Links</caption>". |
|
"<tr><td>Files (not referenced by globs)</td><td>$file_count</td>". |
|
"</tr>". |
|
"<tr><td>Files (referenced by globs)</td>". |
|
"<td>$fileglobnames_count</td>". |
|
"</tr>". |
|
"<tr><td>Total Files</td>". |
|
"<td>".($fileglobnames_count+$file_count)."</td>". |
|
"</tr>". |
|
"<tr><td>File globs</td>". |
|
"<td>".$fileglob_count."</td>". |
|
"</tr>". |
|
"<tr><td>Directories</td>". |
|
"<td>".$directory_count."</td>". |
|
"</tr>". |
|
"<tr><td>Symbolic links</td>". |
|
"<td>".$link_count."</td>". |
|
"</tr>". |
|
"</table>". |
|
"<table border='1' cellpadding='5'>". |
|
"<caption>File Category Count</caption>". |
|
"<tr><th>Icon</th><th>Name</th><th>Number of Occurrences</th>". |
|
"<th>Number of Incorrect Counts</th>". |
|
"</tr>". |
|
join("\n",(map {"<tr><td><img src='$fab{$_}.gif' ". |
|
"alt='$_ icon' /></td>". |
|
"<td>$_</td><td>$categorycount{$_}</td>". |
|
"<td><!-- POSTEVALINLINE $_ --></td></tr>"} |
|
@categorynamelist)). |
|
"</table>". |
|
"</body></html>\n"; |
|
|
} |
} |
if ($mode eq 'install') { |
if ($mode eq 'install') { |
return ''; |
return ''; |
Line 364 Descriptions</a></li>
|
Line 439 Descriptions</a></li>
|
<li><a href='#package'>Software Package Description</a></li> |
<li><a href='#package'>Software Package Description</a></li> |
<li><a href='#directories'>Directory Structure</a></li> |
<li><a href='#directories'>Directory Structure</a></li> |
<li><a href='#files'>Files</a></li> |
<li><a href='#files'>Files</a></li> |
|
<li><a href='#summary'>Summary of Source Repository</a></li> |
</ul> |
</ul> |
END |
END |
$lpml .=<<END; |
$lpml .=<<END; |
Line 371 END
|
Line 447 END
|
<font size='+2'>About this file</font> |
<font size='+2'>About this file</font> |
<p> |
<p> |
This file is generated dynamically by <tt>lpml_parse.pl</tt> as |
This file is generated dynamically by <tt>lpml_parse.pl</tt> as |
part of a development compilation process. Author: Scott |
part of a development compilation process.</p> |
Harrison (harris41\@msu.edu). |
<p>LPML written by Scott Harrison (harris41\@msu.edu). |
</p> |
</p> |
END |
END |
} |
} |
Line 497 sub format_category {
|
Line 573 sub format_category {
|
$fab{$category_att_name}=$abbreviation; |
$fab{$category_att_name}=$abbreviation; |
if ($mode eq 'html') { |
if ($mode eq 'html') { |
if ($category_att_type eq $categorytype) { |
if ($category_att_type eq $categorytype) { |
|
push @categorynamelist,$category_att_name; |
$categoryhash{$category_att_name}="$chmod $chown"; |
$categoryhash{$category_att_name}="$chmod $chown"; |
return $category="<tr>". |
return $category="<tr>". |
"<td><img src='$abbreviation.gif' ". |
"<td><img src='$abbreviation.gif' ". |
Line 568 $text
|
Line 645 $text
|
</table> |
</table> |
END |
END |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
return $text; |
|
} |
elsif ($mode eq 'text') { |
elsif ($mode eq 'text') { |
return $rpm=<<END; |
return $rpm=<<END; |
Software Package Description |
Software Package Description |
Line 589 sub format_rpmSummary {
|
Line 669 sub format_rpmSummary {
|
elsif ($mode eq 'text') { |
elsif ($mode eq 'text') { |
return $rpmSummary="\nSummary : $text"; |
return $rpmSummary="\nSummary : $text"; |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
return <<END; |
|
<summary>$text</summary> |
|
END |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 603 sub format_rpmName {
|
Line 688 sub format_rpmName {
|
elsif ($mode eq 'text') { |
elsif ($mode eq 'text') { |
return $rpmName="\nName : $text"; |
return $rpmName="\nName : $text"; |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
return <<END; |
|
<name>$text</name> |
|
END |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 645 sub format_rpmVendor {
|
Line 735 sub format_rpmVendor {
|
elsif ($mode eq 'text') { |
elsif ($mode eq 'text') { |
return $rpmVendor="\nVendor : $text"; |
return $rpmVendor="\nVendor : $text"; |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
return <<END; |
|
<vendor>$text</vendor> |
|
END |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 673 sub format_rpmCopyright {
|
Line 768 sub format_rpmCopyright {
|
elsif ($mode eq 'text') { |
elsif ($mode eq 'text') { |
return $rpmCopyright="\nLicense : $text"; |
return $rpmCopyright="\nLicense : $text"; |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
return <<END; |
|
<copyright>$text</copyright> |
|
END |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 687 sub format_rpmGroup {
|
Line 787 sub format_rpmGroup {
|
elsif ($mode eq 'text') { |
elsif ($mode eq 'text') { |
return $rpmGroup="\nGroup : $text"; |
return $rpmGroup="\nGroup : $text"; |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
return <<END; |
|
<group>Utilities/System</group> |
|
END |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 712 sub format_rpmAutoReqProv {
|
Line 817 sub format_rpmAutoReqProv {
|
if ($mode eq 'html') { |
if ($mode eq 'html') { |
return $rpmAutoReqProv="\nAutoReqProv : $text"; |
return $rpmAutoReqProv="\nAutoReqProv : $text"; |
} |
} |
if ($mode eq 'text') { |
elsif ($mode eq 'text') { |
return $rpmAutoReqProv="\nAutoReqProv : $text"; |
return $rpmAutoReqProv="\nAutoReqProv : $text"; |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
return <<END; |
|
<AutoReqProv>$text</AutoReqProv> |
|
END |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 733 sub format_rpmdescription {
|
Line 843 sub format_rpmdescription {
|
$text=~s/\\n/\n/g; |
$text=~s/\\n/\n/g; |
return $rpmdescription="\nDescription : $text"; |
return $rpmdescription="\nDescription : $text"; |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
$text=~s/\n//g; |
|
$text=~s/\\n/\n/g; |
|
return <<END; |
|
<description>$text</description> |
|
END |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 745 sub format_rpmpre {
|
Line 862 sub format_rpmpre {
|
# return $rpmpre="\n<br />RPMPRE $text"; |
# return $rpmpre="\n<br />RPMPRE $text"; |
return ''; |
return ''; |
} |
} |
|
elsif ($mode eq 'make_rpm') { |
|
return <<END; |
|
<pre>$text</pre> |
|
END |
|
} |
|
else { |
|
return ''; |
|
} |
|
} |
|
# -------------------------------------------------- Format requires section |
|
sub format_rpmRequires { |
|
my @tokeninfo=@_; |
|
my $aref; |
|
my $text; |
|
if ($mode eq 'make_rpm') { |
|
while ($aref=$parser->get_token()) { |
|
if ($aref->[0] eq 'E' && $aref->[1] eq 'rpmRequires') { |
|
last; |
|
} |
|
elsif ($aref->[0] eq 'S') { |
|
$text.=$aref->[4]; |
|
} |
|
elsif ($aref->[0] eq 'E') { |
|
$text.=$aref->[2]; |
|
} |
|
else { |
|
$text.=$aref->[1]; |
|
} |
|
} |
|
} |
else { |
else { |
|
$parser->get_tag('/rpmRequires'); |
return ''; |
return ''; |
} |
} |
|
return '<rpmRequires>'.$text.'</rpmRequires>'; |
} |
} |
# -------------------------------------------------- Format directories section |
# -------------------------------------------------- Format directories section |
sub format_directories { |
sub format_directories { |
Line 773 sub format_directories {
|
Line 922 sub format_directories {
|
} |
} |
elsif ($mode eq 'install') { |
elsif ($mode eq 'install') { |
return "\n".'directories:'."\n".$text; |
return "\n".'directories:'."\n".$text; |
} |
} |
|
elsif ($mode eq 'rpm_file_list') { |
|
return $text; |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 784 sub format_directory {
|
Line 936 sub format_directory {
|
$targetdir='';$categoryname='';$description=''; |
$targetdir='';$categoryname='';$description=''; |
$parser->get_text('/directory'); |
$parser->get_text('/directory'); |
$parser->get_tag('/directory'); |
$parser->get_tag('/directory'); |
|
$directory_count++; |
|
$categorycount{$categoryname}++; |
if ($mode eq 'html') { |
if ($mode eq 'html') { |
my @a; |
my @a; |
@a=($targetdir=~/\//g); |
@a=($targetdir=~/\//g); |
Line 791 sub format_directory {
|
Line 945 sub format_directory {
|
$dpathlength=$d if $d>$dpathlength; |
$dpathlength=$d if $d>$dpathlength; |
my $thtml=$targetdir; |
my $thtml=$targetdir; |
$thtml=~s/\//\<\/td\>\<td bgcolor='#ffffff'\>/g; |
$thtml=~s/\//\<\/td\>\<td bgcolor='#ffffff'\>/g; |
|
my ($chmod,$chown)=split(/\s/,$categoryhash{$categoryname}); |
return $directory="\n<tr><td rowspan='2' bgcolor='#ffffff'>". |
return $directory="\n<tr><td rowspan='2' bgcolor='#ffffff'>". |
"$categoryname</td>". |
"$categoryname</td>". |
"<td rowspan='2' bgcolor='#ffffff'><!-- POSTEVAL: --> </td>". |
"<td rowspan='2' bgcolor='#ffffff'><!-- POSTEVAL [$categoryname] ". |
|
"verify.pl directory /$targetdir $categoryhash{$categoryname} -->". |
|
" </td>". |
"<td rowspan='2' bgcolor='#ffffff'>$chmod<br />$chown</td>". |
"<td rowspan='2' bgcolor='#ffffff'>$chmod<br />$chown</td>". |
"<td bgcolor='#ffffff'>$thtml</td></tr>". |
"<td bgcolor='#ffffff'>$thtml</td></tr>". |
"<tr><td bgcolor='#ffffff' colspan='[{{{{{DPATHLENGTH}}}}}]'>". |
"<tr><td bgcolor='#ffffff' colspan='[{{{{{DPATHLENGTH}}}}}]'>". |
Line 807 sub format_directory {
|
Line 964 sub format_directory {
|
return "\t".'install '.$categoryhash{$categoryname}.' -d '. |
return "\t".'install '.$categoryhash{$categoryname}.' -d '. |
$targetroot.'/'.$targetdir."\n"; |
$targetroot.'/'.$targetdir."\n"; |
} |
} |
|
elsif ($mode eq 'rpm_file_list') { |
|
return $targetroot.'/'.$targetdir."\n"; |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 886 sub format_files {
|
Line 1046 sub format_files {
|
foreach my $bi (@buildinfo) { |
foreach my $bi (@buildinfo) { |
my ($target,$source,$command,$trigger,@deps)=split(/\;/,$bi); |
my ($target,$source,$command,$trigger,@deps)=split(/\;/,$bi); |
$tword=''; $tword=' alwaysrun' if $trigger eq 'always run'; |
$tword=''; $tword=' alwaysrun' if $trigger eq 'always run'; |
$command=~s/\/([^\/]*)$//; |
if ($command!~/\s/) { |
$command2="cd $command; sh ./$1;\\"; |
$command=~s/\/([^\/]*)$//; |
|
$command2="cd $command; sh ./$1;\\"; |
|
} |
|
else { |
|
$command=~s/(.*?\/)([^\/]+\s+.*)$/$1/; |
|
$command2="cd $command; sh ./$2;\\"; |
|
} |
my $depstring; |
my $depstring; |
my $depstring2="\t\t\@echo '';\\\n"; |
my $depstring2="\t\t\@echo '';\\\n"; |
my $olddep; |
my $olddep; |
Line 923 sub format_files {
|
Line 1089 sub format_files {
|
$binfo."\n". |
$binfo."\n". |
"alwaysrun:\n\n"; |
"alwaysrun:\n\n"; |
} |
} |
|
elsif ($mode eq 'rpm_file_list') { |
|
return $text; |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 953 sub format_file {
|
Line 1122 sub format_file {
|
$note=''; $build=''; $status=''; $dependencies=''; |
$note=''; $build=''; $status=''; $dependencies=''; |
my $text=&trim($parser->get_text('/file')); |
my $text=&trim($parser->get_text('/file')); |
my $buildtest; |
my $buildtest; |
|
$file_count++; |
|
$categorycount{$categoryname}++; |
if ($source) { |
if ($source) { |
$parser->get_tag('/file'); |
$parser->get_tag('/file'); |
if ($mode eq 'html') { |
if ($mode eq 'html') { |
return ($file="\n<!-- FILESORT:$target -->". |
return ($file="\n<!-- FILESORT:$target -->". |
"<tr>". |
"<tr>". |
"<td><!-- POSTEVAL --> </td><td>". |
"<td><!-- POSTEVAL [$categoryname] verify.pl file '$sourcerootarg' ". |
|
"'$targetrootarg' ". |
|
"'$source' '$target' ". |
|
"$categoryhash{$categoryname} --> </td><td>". |
"<img src='$fab{$categoryname}.gif' ". |
"<img src='$fab{$categoryname}.gif' ". |
"alt='$categoryname icon' /></td>". |
"alt='$categoryname icon' /></td>". |
"<td>$categoryname<br /><font size='-1'>". |
"<td>$categoryname<br /><font size='-1'>". |
Line 984 sub format_file {
|
Line 1158 sub format_file {
|
foreach my $dep (@deps) { |
foreach my $dep (@deps) { |
$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)'$logcmd); DEP="1"; \\ |
test -e $dep || (echo '**** WARNING **** cannot evaluate status of dependency $dep (for building ${sourceroot}/${source} with)'$logcmd); DEP="1"; \\ |
[ -n DEP ] && { perl filecompare.pl -b2 $command/$dep ${targetroot}/${target} || ECODE=\$\$?; } || DEP="1"; \\ |
[ -n DEP ] && { perl filecompare.pl -b2 $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"$logcmd;; \\ |
2) echo "**** WARNING **** dependency $dep is newer than target file ${targetroot}/${target}; you may want to run make build"$logcmd;; \\ |
esac; \\ |
esac; \\ |
END |
END |
} |
} |
Line 1055 END
|
Line 1229 END
|
$logcmd.' && echo "'. |
$logcmd.' && echo "'. |
'Configuration source file does not exist '. |
'Configuration source file does not exist '. |
''.$sourceroot.'/'.$source.'"'. |
''.$sourceroot.'/'.$source.'"'. |
"$logcmd); } && perl verifymodown.pl ${targetroot}/${target} \"$categoryhash{$categoryname}\"$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 1064 END
|
Line 1239 END
|
$dependencies; |
$dependencies; |
# return '# need to build '.$source."; |
# return '# need to build '.$source."; |
} |
} |
|
elsif ($mode eq 'rpm_file_list') { |
|
if ($categoryname eq 'doc') { |
|
return $targetroot.'/'.$target.' # doc'."\n"; |
|
} |
|
elsif ($categoryname eq 'conf') { |
|
return $targetroot.'/'.$target.' # config'."\n"; |
|
} |
|
else { |
|
return $targetroot.'/'.$target."\n"; |
|
} |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 1080 sub format_link {
|
Line 1266 sub format_link {
|
$parser->get_tag('/link'); |
$parser->get_tag('/link'); |
if ($mode eq 'html') { |
if ($mode eq 'html') { |
my @targets=map {s/^\s*//;s/\s$//;$_} split(/\;/,$target); |
my @targets=map {s/^\s*//;s/\s$//;$_} split(/\;/,$target); |
|
$link_count+=scalar(@targets); |
foreach my $tgt (@targets) { |
foreach my $tgt (@targets) { |
|
$categorycount{$categoryname}++; |
push @links,("\n<!-- FILESORT:$tgt -->". |
push @links,("\n<!-- FILESORT:$tgt -->". |
"<tr>". |
"<tr>". |
"<td><!-- POSTEVAL --> </td><td>". |
"<td><!-- POSTEVAL [$categoryname] verify.pl link ". |
|
"'/$targetrootarg$linkto' '/$targetrootarg$tgt' ". |
|
"$categoryhash{$categoryname} --> </td><td>". |
"<img src='$fab{$categoryname}.gif' ". |
"<img src='$fab{$categoryname}.gif' ". |
"alt='$categoryname icon' /></td>". |
"alt='$categoryname icon' /></td>". |
"<td><font size='-1'>$categoryname</font></td>". |
"<td><font size='-1'>$categoryname</font></td>". |
Line 1112 sub format_link {
|
Line 1302 sub format_link {
|
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); |
foreach my $tgt (@targets) { |
foreach my $tgt (@targets) { |
push @links,"\t".'ln -fs /'.$linkto.' /'.$targetroot.$tgt. |
push @links,"\t".'ln -fs /'.$linkto.' '.$targetroot.'/'.$tgt. |
"\n"; |
"\n"; |
} |
} |
|
# return join('',@links); |
return ''; |
return ''; |
} |
} |
|
elsif ($mode eq 'rpm_file_list') { |
|
my @linklocs; |
|
my @targets=map {s/^\s*//;s/\s$//;$_} split(/\;/,$target); |
|
foreach my $tgt (@targets) { |
|
push @linklocs,''.$targetroot.'/'.$tgt."\n"; |
|
} |
|
return join('',@linklocs); |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 1132 sub format_fileglob {
|
Line 1331 sub format_fileglob {
|
$filenames=''; |
$filenames=''; |
my $text=&trim($parser->get_text('/fileglob')); |
my $text=&trim($parser->get_text('/fileglob')); |
my $filenames2=$filenames;$filenames2=~s/\s//g; |
my $filenames2=$filenames;$filenames2=~s/\s//g; |
|
$fileglob_count++; |
|
my @semi=($filenames2=~/(\;)/g); |
|
$fileglobnames_count+=scalar(@semi)+1; |
|
$categorycount{$categoryname}+=scalar(@semi)+1; |
if ($sourcedir) { |
if ($sourcedir) { |
$parser->get_tag('/fileglob'); |
$parser->get_tag('/fileglob'); |
if ($mode eq 'html') { |
if ($mode eq 'html') { |
return $fileglob="\n<tr>". |
return $fileglob="\n<tr>". |
"<td><!-- POSTEVAL2 verify.pl fileglob '$sourcerootarg' ". |
"<td><!-- POSTEVAL [$categoryname] verify.pl fileglob '$sourcerootarg' ". |
"'$targetrootarg' ". |
"'$targetrootarg' ". |
"'$glob' '$sourcedir' '$filenames2' '$targetdir' ". |
"'$glob' '$sourcedir' '$filenames2' '$targetdir' ". |
"$categoryhash{$categoryname} --> </td>". |
"$categoryhash{$categoryname} --> </td>". |
Line 1158 sub format_fileglob {
|
Line 1361 sub format_fileglob {
|
# "\nEND FILEGLOB</td></tr>"; |
# "\nEND FILEGLOB</td></tr>"; |
} |
} |
elsif ($mode eq 'install') { |
elsif ($mode eq 'install') { |
|
my $eglob=$glob; |
|
if ($glob eq '*') { |
|
$eglob='[^C][^V][^S]'.$glob; |
|
} |
return "\t".'install '. |
return "\t".'install '. |
$categoryhash{$categoryname}.' '. |
$categoryhash{$categoryname}.' '. |
$sourceroot.'/'.$sourcedir.'[^C][^V][^S]'.$glob.' '. |
$sourceroot.'/'.$sourcedir.$eglob.' '. |
$targetroot.'/'.$targetdir.'.'."\n"; |
$targetroot.'/'.$targetdir.'.'."\n"; |
} |
} |
|
elsif ($mode eq 'rpm_file_list') { |
|
my $eglob=$glob; |
|
if ($glob eq '*') { |
|
$eglob='[^C][^V][^S]'.$glob; |
|
} |
|
my $targetdir2=$targetdir;$targetdir2=~s/\/$//; |
|
my @gfiles=map {s/^.*\///;"$targetroot/$targetdir2/$_\n"} |
|
glob("$sourceroot/$sourcedir/$eglob"); |
|
return join('',@gfiles); |
|
} |
else { |
else { |
return ''; |
return ''; |
} |
} |
Line 1238 sub format_build {
|
Line 1455 sub format_build {
|
if ($text) { |
if ($text) { |
$parser->get_tag('/build'); |
$parser->get_tag('/build'); |
$build=$sourceroot.'/'.$text.';'.$tokeninfo[2]{'trigger'}; |
$build=$sourceroot.'/'.$text.';'.$tokeninfo[2]{'trigger'}; |
|
$build=~s/([^\\])\\\s+/$1/g; # allow for lines split onto new lines |
} |
} |
return ''; |
return ''; |
} |
} |
Line 1296 sub format_filenames {
|
Line 1514 sub format_filenames {
|
} |
} |
return ''; |
return ''; |
} |
} |
|
# ----------------------------------------------- Format specialnotices section |
|
sub format_specialnotices { |
|
$parser->get_tag('/specialnotices'); |
|
return ''; |
|
} |
|
# ------------------------------------------------ Format specialnotice section |
|
sub format_specialnotice { |
|
$parser->get_tag('/specialnotice'); |
|
return ''; |
|
} |
# ------------------------------------------------------- Format linkto section |
# ------------------------------------------------------- Format linkto section |
sub format_linkto { |
sub format_linkto { |
my @tokeninfo=@_; |
my @tokeninfo=@_; |