--- loncom/build/Attic/parse.pl 2000/12/12 16:51:39 1.13 +++ loncom/build/Attic/parse.pl 2001/01/23 16:12:56 1.26 @@ -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,108 @@ 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<>setup_file_list.txt"; + print OUT "BinaryRoot/etc/hosts.deny\n"; + close OUT; + open OUT,">BinaryRoot/etc/hosts.deny"; + print OUT<>setup_file_list.txt"; + print OUT "BinaryRoot/etc/pam.d/passwd\n"; + close OUT; + open OUT,">BinaryRoot/etc/pam.d/passwd"; + print OUT<>setup_file_list.txt"; + print OUT "BinaryRoot/etc/pam.d/login\n"; + close OUT; + open OUT,">BinaryRoot/etc/pam.d/login"; + print OUT< LON-CAPA Software Description Page ($distribution, $date) @@ -578,7 +981,35 @@ http://install.lon-capa.org/compile/inde information.

END +} + else { + $description=< + +LON-CAPA Software File System Status Page ($distribution, $date) + + +LON-CAPA Software File System Status Page ($distribution, $date) +
Michigan State University +
Learning Online with CAPA +
Contact korte\@lon-capa.org +
    +
  • About this file +
  • Software Package Description +
  • Directory Structure +
  • File Type Ownership and Permissions +
  • File and Directory Structure +
+About this file +

+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 @@ -594,7 +1025,10 @@ END # ------------------------------------------------- Make RPM description block sub make_rpm_description_block { - my $description=<Rolled in a RedHat 6.2 RPM, $date

@@ -615,6 +1049,58 @@ $info{'RPM'}{'description'}

END +} + else { + my $exist=`rpm -q LON-CAPA-base 2>/dev/null`; + unless ($exist) { + $description=<No LON-CAPA RPM on the system, (installed ??????) +

+ + + +
+Error! A LON-CAPA-base RPM +was never installed on this system! +
+

+END + } + else { + chop $exist; + my $rpmname=`rpm -q --queryformat '%{NAME}' LON-CAPA-base`; + my $rpmversion=`rpm -q --queryformat '%{VERSION}' LON-CAPA-base`; + my $rpmrelease=`rpm -q --queryformat '%{RELEASE}' LON-CAPA-base`; + my $idate=`rpm -q --queryformat '%{INSTALLTIME:date}' LON-CAPA-base`; + my $rpmvendor=`rpm -q --queryformat '%{VENDOR}' LON-CAPA-base`; + my $rpmbuildhost=`rpm -q --queryformat '%{BUILDHOST}' LON-CAPA-base`; + my $rpmgroup=`rpm -q --queryformat '%{GROUP}' LON-CAPA-base`; + my $rpmlicense=`rpm -q --queryformat '%{LICENSE}' LON-CAPA-base`; + my $rpmsummary=`rpm -q --queryformat '%{SUMMARY}' LON-CAPA-base`; + my $rpmdescription=`rpm -q --queryformat '%{DESCRIPTION}' LON-CAPA-base`; + $description=<Current RedHat RPM on the system, (installed $idate) +

+ + +
+
+Name        : $rpmname
+Version     : $rpmversion
+Vendor      : $rpmvendor
+Release     : $rpmrelease
+Build Host  : $rpmbuildhost
+Group       : $rpmgroup
+License     : $rpmlicense
+Summary     : $rpmsummary
+Description : 
+$rpmdescription
+
+
+

+END +} + } return $description; } @@ -627,7 +1113,8 @@ sub determine_directory_structure { # ---------------------------------- Make directory structure description block sub make_directory_structure_description_block { - my ($dirs)=@_; + my ($dirs,$mode)=@_; + my $dirstatus; my $statusheader; my $description=<Directory Structure Description, $date

@@ -653,8 +1140,12 @@ END $maxcount=$count if $count>$maxcount; delete $diraccount{$d}; } + if ($mode eq 'status') { + $statusheader="Current Status"; + } $description.=< +$statusheader Category Permissions Development
Permissions
@@ -675,8 +1166,34 @@ END my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'}; my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'}; my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'}; + if ($mode eq 'status') { + my $ds=`find /$d -type d -prune -printf "\%m\t\%u\t\%g" 2>/dev/null`; + unless ($ds) { + $dirstatus='MISSING'; + } + else { + my @dss=split(/\t/,$ds); + my $dssz=$dss[0]; + $dssz="0" . $dss[0] if length($dss[0])<4; + $dss[0]=$dssz; + $ds="$dss[0] $dss[1]:$dss[2]"; + if ($ds eq "$chmod $chown" && $ds eq "$devchmod $devchown") { + $dirstatus='runtime+development'; + } + elsif ($ds eq "$chmod $chown") { + $dirstatus='runtime'; + } + elsif ($ds eq "$devchmod $devchown") { + $dirstatus='development'; + } + else { + $dirstatus="ERROR
$ds"; + } + } + } $description.=< +$dirstatus $category $chmod $chown $devchmod $devchown @@ -695,6 +1212,7 @@ END # ------------------- Make file type ownership and permissions description block sub make_file_type_ownership_and_permissions_description_block { + my ($mode)=@_; my $description=<File Type Ownership and Permissions Descriptions, $date

@@ -734,7 +1252,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=<Directory and File Structure Description, $date

@@ -788,8 +1307,14 @@ END END } if (@files) { + if ($mode eq 'status') { + $statusheader=<Current Status +END + } $description.=< +$statusheader Type File Name Function @@ -833,8 +1358,67 @@ END $source="$source"; } } + 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`; + } + 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'; + } + elsif ($fs eq "$chmod$s$chown") { + $filestatus='runtime'; + } + elsif ($fs eq "$devchmod$s$devchown") { + $filestatus='development'; + } + else { + $filestatus="ERROR
$fs"; + } + } + } $description.=< +$filestatus $category $category $files[$i]