Diff for /loncom/build/make_rpm.pl between versions 1.11 and 1.12

version 1.11, 2001/05/16 19:30:05 version 1.12, 2002/01/05 00:48:05
Line 1 Line 1
 #!/usr/bin/perl  #!/usr/bin/perl
   
 # Scott Harrison, September 30  # The LearningOnline Network with CAPA
 # Automatically generate RPM listing files  # make_rpm.pl - make RedHat package manager file
   #
   # $Id$
   #
   # Written by Scott Harrison, harris41@msu.edu
   #
   # Copyright Michigan State University Board of Trustees
   #
   # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   #
   # LON-CAPA is free software; you can redistribute it and/or modify
   # it under the terms of the GNU General Public License as published by
   # the Free Software Foundation; either version 2 of the License, or
   # (at your option) any later version.
   #
   # LON-CAPA is distributed in the hope that it will be useful,
   # but WITHOUT ANY WARRANTY; without even the implied warranty of
   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   # GNU General Public License for more details.
   #
   # You should have received a copy of the GNU General Public License
   # along with LON-CAPA; if not, write to the Free Software
   # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   #
   # /home/httpd/html/adm/gpl.txt
   #
   # http://www.lon-capa.org/
   #
   # YEAR=2000
   # 9/30,10/2,12/11,12/12,12/21 - Scott Harrison
   # YEAR=2001
   # 1/8,1/10,1/13,1/23,5/16 - Scott Harrison
   # YEAR=2002
   # 1/4 - Scott Harrison
   #
   ###
   
   # Automatically generate RPM files
 # from file listing.  # from file listing.
   
 # This script does actually "build" the RPM.  # This script does actually "build" the RPM.
