Diff for /loncom/build/Attic/parse.pl between versions 1.11 and 1.19

version 1.11, 2000/12/11 18:35:14 version 1.19, 2000/12/21 14:45:36
Line 121  elsif ($mode eq "SPEC") { Line 121  elsif ($mode eq "SPEC") {
 }  }
 elsif ($mode eq "LCMakefile") {  elsif ($mode eq "LCMakefile") {
     @directories=&determine_directory_structure;      @directories=&determine_directory_structure;
     $a=&make_directory_install_segment(\@directories);      $a=&make_directory_LCMakefile_segment(\@directories);
     print $a;      print $a;
     $a=&make_files_install_segment(\@directories);      $a=&make_files_LCMakefile_segment(\@directories);
     print $a;      print $a;
     $a=&make_links_install_segment(\@directories);      $a=&make_links_LCMakefile_segment(\@directories);
     print $a;      print $a;
 }  }
 elsif ($mode eq "BinaryRoot") {  elsif ($mode eq "BinaryRoot") {
Line 152  elsif ($mode eq "status") { Line 152  elsif ($mode eq "status") {
 }  }
 elsif ($mode eq "update") {  elsif ($mode eq "update") {
 }  }
 elsif ($mode eq "freshinstall") {  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  # ------------------------------------------------------ a list of file targets
Line 162  sub make_file_list { Line 181  sub make_file_list {
     my @allfiles=keys %{$info{'LOCATION'}{$distribution}};      my @allfiles=keys %{$info{'LOCATION'}{$distribution}};
     foreach my $d (@$dirs) {      foreach my $d (@$dirs) {
  # set other values   # set other values
    $description.=<<END;
   BinaryRoot/$d
   END
  my $dirdescription=$info{'DIRECTORY'}{$distribution}{$d}{'DESCRIPTION'};   my $dirdescription=$info{'DIRECTORY'}{$distribution}{$d}{'DESCRIPTION'};
  $dirdescription="(" . $dirdescription . ")" if $dirdescription;   $dirdescription="(" . $dirdescription . ")" if $dirdescription;
  # find files that are contained in this directory   # find files that are contained in this directory
Line 176  sub make_file_list { Line 198  sub make_file_list {
  # render starting HTML formatting elements   # render starting HTML formatting elements
  if (@files) {   if (@files) {
         }          }
    my $pwd=`pwd`; chop $pwd;
  if (@files) {   if (@files) {
             foreach my $i (0..$#files) {              foreach my $i (0..$#files) {
  my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'};   my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'};
Line 193  sub make_file_list { Line 216  sub make_file_list {
     my $rot2;      my $rot2;
     foreach my $l (@list) {      foreach my $l (@list) {
  $l=~s/^\s*//; $l=~s/\s*$//;   $l=~s/^\s*//; $l=~s/\s*$//;
  $rot2.="$rot$l\n" if length($l);   $rot2.="BinaryRoot$rot$l\n" if length($l);
     }      }
     chop $rot2;      chop $rot2;
     $rot=$rot2;      $rot=$rot2;
  }   }
    else {
       $rot="BinaryRoot$rot";
    }
    if ($category eq "conf") {
       $rot.=" # config";
    }
  $description.=<<END;   $description.=<<END;
 $rot  $rot
 END  END
Line 319  END Line 348  END
     return $description;      return $description;
 }  }
   
   # ------ Installation commands for a Makefile used only by a rpm -ba invocation
   sub make_directory_LCMakefile_segment {
       my ($dirs)=@_;
       my $description=<<END;
   directories:
   END
       foreach my $d (@$dirs) {
    my $category=$info{'DIRECTORY'}{$distribution}{$d}{'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 $own=$devchown; $own=~s/\:/\,/;
    $description.=<<END;
   \tinstall -m $devchmod -d \$(SOURCE)/$d \$(ROOT)/$d
   END
       }
       $description.=<<END;
   
   END
       return $description;
   }
   
   # ------ Installation commands for a Makefile used only by a rpm -ba invocation
   sub make_files_LCMakefile_segment {
       my ($dirs)=@_;
       my $description=<<END;
   files:
   END
       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) {
       $description.=<<END;
   \t# $d $dirdescription
   END
           }
    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 $rot=$filesfull[$i];
    $rot=~s/[^\/]+$/\./ if $rot=~/\*/;
    $description.=<<END if $category ne 'symbolic link';
   \tinstall -m $devchmod \$(SOURCE)/$filesfull[$i] \$(ROOT)/$rot
   END
       }
    }
       }
       $description.=<<END;
   
   END
       return $description;
   }
   
   # ------ Installation commands for a Makefile used only by a rpm -ba invocation
   sub make_links_LCMakefile_segment {
       my ($dirs)=@_;
       my $description=<<END;
   links:
   END
       my @allfiles=keys %{$info{'LOCATION'}{$distribution}};
       foreach my $d (@$dirs) {
    # 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) {
               foreach my $i (0..$#files) {
    my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'};
    my $linkto=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'LINKTO'};
    my $chown=$info{'OWNERSHIP'}{$category}{'CHOWN'};
    my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'};
    my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'};
    my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'};
    $description.=<<END if $category eq 'symbolic link';
   \tln -s /$linkto \$(ROOT)/$filesfull[$i]
   END
       }
    }
       }
       $description.=<<END;
   
   END
       return $description;
   }
   
 # --------------------------------- Installation commands to install directories  # --------------------------------- Installation commands to install directories
 sub make_directory_install_segment {  sub make_directory_install_segment {
     my ($dirs)=@_;      my ($dirs)=@_;
Line 327  directories: Line 464  directories:
 END  END
     foreach my $d (@$dirs) {      foreach my $d (@$dirs) {
  my $category=$info{'DIRECTORY'}{$distribution}{$d}{'CATEGORY'};   my $category=$info{'DIRECTORY'}{$distribution}{$d}{'CATEGORY'};
    my $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'};
  my $chown=$info{'OWNERSHIP'}{$category}{'CHOWN'};   my $chown=$info{'OWNERSHIP'}{$category}{'CHOWN'};
  my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'};   my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'};
  my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'};   my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'};
  my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'};   my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'};
    my ($owner,$group)=split(/\:/,$devchown);
  my $own=$devchown; $own=~s/\:/\,/;   my $own=$devchown; $own=~s/\:/\,/;
  $description.=<<END;   $description.=<<END;
 \tinstall -m $devchmod -d \$(SOURCE)/$d \$(ROOT)/$d  \tinstall -o $owner -g $group -m $devchmod -d \$(TARGET)/$d
 END  END
     }      }
     $description.=<<END;      $description.=<<END;
Line 342  END Line 481  END
     return $description;      return $description;
 }  }
   
   # ------------------------------------------------------ Commands to build files
   sub make_files_build_segment {
       my ($dirs)=@_;
       my $description;
       my @allfiles=keys %{$info{'LOCATION'}{$distribution}};
       my $tab="\t";
       my $sources="all: ";
       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;
       }
    }
    if (@files) {
               foreach my $i (0..$#files) {
    # if has build information, output appropriate something
    my $build=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'BUILD'};
    my $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'};
    $build=~s/^\s+//; $build=~s/\s+$//;
    if ($build) {
       my $dependencies=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'DEPENDENCIES'};
       my $source2=$source;
       $source2=~s/^[^\/]+\///;
        $source2="../" . $source2;
       $sources.="$source2 ";
       my $directory=$build;
       $directory=~s/^[^\/]+\///;
       $directory=~s/([^\/]+)$//;
        $directory="../" . $directory;
       my $buildfile=$1;
       my $sdir=$source;
       $sdir=~s/^[^\/]+\///;
       $sdir=~s/([^\/]+)$//;
        $sdir="../" . $sdir;
       $dependencies=~s/\s+$//;
       my $depstat="";
       if ($dependencies=~s/\s+\[ALWAYS_RUN_BUILD_COMMAND\]//) {
    $depstat=" alwaysrun";
       }
       $dependencies=~s/\s+/ $sdir/gs;
       $description.=<<END;
   $source2: $dependencies$depstat
   ${tab}cd $directory; sh ./$buildfile
   
   END
    }
    my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'};
    my $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'};
    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 $rot=$filesfull[$i];
    $rot=~s/[^\/]+$/\./ if $rot=~/\*/;
   # $description.=<<END if $category ne 'symbolic link';
   #\tinstall -o $owner -g $group -m $devchmod \$(SOURCE)/$source \$(TARGET)/$rot
   #END
       }
    }
       }
       $description.=<<END;
   alwaysrun:
   
   END
       $sources.="\n\n";
       return ($sources . $description);
   }
   
 # --------------------------------------- Installation commands to install files  # --------------------------------------- Installation commands to install files
 sub make_files_install_segment {  sub make_files_install_segment {
     my ($dirs)=@_;      my ($dirs)=@_;
Line 371  END Line 585  END
  if (@files) {   if (@files) {
             foreach my $i (0..$#files) {              foreach my $i (0..$#files) {
  my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'};   my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'};
    my $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'};
  my $chown=$info{'OWNERSHIP'}{$category}{'CHOWN'};   my $chown=$info{'OWNERSHIP'}{$category}{'CHOWN'};
  my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'};   my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'};
  my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'};   my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'};
  my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'};   my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'};
  my $rot=$filesfull[$i];   my $rot=$filesfull[$i];
  $rot=~s/[^\/]+$/\./ if $rot=~/\*/;   $rot=~s/[^\/]+$/\./ if $rot=~/\*/;
  $description.=<<END if $category ne 'symbolic link';   my ($owner,$group)=split(/\:/,$devchown);
 \tinstall -m $devchmod \$(SOURCE)/$filesfull[$i] \$(ROOT)/$rot   if ($category ne 'conf') {
       $description.=<<END if $category ne 'symbolic link';
   \tinstall -o $owner -g $group -m $devchmod \$(SOURCE)/$source \$(TARGET)/$rot
   END
                   }
       }
    }
       }
       $description.=<<END;
   
   END
       return $description;
   }
   
   # ------ Installation commands to install configuration files (and make backups)
   sub make_files_configinstall_segment {
       my ($dirs)=@_;
       my $description=<<END;
   configfiles:
   END
       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) {
       $description.=<<END;
   \t# $d $dirdescription
   END
           }
    if (@files) {
               foreach my $i (0..$#files) {
    my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'};
    my $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'};
    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 $rot=$filesfull[$i];
    $rot=~s/[^\/]+$/\./ if $rot=~/\*/;
    my ($owner,$group)=split(/\:/,$devchown);
    if ($category eq 'conf') {
       $description.=<<END;
   \tinstall -b -S `date +'.\%Y\%m\%d\%H\%M\%S'` -o $owner -g $group -m $devchmod \$(SOURCE)/$source \$(TARGET)/$rot
   END
                   }
       }
    }
       }
       $description.=<<END;
   
   END
       return $description;
   }
   
   # ------ Commands to enforce configuration file permissions
   sub make_files_configpermissions_segment {
       my ($dirs)=@_;
       my $description=<<END;
   configpermissions:
   END
       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) {
       $description.=<<END;
   \t# $d $dirdescription
 END  END
           }
    if (@files) {
               foreach my $i (0..$#files) {
    my $category=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'CATEGORY'};
    my $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'};
    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 $rot=$filesfull[$i];
    $rot=~s/[^\/]+$/\./ if $rot=~/\*/;
    my ($owner,$group)=split(/\:/,$devchown);
    if ($category eq 'conf') {
       $description.=<<END;
   \tchmod $devchmod \$(TARGET)/$rot
   \tchown $devchown \$(TARGET)/$rot
   END
                   }
     }      }
  }   }
     }      }
