--- loncom/build/Attic/parse.pl 2000/12/11 18:35:14 1.11
+++ loncom/build/Attic/parse.pl 2001/02/27 14:18:46 1.29
@@ -121,11 +121,11 @@ elsif ($mode eq "SPEC") {
}
elsif ($mode eq "LCMakefile") {
@directories=&determine_directory_structure;
- $a=&make_directory_install_segment(\@directories);
+ $a=&make_directory_LCMakefile_segment(\@directories);
print $a;
- $a=&make_files_install_segment(\@directories);
+ $a=&make_files_LCMakefile_segment(\@directories);
print $a;
- $a=&make_links_install_segment(\@directories);
+ $a=&make_links_LCMakefile_segment(\@directories);
print $a;
}
elsif ($mode eq "BinaryRoot") {
@@ -146,13 +146,111 @@ elsif ($mode eq "BinaryRoot") {
$a=&make_file_list(\@directories);
print OUT $a;
close OUT;
+ open OUT,">setup_file_list.txt";
+ print OUT "BinaryRoot/etc/passwd\n";
+ close OUT;
+ open OUT,">BinaryRoot/etc/passwd";
+ print OUT<
+This file is generated dynamically by parse.pl as +part of a status checking process. See http://install.lon-capa.org/ +for more information. +
+END + } return $description; + } # ------------------------------------------------- End description page @@ -587,7 +1028,10 @@ END # ------------------------------------------------- Make RPM description block sub make_rpm_description_block { - my $description=<
+
+Error! A LON-CAPA-base RPM +was never installed on this system! + |
+
++Name : $rpmname +Version : $rpmversion +Vendor : $rpmvendor +Release : $rpmrelease +Build Host : $rpmbuildhost +Group : $rpmgroup +License : $rpmlicense +Summary : $rpmsummary +Description : +$rpmdescription ++ |
@@ -646,8 +1143,12 @@ END $maxcount=$count if $count>$maxcount; delete $diraccount{$d}; } + if ($mode eq 'status') { + $statusheader="
@@ -727,7 +1255,8 @@ END
# ------------------------- Make directory and file structure description block
sub make_directory_and_file_structure_description_block {
- my ($dirs)=@_;
+ my ($dirs,$mode)=@_;
+ my $statusheader; my $filestatus;
my $description=<
@@ -781,8 +1310,14 @@ END
END
}
if (@files) {
+ if ($mode eq 'status') {
+ $statusheader=< The server encountered an internal error or
misconfiguration and was unable to complete
your request. Please contact the server administrator at
root@localhost to inform them of the time this error occurred,
and the actions you performed just before this error. More information about this error may be available
in the server error log.Type
File Name
Function
@@ -794,6 +1329,7 @@ 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 $source2=$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'};
@@ -826,8 +1362,80 @@ END
$source="$source";
}
}
+ my $checksum;
+ my $checksum_source;
+ my $checksum_target;
+ if ($mode eq 'status') {
+ $filestatus='';
+ my $fs;
+ my $listing2=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'FILES'};
+ my @E=split(/\s+/,$listing2); shift @E;
+ if (@E) {
+ $fs=`find /$filesfull[$i] -prune -printf "\%m\t\%u\t\%g\n" 2>/dev/null | wc -l`; chop $fs;
+ if ($fs!=(@E+0)) {
+ $ecount=(@E+0);
+ $estuff=join(",",@E);
+ $filestatus="ERROR. SOME FILES ARE MISSING ";
+ }
+ $fs=`find /$filesfull[$i] -prune -printf "\%m\t\%u\t\%g\n" 2>/dev/null | sort | uniq | wc -l`; chop $fs;
+ if ($fs!=1) {
+ $filestatus='ERROR. THERE ARE MULTIPLE OWNERSHIPS/PERMISSIONS WHEN ALL THESE FILES SHOULD HAVE THE SAME CONFIGURATION ';
+ }
+ else {
+ $fs=`find /$filesfull[$i] -prune -printf "\%m\t\%u\t\%g\n" 2>/dev/null | sort | uniq`; chop $fs;
+ }
+ }
+ else {
+ $fs=`find /$filesfull[$i] -prune -printf "\%m\t\%u\t\%g" 2>/dev/null`;
+ if (-f "/$filesfull[$i]" && !(-l "/$filesfull[$i]")) {
+ $checksum_source=`md5sum ../../$source2 | cut -d ' ' -f1`;
+ chop $checksum_source;
+ $checksum_target=`md5sum /$filesfull[$i] | cut -d ' ' -f1`;
+ chop $checksum_target;
+# warn ("CS: $checksum_source, CT: $checksum_target\n");
+ unless ($checksum_source eq $checksum_target) {
+ $checksum="
CHECKSUM DIFFERENCE";
+ }
+ }
+ }
+ my $fsl=`find /$filesfull[$i] -type l -prune -printf "\%m\t\%u\t\%g" 2>/dev/null`;
+ unless ($fs || $filestatus) {
+ $filestatus='MISSING ';
+ }
+ elsif (!$filestatus) {
+
+ $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'};
+ $chown=$info{'OWNERSHIP'}{$category}{'CHOWN'};
+ $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'};
+ $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'};
+
+ my @fss=split(/\t/,$fs);
+ my $fssz=$fss[0];
+ $fssz="0" . $fss[0] if length($fss[0])<4;
+ $fss[0]=$fssz;
+ $fs="$fss[0] $fss[1]:$fss[2]";
+ $s=' ';
+ if ($fsl) {
+ $fs="$fss[1]:$fss[2]";
+ $s='';
+ }
+ if ($fs eq "$chmod$s$chown" && $fs eq "$devchmod$s$devchown") {
+ $filestatus="runtime+development$checksum ";
+ }
+ elsif ($fs eq "$chmod$s$chown") {
+ $filestatus="runtime$checksum ";
+ }
+ elsif ($fs eq "$devchmod$s$devchown") {
+ $filestatus="development$checksum ";
+ }
+ else {
+ $filestatus="ERROR ";
+ }
+ }
+ }
$description.=<
$fs$category
$files[$i]
Internal Server Error