version 1.9, 2000/12/10 04:15:23
|
version 1.13, 2000/12/12 16:51:39
|
Line 65 while ($info1=~/\<loncapa\s+(.*?)\>/isg)
|
Line 65 while ($info1=~/\<loncapa\s+(.*?)\>/isg)
|
} |
} |
elsif (uc($hash{'TYPE'}) eq "LOCATION") { |
elsif (uc($hash{'TYPE'}) eq "LOCATION") { |
$info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'CATEGORY'}= $hash{'CATEGORY'}; |
$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'}; |
$info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'SOURCE'}= $hash{'SOURCE'}; |
# get surrounding metagroup information |
# get surrounding metagroup information |
my $ckeystring=$keystring; $ckeystring=~s/(SOURCE\=\"[^"]*)\*/$1\\\*/g; |
my $ckeystring=$keystring; $ckeystring=~s/(SOURCE\=\"[^"]*)\*/$1\\\*/g; |
Line 85 while ($info1=~/\<loncapa\s+(.*?)\>/isg)
|
Line 86 while ($info1=~/\<loncapa\s+(.*?)\>/isg)
|
} |
} |
} |
} |
|
|
if ($mode eq "ALL" || $mode eq "HTML") { |
my $a; |
my $a; |
my @directories; |
|
if ($mode eq "HTML") { |
$a=&begin_description_page; |
$a=&begin_description_page; |
print $a; |
print $a; |
$a=&make_rpm_description_block; |
$a=&make_rpm_description_block; |
Line 101 if ($mode eq "ALL" || $mode eq "HTML") {
|
Line 103 if ($mode eq "ALL" || $mode eq "HTML") {
|
$a=&end_description_page; |
$a=&end_description_page; |
print $a; |
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_install_segment(\@directories); |
|
print $a; |
|
$a=&make_files_install_segment(\@directories); |
|
print $a; |
|
$a=&make_links_install_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 "freshinstall") { |
|
} |
|
|
|
# ------------------------------------------------------ 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.=<<END; |
|
$rot |
|
END |
|
} |
|
} |
|
} |
|
$description.=<<END; |
|
|
|
END |
|
return $description; |
|
} |
|
|
|
# --------------------------------- Commands to make BinaryRoot directories |
|
sub make_directory_binaryroot_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 \$(TARGET)/$d |
|
END |
|
} |
|
$description.=<<END; |
|
|
|
END |
|
return $description; |
|
} |
|
|
# ------------------------------------------------- Begin description page |
# --------------------------------------- Commands to make BinaryRoot files |
|
sub make_files_binaryroot_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 $source=$info{'LOCATION'}{$distribution}{$filesfull[$i]}{'SOURCE'}; |
|
my $rot=$filesfull[$i]; |
|
$rot=~s/[^\/]+$/\./ if $rot=~/\*/; |
|
$description.=<<END if $category ne 'symbolic link'; |
|
\tinstall -m $devchmod \$(SOURCE)/$source \$(TARGET)/$rot |
|
END |
|
} |
|
} |
|
} |
|
$description.=<<END; |
|
|
|
END |
|
return $description; |
|
} |
|
|
|
# ------------------------------ Commands to make BinaryRoot symbolic links |
|
sub make_links_binaryroot_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 \$(TARGET)/$filesfull[$i] |
|
END |
|
} |
|
} |
|
} |
|
$description.=<<END; |
|
|
|
END |
|
return $description; |
|
} |
|
|
|
# --------------------------------- Installation commands to install directories |
|
sub make_directory_install_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 to install files |
|
sub make_files_install_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 to install symbolic links |
|
sub make_links_install_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; |
|
} |
|
|
|
# --------------------------------------------------------- Make RPM .spec block |
|
sub make_rpm_spec_block { |
|
my $pwd=`pwd`; chop $pwd; |
|
my $buildroot="$pwd/LON-CAPA-BuildRoot"; |
|
my $source=$info{'RPM'}{'Name'} . "-" . $info{'RPM'}{'Version'} . '.tar.gz'; |
|
my $description=<<END; |
|
Summary: $info{'RPM'}{'Summary'} |
|
Name: $info{'RPM'}{'Name'} |
|
Version: $info{'RPM'}{'Version'} |
|
Release: $info{'RPM'}{'Release'} |
|
Vendor: $info{'RPM'}{'Vendor'} |
|
BuildRoot: $buildroot |
|
Copyright: $info{'RPM'}{'Copyright'} |
|
Group: $info{'RPM'}{'Group'} |
|
Source: $source |
|
AutoReqProv: $info{'RPM'}{'AutoReqProv'} |
|
\%description |
|
$info{'RPM'}{'description'} |
|
|
|
END |
|
return $description; |
|
} |
|
|
|
# --------------------------------------------------- Make RPM build .spec block |
|
sub make_rpm_build_block { |
|
my $pwd=`pwd`; chop $pwd; |
|
my $buildroot="$pwd/LON-CAPA-BuildRoot"; |
|
my $sourceroot="$pwd/LON-CAPA-SourceRoot"; |
|
my $description=<<END; |
|
|
|
\%prep |
|
\%setup |
|
|
|
\%build |
|
rm -Rf "$buildroot" |
|
|
|
\%install |
|
make -f LCMakefile ROOT="\$RPM_BUILD_ROOT" SOURCE="$sourceroot" directories |
|
make -f LCMakefile ROOT="\$RPM_BUILD_ROOT" SOURCE="$sourceroot" files |
|
make -f LCMakefile ROOT="\$RPM_BUILD_ROOT" SOURCE="$sourceroot" links |
|
|
|
\%pre |
|
$info{'RPM'}{'pre'} |
|
|
|
\%post |
|
\%postun |
|
|
|
\%files |
|
# \%doc README COPYING ChangeLog LICENSE |
|
END |
|
return $description; |
|
} |
|
|
|
# ------------------------------------- Make directory structure RPM .spec block |
|
sub make_directory_structure_spec_block { |
|
my ($dirs)=@_; |
|
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; |
|
\%dir \%attr($devchmod,$own) /$d |
|
END |
|
} |
|
return $description; |
|
} |
|
|
|
# ---------------------------- Make directory and file structure RPM .spec block |
|
sub make_directory_and_file_structure_spec_block { |
|
my ($dirs)=@_; |
|
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; |
|
# $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 $own=$devchown; $own=~s/\:/\,/; |
|
my $config=""; |
|
$config="\%config " if $category eq 'conf'; |
|
$devchmod='-' if $category eq 'symbolic link'; |
|
$description.=<<END; |
|
$config\%attr($devchmod,$own) /$filesfull[$i] |
|
END |
|
} |
|
} |
|
} |
|
return $description; |
|
} |
|
|
|
# ----------------------------------------------------------- End RPM .spec page |
|
sub end_spec_page { |
|
} |
|
|
|
# ------------------------------------------------------- Begin description page |
sub begin_description_page { |
sub begin_description_page { |
my $description=<<END; |
my $description=<<END; |
<HTML> |
<HTML> |
Line 160 Group : $info{'RPM'}{'Group'}
|
Line 609 Group : $info{'RPM'}{'Group'}
|
License : $info{'RPM'}{'Copyright'} |
License : $info{'RPM'}{'Copyright'} |
Summary : $info{'RPM'}{'Summary'} |
Summary : $info{'RPM'}{'Summary'} |
Description : |
Description : |
<PRE> |
|
$info{'RPM'}{'description'} |
$info{'RPM'}{'description'} |
</PRE> |
</PRE> |
</TD></TR> |
</TD></TR> |