Line 395  sub make_links_install_segment { Line 716  sub make_links_install_segment {
     my $description=<<END;      my $description=<<END;
 links:  links:
 END  END
       chop $description;
       my $description2;
     my @allfiles=keys %{$info{'LOCATION'}{$distribution}};      my @allfiles=keys %{$info{'LOCATION'}{$distribution}};
     foreach my $d (@$dirs) {      foreach my $d (@$dirs) {
  # find files that are contained in this directory   # find files that are contained in this directory
Line 415  END Line 738  END
  my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'};   my $chmod=$info{'OWNERSHIP'}{$category}{'CHMOD'};
  my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'};   my $devchown=$info{'DEVOWNERSHIP'}{$category}{'CHOWN'};
  my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'};   my $devchmod=$info{'DEVOWNERSHIP'}{$category}{'CHMOD'};
  $description.=<<END if $category eq 'symbolic link';   if ($category eq 'symbolic link') {
 \tln -s /$linkto \$(ROOT)/$filesfull[$i]      $description.=" \$(TARGET)/$filesfull[$i]";
       $description2.=<<END;
   \$(TARGET)/$filesfull[$i]:
   \tln -s /$linkto \$(TARGET)/$filesfull[$i]
   
 END  END
                   }
     }      }
  }   }
     }      }
     $description.=<<END;      $description.=<<END;
   
 END  END
       $description.=$description2;
     return $description;      return $description;
 }  }
   

Removed from v.1.11  
changed lines
  Added in v.1.19


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