--- loncom/build/Attic/parse.pl 2000/12/10 03:06:11 1.8 +++ loncom/build/Attic/parse.pl 2000/12/14 18:38:37 1.17 @@ -65,6 +65,7 @@ while ($info1=~/\/isg) } elsif (uc($hash{'TYPE'}) eq "LOCATION") { $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'CATEGORY'}= $hash{'CATEGORY'}; + $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'LINKTO'}= $hash{'LINKTO'}; $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'SOURCE'}= $hash{'SOURCE'}; # get surrounding metagroup information my $ckeystring=$keystring; $ckeystring=~s/(SOURCE\=\"[^"]*)\*/$1\\\*/g; @@ -75,7 +76,7 @@ while ($info1=~/\/isg) foreach my $m (@meta) { if ($data=~/\<($m)\>(.*?)\<\/$m\>/sgi) { my ($key,$value)=($1,$2); - $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{$key}= + $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{uc($key)}= $value; } } @@ -85,8 +86,9 @@ while ($info1=~/\/isg) } } -if ($mode eq "ALL" || $mode eq "HTML") { - my $a; +my $a; +my @directories; +if ($mode eq "HTML") { $a=&begin_description_page; print $a; $a=&make_rpm_description_block; @@ -101,8 +103,774 @@ if ($mode eq "ALL" || $mode eq "HTML") { $a=&end_description_page; print $a; } +elsif ($mode eq "SPEC") { + my $out=$info{'RPM'}{'Name'} . '-' . $info{'RPM'}{'Version'} . '.spec'; + open OUT,">$out"; + $a=&make_rpm_spec_block; + print OUT $a; + $a=&make_rpm_build_block; + print OUT $a; + @directories=&determine_directory_structure; + $a=&make_directory_structure_spec_block(\@directories); + print OUT $a; + $a=&make_directory_and_file_structure_spec_block(\@directories); + print OUT $a; + $a=&end_spec_page; + print OUT $a; + close OUT; +} +elsif ($mode eq "LCMakefile") { + @directories=&determine_directory_structure; + $a=&make_directory_LCMakefile_segment(\@directories); + print $a; + $a=&make_files_LCMakefile_segment(\@directories); + print $a; + $a=&make_links_LCMakefile_segment(\@directories); + print $a; +} +elsif ($mode eq "BinaryRoot") { + mkdir "BinaryRoot",0755; + open OUT,">Makefile.BinaryRoot"; + @directories=&determine_directory_structure; + $a=&make_directory_binaryroot_segment(\@directories); + print OUT $a; + $a=&make_files_binaryroot_segment(\@directories); + print OUT $a; + $a=&make_links_binaryroot_segment(\@directories); + print OUT $a; + close OUT; + print `make -f Makefile.BinaryRoot TARGET='BinaryRoot' SOURCE='../..' directories`; + print `make -f Makefile.BinaryRoot TARGET='BinaryRoot' SOURCE='../..' files`; + print `make -f Makefile.BinaryRoot TARGET='BinaryRoot' SOURCE='../..' links`; + open OUT,">base_file_list.txt"; + $a=&make_file_list(\@directories); + print OUT $a; + close OUT; + +} +elsif ($mode eq "status") { +} +elsif ($mode eq "update") { +} +elsif ($mode eq "configinstall") { + @directories=&determine_directory_structure; + $a=&make_files_configinstall_segment(\@directories); + print $a; + $a=&make_files_configpermissions_segment(\@directories); + print $a; +} +elsif ($mode eq "install") { + @directories=&determine_directory_structure; + $a=&make_directory_install_segment(\@directories); + print $a; + $a=&make_files_install_segment(\@directories); + print $a; + $a=&make_links_install_segment(\@directories); + print $a; +} +elsif ($mode eq "build") { + @directories=&determine_directory_structure; + $a=&make_files_build_segment(\@directories); + print $a; +} + +# ------------------------------------------------------ a list of file targets +sub make_file_list { + my ($dirs)=@_; + my $description; + my @allfiles=keys %{$info{'LOCATION'}{$distribution}}; + foreach my $d (@$dirs) { + # set other values + my $dirdescription=$info{'DIRECTORY'}{$distribution}{$d}{'DESCRIPTION'}; + $dirdescription="(" . $dirdescription . ")" if $dirdescription; + # find files that are contained in this directory + my @files; + my @filesfull; + foreach my $f (@allfiles) { + if ($f=~/^$d\/([^\/]+)$/) { + push @files,$1; + push @filesfull,$f; + } + } + # render starting HTML formatting elements + if (@files) { + } + my $pwd=`pwd`; chop $pwd; + if (@files) { + foreach my $i (0..$#files) { + my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'}; + my $chown=$info{'OWNERSHIP'}{$category}{'CHOWN'}; + my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'}; + my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'}; + my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'}; + my $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'}; + my $rot="/".$filesfull[$i]; + if ($rot=~/\*/) { + $rot=~s/[^\/]+$// if $rot=~/\*/; + my $listing=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'FILES'}; + chop $listing; + my @list=split(/\s+/,$listing); + my $rot2; + foreach my $l (@list) { + $l=~s/^\s*//; $l=~s/\s*$//; + $rot2.="BinaryRoot$rot$l\n" if length($l); + } + chop $rot2; + $rot=$rot2; + } + else { + $rot="BinaryRoot$rot"; + } + if ($category eq "conf") { + $rot.=" # config"; + } + $description.=< @@ -160,7 +928,6 @@ Group : $info{'RPM'}{'Group'} License : $info{'RPM'}{'Copyright'} Summary : $info{'RPM'}{'Summary'} Description : -
 $info{'RPM'}{'description'}
 
@@ -183,6 +950,13 @@ sub make_directory_structure_description my $description=<Directory Structure Description, $date

+The directory structure description below shows only those +directories which either contain LON-CAPA specific files +or normally do not exist on a RedHat Linux system (and +must be generated to allow proper placement of files +during LON-CAPA run-time operation). +

+

END my $maxcount=0; @@ -292,7 +1066,7 @@ the specified location, then the text is red.

-

+
END my $counter=0; my @colorindex=("#80FF80","#80FFFF","#FFFF80"); @@ -346,14 +1120,38 @@ END my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'}; my $fdescription=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'DESCRIPTION'}; my $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'}; + my $note=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'NOTE'}; + $note.="
" if $note; + my $listing=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'FILES'}; + my @E=split(/\s+/,$listing); + $source=~/(.*)\/[^\/]+$/; + my $sd=$1; + my $eflag=0; + foreach my $e (@E) { + unless (-e "../../$sd/$e") { + $e="$e"; + $eflag=1; + } + } + $listing=join("\n",@E); + $listing="listing
$listing" if $listing; + $listing.="
" if $listing; + my $build=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'BUILD'}; + $build="build
$build" if $build; + $build.="
" if $build; + my $dependencies=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'DEPENDENCIES'}; + $dependencies="dependencies
$dependencies" if $dependencies; + $dependencies.="
" if $dependencies; unless (-e "../../$source") { $source=~/([^\/]+)$/; my $s=$1; - $source="$source"; -# my $fr=`cd ../../; find . -name $s`; -# $source.="
$fr\n"; + if ($source!~/\*/) { + $source="$source"; + } + elsif ($eflag) { + $source="$source"; + } } - my $notes=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'NOTES'}; $description.=< @@ -361,7 +1159,7 @@ END - + END }
$category$files[$i] $fdescription  $source$notes $note$listing$build$dependencies