Line 24 Line 61
   
 unless (-e "/usr/lib/rpm/rpmrc") {  unless (-e "/usr/lib/rpm/rpmrc") {
     print <<END;      print <<END;
 ERROR: This script only works with a properly installed RPM builder application.    ERROR: This script only works with a properly installed RPM builder
   application.  
 Cannot find /usr/lib/rpm/rpmrc, so cannot generate customized rpmrc file.  Cannot find /usr/lib/rpm/rpmrc, so cannot generate customized rpmrc file.
 Script aborting.  Script aborting.
 END  END
Line 34  my ($tag,$version,$configuration_files,$ Line 72  my ($tag,$version,$configuration_files,$
 @ARGV=();  @ARGV=();
   
 if (!$version) {  if (!$version) {
     print "Usage: <TAG> <VERSION> [CONFIGURATION_FILES] [DOCUMENTATION] [PATHPREFIX]\n";      print "Usage: <TAG> <VERSION> [CONFIGURATION_FILES] [DOCUMENTATION] ".
    "[PATHPREFIX]\n";
     print "Standard input provides the list of files to work with.\n";      print "Standard input provides the list of files to work with.\n";
     print "TAG, required descriptive tag.  For example, a kerberos software package might be tagged as \"krb4\".\n";      print "TAG, required descriptive tag.  For example, a kerberos software ".
     print "VERSION, required version.  Needed to generate version information for the RPM.  This should be in the format N.M where N and M are integers.\n";   "package might be tagged as \"krb4\".\n";
     print "CONFIGURATION_FILES, optional comma-separated listing of files to be treated as configuration files by RPM (and thus subject to saving during RPM upgrades).\n";      print "VERSION, required version.  Needed to generate version information".
     print "DOCUMENTATION, optional comma-separated listing of files to be treated as documentation files by RPM (and thus subject to being placed in the /usr/doc/RPM-NAME directory during RPM installation).\n";   " for the RPM.  This should be in the format N.M where N and M are ".
     print "PATHPREFIX, optional path to be removed from file listing.  This is in case you are building an RPM from files elsewhere than root-level.  Note, this still depends on a root directory hierarchy after PATHPREFIX.\n";   "integers.\n";
       print "CONFIGURATION_FILES, optional comma-separated listing of files to ".
    "be treated as configuration files by RPM (and thus subject to saving".
    " during RPM upgrades).\n";
       print "DOCUMENTATION, optional comma-separated listing of files to be ".
    "treated as documentation files by RPM (and thus subject to being ".
    "placed in the /usr/doc/RPM-NAME directory during RPM installation).".
    "\n";
       print "PATHPREFIX, optional path to be removed from file listing.  This ".
    "is in case you are building an RPM from files elsewhere than ".
    "root-level.  Note, this still depends on a root directory hierarchy ".
    "after PATHPREFIX.\n";
     exit;      exit;
 }  }
   
Line 58  my $file; Line 108  my $file;
 my $binaryroot="$tag/BinaryRoot";  my $binaryroot="$tag/BinaryRoot";
 my ($type,$size,$octalmode,$user,$group);  my ($type,$size,$octalmode,$user,$group);
   
 $currentdir=`pwd`; chop $currentdir; $invokingdir=$currentdir; $currentdir.="/$tag";  $currentdir=`pwd`; chop $currentdir; $invokingdir=$currentdir;
   $currentdir.="/$tag";
   
 open (IN,"</usr/lib/rpm/rpmrc") or die("Can't open /usr/lib/rpm/rpmrc");  open (IN,"</usr/lib/rpm/rpmrc") or die("Can't open /usr/lib/rpm/rpmrc");
 @lines=<IN>;  @lines=<IN>;
Line 245  END Line 296  END
 }  }
 open (SPEC,">$tag/SPECS/LON-CAPA-$tag-$version.spec");  open (SPEC,">$tag/SPECS/LON-CAPA-$tag-$version.spec");
   
   my $vendor='Laboratory for Instructional Technology Education, Division of '.
       'Science and Mathematics Education, Michigan State University.';
   
 print SPEC <<END;  print SPEC <<END;
 Summary: Files for the $tag component of LON-CAPA.  Summary: Files for the $tag component of LON-CAPA.
 Name: LON-CAPA-$tag  Name: LON-CAPA-$tag
 Version: $version  Version: $version
 Release: 1  Release: 1
 Vendor: Laboratory for Instructional Technology Education, Division of Science and Mathematics Education, Michigan State University.  Vendor: $vendor
 BuildRoot: $currentdir/BuildRoot  BuildRoot: $currentdir/BuildRoot
 Copyright: Michigan State University patents may apply.  Copyright: Michigan State University patents may apply.
 Group: Utilities/System  Group: Utilities/System
Line 316  foreach $file (<>) { Line 370  foreach $file (<>) {
     $file=~s/^$pathprefix//;      $file=~s/^$pathprefix//;
  }   }
  if ($type eq "files") {   if ($type eq "files") {
     push @{$BinaryRootMakefile{$type}},"\tinstall -D -m $octalmode $pathprefix$file $binaryroot$file\n";      push @{$BinaryRootMakefile{$type}},"\tinstall -D -m $octalmode ".
     push @{$Makefile{$type}},"\tinstall -D -m $octalmode \$(SOURCE)$file \$(ROOT)$file\n";   "$pathprefix$file $binaryroot$file\n";
     push @{$dotspecfile{$type}},"$config\%attr($octalmode,$user,$group) $file\n";      push @{$Makefile{$type}},"\tinstall -D -m $octalmode ".
    "\$(SOURCE)$file \$(ROOT)$file\n";
       push @{$dotspecfile{$type}},"$config\%attr($octalmode,$user,".
    "$group) $file\n";
  }   }
  elsif ($type eq "directories") {   elsif ($type eq "directories") {
     push @{$BinaryRootMakefile{$type}},"\tinstall -m $octalmode -d $binaryroot$file\n";      push @{$BinaryRootMakefile{$type}},"\tinstall -m $octalmode -d ".
     push @{$Makefile{$type}},"\tinstall -m $octalmode -d \$(SOURCE)$file \$(ROOT)$file\n";   "$binaryroot$file\n";
     push @{$dotspecfile{$type}},"\%dir \%attr($octalmode,$user,$group) $file\n";      push @{$Makefile{$type}},"\tinstall -m $octalmode -d ".
    "\$(SOURCE)$file \$(ROOT)$file\n";
       push @{$dotspecfile{$type}},"\%dir \%attr($octalmode,$user,".
    "$group) $file\n";
  }   }
  elsif ($type eq "links") {   elsif ($type eq "links") {
     my $link=$size; # I use the size variable to pass the link value from the subroutine find_info      my $link=$size; # I use the size variable to pass the link value
                               # from the subroutine find_info
     $link=~s/^$pathprefix//;      $link=~s/^$pathprefix//;
     push @{$BinaryRootMakefile{$type}},"\tln -s $link $binaryroot$file\n";      push @{$BinaryRootMakefile{$type}},
            "\tln -s $link $binaryroot$file\n";
     push @{$Makefile{$type}},"\tln -s $link \$(ROOT)$file\n";      push @{$Makefile{$type}},"\tln -s $link \$(ROOT)$file\n";
     push @{$dotspecfile{$type}},"\%attr(-,$user,$group) $file\n";      push @{$dotspecfile{$type}},"\%attr(-,$user,$group) $file\n";
  }   }
Line 356  close SPEC; Line 418  close SPEC;
 `make -f $tag/BinaryRootMakefile files`;  `make -f $tag/BinaryRootMakefile files`;
 `make -f $tag/BinaryRootMakefile links`;  `make -f $tag/BinaryRootMakefile links`;
   
 print `cd $currentdir/SOURCES; tar czvf LON-CAPA-$tag-$version.tar.gz LON-CAPA-$tag-$version`;  my $command="cd $currentdir/SOURCES; tar czvf LON-CAPA-$tag-$version.tar.gz ".
 print `cd $currentdir/SPECS; rpm --rcfile=./rpmrc -ba LON-CAPA-$tag-$version.spec; cd ../RPMS/i386; cp LON-CAPA-$tag-$version-1.i386.rpm $invokingdir/.`;      "LON-CAPA-$tag-$version";
   print `$command`;
   $command="cd $currentdir/SPECS; rpm --rcfile=./rpmrc -ba ".
       "LON-CAPA-$tag-$version.spec; cd ../RPMS/i386; cp ".
       "LON-CAPA-$tag-$version-1.i386.rpm $invokingdir/.";
   print `$command`;
 print `cd $invokingdir; rm -Rf $tag`;  print `cd $invokingdir; rm -Rf $tag`;
   
 sub find_info {  sub find_info {

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


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