version 1.20, 2002/07/03 21:17:56
|
version 1.21, 2002/12/18 17:56:34
|
Line 14
|
Line 14
|
# |
# |
# Copyright Michigan State University Board of Trustees |
# Copyright Michigan State University Board of Trustees |
# |
# |
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
# This file was written to help the LearningOnline Network with CAPA (LON-CAPA) |
|
# project. |
# |
# |
# LON-CAPA is free software; you can redistribute it and/or modify |
# 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 |
# it under the terms of the GNU General Public License as published by |
Line 37
|
Line 38
|
# YEAR=2001 |
# YEAR=2001 |
# 1/8,1/10,1/13,1/23,5/16 - Scott Harrison |
# 1/8,1/10,1/13,1/23,5/16 - Scott Harrison |
# YEAR=2002 |
# YEAR=2002 |
# 1/4,1/8,1/9,2/13,4/7 - Scott Harrison |
# 1/4,1/8,1/9,2/13,4/7,12/18 - Scott Harrison |
# |
# |
### |
### |
|
|
Line 68
|
Line 69
|
## ## |
## ## |
############################################################################### |
############################################################################### |
|
|
|
my $VERSION = 2.0; |
|
|
use strict; |
use strict; |
|
|
# ------------------------ Check to see if RPM builder application is available |
# ------------------------ Check to see if RPM builder application is available |
|
|
unless (-e '/usr/lib/rpm/rpmrc') { # part of the expected rpm software package |
unless (-e '/usr/lib/rpm/rpmrc') # part of the expected rpm software package |
|
{ |
print(<<END); |
print(<<END); |
**** ERROR **** This script only works with a properly installed RPM builder |
**** ERROR **** This script only works with a properly installed RPM builder |
application. |
application. |
Line 80 Cannot find /usr/lib/rpm/rpmrc, so canno
|
Line 84 Cannot find /usr/lib/rpm/rpmrc, so canno
|
Script aborting. |
Script aborting. |
END |
END |
exit(1); |
exit(1); |
} |
} |
|
|
# ---------------------------------------------- Read in command-line arguments |
# ---------------------------------------------- Read in command-line arguments |
|
|
my ($tag,$version,$configuration_files,$documentation_files, |
my ($tag,$version,$release,$configuration_files,$documentation_files, |
$pathprefix,$customize)=@ARGV; |
$pathprefix,$customize)=@ARGV; |
@ARGV=(); # read standard input based on a pipe, not a command-line argument |
@ARGV=(); # read standard input based on a pipe, not a command-line argument |
|
|
# standardize pathprefix argument |
# standardize pathprefix argument |
$pathprefix=~s/\/$//; # OTHERWISE THE BEGINNING SLASH MIGHT BE REMOVED |
$pathprefix=~s/\/$//; # OTHERWISE THE BEGINNING SLASH MIGHT BE REMOVED |
|
|
if (!$version) {# version should be defined and string length greater than zero |
if (!$version) # version should be defined and string length greater than zero |
|
{ |
print(<<END); |
print(<<END); |
See "perldoc make_rpm.pl" for more information. |
See "perldoc make_rpm.pl" for more information. |
|
|
Usage: |
Usage: |
<STDIN> | perl make_rpm.pl <TAG> <VERSION> [CONFIGURATION_FILES] |
<STDIN> | perl make_rpm.pl <TAG> <VERSION> <RELEASE> |
[DOCUMENTATION_FILES] [PATHPREFIX] [CUSTOMIZATION_XML] |
[CONFIGURATION_FILES] [DOCUMENTATION_FILES] [PATHPREFIX] |
|
[CUSTOMIZATION_XML] |
|
|
Standard input provides the list of files to work with. |
Standard input provides the list of files to work with. |
TAG, required descriptive tag. For example, a kerberos software |
TAG, required descriptive tag. For example, a kerberos software |
Line 106 the generation of a temporary directory;
|
Line 112 the generation of a temporary directory;
|
a pre-existing directory named ./TAG.) |
a pre-existing directory named ./TAG.) |
VERSION, required version. Needed to generate version information |
VERSION, required version. Needed to generate version information |
for the RPM. It is recommended that this be in the format N.M where N and |
for the RPM. It is recommended that this be in the format N.M where N and |
M are integers. |
M are integers. For example, 0.3, 4.1, and 8.9 are all valid version numbers. |
|
RELEASE, required release number. Needed to generate release information |
|
for the RPM. This is typically an integer, but can also be given descriptive |
|
text such as 'rh7' or 'mandrake8a'. |
CONFIGURATION_FILES, optional comma-separated listing of files to |
CONFIGURATION_FILES, optional comma-separated listing of files to |
be treated as configuration files by RPM (and thus subject to saving |
be treated as configuration files by RPM (and thus subject to saving |
during RPM upgrades). |
during RPM upgrades). |
Line 123 description, and pre-installation script
|
Line 132 description, and pre-installation script
|
"perldoc make_rpm.pl"). |
"perldoc make_rpm.pl"). |
END |
END |
exit(1); |
exit(1); |
} |
} |
|
|
# ----- Generate temporary directories (subdirs of first command-line argument) |
# ----- Generate temporary directories (subdirs of first command-line argument) |
|
|
# Do some error-checking related to important first command-line argument. |
# Do some error-checking related to important first command-line argument. |
if ($tag=~/\W/) { # non-alphanumeric characters cause problems |
if ($tag=~/[^\w-]/) # non-alphanumeric characters cause problems |
|
{ |
print(<<END); |
print(<<END); |
**** ERROR **** Invalid tag name "$tag" |
**** ERROR **** Invalid tag name "$tag" |
(The first command-line argument must be alphanumeric characters without |
(The first command-line argument must be alphanumeric characters without |
spaces.) |
spaces.) |
END |
END |
exit(1); |
exit(1); |
} |
} |
if (-e $tag) { # do not overwrite or conflict with existing data |
if (-e $tag) # do not overwrite or conflict with existing data |
|
{ |
print(<<END); |
print(<<END); |
**** ERROR **** a file or directory "./$tag" already exists |
**** ERROR **** a file or directory "./$tag" already exists |
(This program needs to generate a temporary directory named "$tag".) |
(This program needs to generate a temporary directory named "$tag".) |
END |
END |
exit(1); |
exit(1); |
} |
} |
|
|
print('Generating temporary directory ./'.$tag."\n"); |
print('Generating temporary directory ./'.$tag."\n"); |
mkdir($tag,0755) or die("**** ERROR **** cannot generate $tag directory\n"); |
mkdir($tag,0755) or die("**** ERROR **** cannot generate $tag directory\n"); |
Line 171 my @lines=<IN>;
|
Line 182 my @lines=<IN>;
|
close(IN); |
close(IN); |
|
|
open(RPMRC,">$tag/SPECS/rpmrc"); |
open(RPMRC,">$tag/SPECS/rpmrc"); |
foreach my $line (@lines) { |
foreach my $line (@lines) |
if ($line=~/^macrofiles/) { |
{ |
|
if ($line=~/^macrofiles/) |
|
{ |
chomp($line); |
chomp($line); |
$line.=":$currentdir/SPECS/rpmmacros\n"; |
$line.=":$currentdir/SPECS/rpmmacros\n"; |
} |
} |
print(RPMRC $line); |
print(RPMRC $line); |
} |
} |
close(RPMRC); |
close(RPMRC); |
|
|
open(RPMMACROS,">$tag/SPECS/rpmmacros"); |
open(RPMMACROS,">$tag/SPECS/rpmmacros"); |
Line 193 close(RPMMACROS);
|
Line 206 close(RPMMACROS);
|
# ------------------------- Perform variable initializations and customizations |
# ------------------------- Perform variable initializations and customizations |
|
|
my $cu=''; # string that holds customization XML file contents |
my $cu=''; # string that holds customization XML file contents |
if (length($customize)>0) { |
if (length($customize)>0) |
|
{ |
print('Reading in XML-formatted customizations from '.$customize."\n"); |
print('Reading in XML-formatted customizations from '.$customize."\n"); |
open(IN,"<$customize") or |
open(IN,"<$customize") or |
( |
( |
Line 203 if (length($customize)>0) {
|
Line 217 if (length($customize)>0) {
|
my @clines=(<IN>); |
my @clines=(<IN>); |
$cu=join('',@clines); |
$cu=join('',@clines); |
close(IN); |
close(IN); |
} |
} |
|
|
# tv - temporary variable (if it exists inside the XML document) then use it, |
# tv - temporary variable (if it exists inside the XML document) then use it, |
# otherwise don't overwrite existing values of variables |
# otherwise don't overwrite existing values of variables |
Line 217 $tv=grabtag('name',$cu,1); $name=$tv if
|
Line 231 $tv=grabtag('name',$cu,1); $name=$tv if
|
$name=~s/\<tag \/\>/$tag/g; |
$name=~s/\<tag \/\>/$tag/g; |
|
|
# (When in doubt, be paranoid about overwriting things.) |
# (When in doubt, be paranoid about overwriting things.) |
if (-e "$name-$version-1.i386.rpm") { |
if (-e "$name-$version-1.i386.rpm") |
|
{ |
print(`cd $invokingdir; rm -Rf $tag`); # clean temporary filespace in use |
print(`cd $invokingdir; rm -Rf $tag`); # clean temporary filespace in use |
die("**** ERROR **** $name-$version-1.i386.rpm already exists.\n"); |
die("**** ERROR **** $name-$version-1.i386.rpm already exists.\n"); |
} |
} |
|
|
my $requires=''; |
my $requires=''; |
# read in relevant requires info from customization file (if applicable) |
# read in relevant requires info from customization file (if applicable) |
Line 247 my $copyright="not specified here";
|
Line 262 my $copyright="not specified here";
|
$tv=grabtag('copyright',$cu,1); $copyright=$tv if $tv; |
$tv=grabtag('copyright',$cu,1); $copyright=$tv if $tv; |
$copyright=~s/\<tag \/\>/$tag/g; |
$copyright=~s/\<tag \/\>/$tag/g; |
|
|
open(SPEC,">$tag/SPECS/$name-$version.spec"); |
my $rpmgroup="Utilities/System"; |
|
# read in copyright from customization if available |
|
$tv=grabtag('group',$cu,1); $rpmgroup=$tv if $tv; |
|
$rpmgroup=~s/\<tag \/\>/$tag/g; |
|
|
my $vendor='Me'; |
my $vendor='Me'; |
# read in vendor from customization if available |
# read in vendor from customization if available |
Line 267 $pre=~s/\<tag \/\>/$tag/g;
|
Line 285 $pre=~s/\<tag \/\>/$tag/g;
|
# ------------------------------------- Print header information for .spec file |
# ------------------------------------- Print header information for .spec file |
print('Print header information for .spec file'."\n"); |
print('Print header information for .spec file'."\n"); |
|
|
|
open(SPEC,">$tag/SPECS/$name-$version.spec"); |
print(SPEC <<END); |
print(SPEC <<END); |
Summary: $summary |
Summary: $summary |
Name: $name |
Name: $name |
Version: $version |
Version: $version |
Release: 1 |
Release: $release |
Vendor: $vendor |
Vendor: $vendor |
BuildRoot: $currentdir/BuildRoot |
BuildRoot: $currentdir/BuildRoot |
Copyright: $copyright |
Copyright: $copyright |
Group: Utilities/System |
Group: $rpmgroup |
Source: $name-$version.tar.gz |
Source: $name-$version.tar.gz |
AutoReqProv: $autoreqprov |
AutoReqProv: $autoreqprov |
$requires |
$requires |
Line 310 my %BinaryRootMakefile;
|
Line 329 my %BinaryRootMakefile;
|
my %Makefile; |
my %Makefile; |
my %dotspecfile; |
my %dotspecfile; |
|
|
foreach my $file (<>) { |
foreach my $file (<>) |
|
{ |
chomp($file); |
chomp($file); |
my $comment=""; |
my $comment=""; |
if ($file=~/\s+\#(.*)$/) { |
if ($file=~/\s+\#(.*)$/) |
|
{ |
$file=~s/\s+\#(.*)$//; |
$file=~s/\s+\#(.*)$//; |
$comment=$1; |
$comment=$1; |
} |
} |
my $directive=""; |
my $directive=""; |
if ($comment=~/config\(noreplace\)/) { |
if ($comment=~/config\(noreplace\)/) |
|
{ |
$directive="\%config(noreplace) "; |
$directive="\%config(noreplace) "; |
} |
} |
elsif ($comment=~/config/) { |
elsif ($comment=~/config/) |
|
{ |
$directive="\%config "; |
$directive="\%config "; |
} |
} |
elsif ($comment=~/doc/) { |
elsif ($comment=~/doc/) |
|
{ |
$directive="\%doc"; |
$directive="\%doc"; |
} |
} |
if (($type,$size,$octalmode,$user,$group)=find_info($file)) { |
if (($type,$size,$octalmode,$user,$group)=find_info($file)) |
|
{ |
$octalmode="0" . $octalmode if length($octalmode)<4; |
$octalmode="0" . $octalmode if length($octalmode)<4; |
if ($pathprefix) { |
if ($pathprefix) |
|
{ |
$file=~s/^$pathprefix//; |
$file=~s/^$pathprefix//; |
} |
} |
if ($type eq "files") { |
if ($type eq "files") |
|
{ |
push(@{$BinaryRootMakefile{$type}},"\tinstall -D -m $octalmode ". |
push(@{$BinaryRootMakefile{$type}},"\tinstall -D -m $octalmode ". |
"$pathprefix$file $binaryroot$file\n"); |
"$pathprefix$file $binaryroot$file\n"); |
push(@{$Makefile{$type}},"\tinstall -D -m $octalmode ". |
push(@{$Makefile{$type}},"\tinstall -D -m $octalmode ". |
"\$(SOURCE)$file \$(ROOT)$file\n"); |
"\$(SOURCE)$file \$(ROOT)$file\n"); |
push(@{$dotspecfile{$type}},"$directive\%attr($octalmode,$user,". |
push(@{$dotspecfile{$type}},"$directive\%attr($octalmode,$user,". |
"$group) $file\n"); |
"$group) $file\n"); |
} |
} |
elsif ($type eq "directories") { |
elsif ($type eq "directories") |
|
{ |
push(@{$BinaryRootMakefile{$type}},"\tinstall -m $octalmode -d ". |
push(@{$BinaryRootMakefile{$type}},"\tinstall -m $octalmode -d ". |
"$binaryroot$file\n"); |
"$binaryroot$file\n"); |
push(@{$Makefile{$type}},"\tinstall -m $octalmode -d ". |
push(@{$Makefile{$type}},"\tinstall -m $octalmode -d ". |
"\$(SOURCE)$file \$(ROOT)$file\n"); |
"\$(SOURCE)$file \$(ROOT)$file\n"); |
push(@{$dotspecfile{$type}},"\%dir \%attr($octalmode,$user,". |
push(@{$dotspecfile{$type}},"\%dir \%attr($octalmode,$user,". |
"$group) $file\n"); |
"$group) $file\n"); |
} |
} |
elsif ($type eq "links") { |
elsif ($type eq "links") |
|
{ |
my $link=$size; # I use the size variable to pass the link value |
my $link=$size; # I use the size variable to pass the link value |
# from the subroutine find_info |
# from the subroutine find_info |
$link=~s/^$pathprefix//; |
$link=~s/^$pathprefix//; |
Line 356 foreach my $file (<>) {
|
Line 385 foreach my $file (<>) {
|
"\tln -s $link $binaryroot$file\n"); |
"\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"); |
} |
} |
} |
} |
} |
} |
|
|
# -------------------------------------- Generate SRPM and BinaryRoot Makefiles |
# -------------------------------------- Generate SRPM and BinaryRoot Makefiles |
print('Generate SRPM and BinaryRoot Makefiles.'."\n"); |
print('Generate SRPM and BinaryRoot Makefiles.'."\n"); |
Line 370 mkdir("$tag/SOURCES/$name-$version",0755
|
Line 399 mkdir("$tag/SOURCES/$name-$version",0755
|
|
|
open(OUTS,">$tag/SOURCES/$name-$version/Makefile"); |
open(OUTS,">$tag/SOURCES/$name-$version/Makefile"); |
open(OUTB, ">$tag/BinaryRootMakefile"); |
open(OUTB, ">$tag/BinaryRootMakefile"); |
foreach $type ("directories","files","links") { |
foreach $type ("directories","files","links") |
|
{ |
print(OUTS "$type\:\n"); |
print(OUTS "$type\:\n"); |
print(OUTS join("",@{$Makefile{$type}})) if $Makefile{$type}; |
print(OUTS join("",@{$Makefile{$type}})) if $Makefile{$type}; |
print(OUTS "\n"); |
print(OUTS "\n"); |
Line 379 foreach $type ("directories","files","li
|
Line 409 foreach $type ("directories","files","li
|
if $BinaryRootMakefile{$type}; |
if $BinaryRootMakefile{$type}; |
print(OUTB "\n"); |
print(OUTB "\n"); |
print(SPEC join("",@{$dotspecfile{$type}})) if $dotspecfile{$type}; |
print(SPEC join("",@{$dotspecfile{$type}})) if $dotspecfile{$type}; |
} |
} |
close(OUTB); |
close(OUTB); |
close(OUTS); |
close(OUTS); |
|
|
Line 397 print('Build a tarball and then run the
|
Line 427 print('Build a tarball and then run the
|
my $command="cd $currentdir/SOURCES; tar czvf $name-$version.tar.gz ". |
my $command="cd $currentdir/SOURCES; tar czvf $name-$version.tar.gz ". |
"$name-$version"; |
"$name-$version"; |
print(`$command`); |
print(`$command`); |
$command="cd $currentdir/SPECS; rpm --rcfile=./rpmrc -ba ". |
|
"$name-$version.spec; cd ../RPMS/i386; cp -v ". |
# ----------------------------------------- Define commands to be executed. |
"$name-$version-1.i386.rpm $invokingdir/."; |
# command1a works for rpm version <=4.0.2 |
|
# command1b works for rpm version >4.0.4 |
|
|
|
my $arch = 'i386'; |
|
|
|
my $command1a="cd $currentdir/SPECS; rpm --rcfile=./rpmrc --target=$arch -ba ". |
|
"$name-$version.spec"; |
|
|
|
my $rpmcommand = 'rpm'; |
|
if (`rpmbuild --version`) {$rpmcommand = 'rpmbuild';} |
|
my $command1b="cd $currentdir/SPECS; $rpmcommand --rcfile=./rpmrc ". |
|
"-ba --target $arch ". |
|
"$name-$version.spec"; |
|
|
|
# ---------------------------------------------- Run the "rpm -ba" command. |
|
# The strategy here is to...try one approach, and then the other. |
|
print "$command1a\n"; |
|
print (`$command1a`); |
|
if ($?!=0) |
|
{ |
|
print(<<END); |
|
**** WARNING **** RPM compilation failed for rpm version 4.0.2 command syntax |
|
(...trying another command syntax...) |
|
END |
|
print "$command1b\n"; |
|
print (`$command1b`); |
|
if ($?!=0) |
|
{ |
|
print(<<END); |
|
**** ERROR **** RPM compilation failed for rpm version 4.0.4 command syntax |
|
(...no more syntax choices to try...) |
|
END |
|
exit(1); |
|
} |
|
} |
|
|
|
# -------------------------------------------------------- Retrieve binary rpm. |
|
$command="cd $currentdir/RPMS/$arch; cp -v ". |
|
"$name-$version-$release.$arch.rpm $invokingdir/."; |
print(`$command`); |
print(`$command`); |
|
|
# --------------------------------------------------------- clean everything up |
# --------------------------------------------------------- clean everything up |
Line 411 print('Success. Script complete.'."\n");
|
Line 479 print('Success. Script complete.'."\n");
|
|
|
# ----------------------------------------------------------------- SUBROUTINES |
# ----------------------------------------------------------------- SUBROUTINES |
# ----- Subroutine: find_info - recursively gather information from a directory |
# ----- Subroutine: find_info - recursively gather information from a directory |
sub find_info { |
sub find_info |
|
{ |
my ($file)=@_; |
my ($file)=@_; |
my $line=''; |
my $line=''; |
if (($line=`find $file -type f -prune`)=~/^$file\n/) { |
my $safefile = $file; |
|
$safefile =~ s/\+/\\+/g; # Better regular expression matching. |
|
if (($line=`find $file -type f -prune`)=~/^$safefile\n/) |
|
{ |
$line=`find $file -type f -prune -printf "\%s\t\%m\t\%u\t\%g"`; |
$line=`find $file -type f -prune -printf "\%s\t\%m\t\%u\t\%g"`; |
return("files",split(/\t/,$line)); |
return("files",split(/\t/,$line)); |
} |
} |
elsif (($line=`find $file -type d -prune`)=~/^$file\n/) { |
elsif (($line=`find $file -type d -prune`)=~/^$safefile\n/) |
|
{ |
$line=`find $file -type d -prune -printf "\%s\t\%m\t\%u\t\%g"`; |
$line=`find $file -type d -prune -printf "\%s\t\%m\t\%u\t\%g"`; |
return("directories",split(/\t/,$line)); |
return("directories",split(/\t/,$line)); |
} |
} |
elsif (($line=`find $file -type l -prune`)=~/^$file\n/) { |
elsif (($line=`find $file -type l -prune`)=~/^$safefile\n/) |
|
{ |
$line=`find $file -type l -prune -printf "\%l\t\%m\t\%u\t\%g"`; |
$line=`find $file -type l -prune -printf "\%l\t\%m\t\%u\t\%g"`; |
return("links",split(/\t/,$line)); |
return("links",split(/\t/,$line)); |
} |
} |
die("**** ERROR **** $file is neither a directory, soft link, or file.\n"); |
die("**** ERROR **** $file is neither a directory, soft link, or file.\n"); |
} |
} |
|
|
# ------------------------- Subroutine: grabtag - grab a tag from an xml string |
# ------------------------- Subroutine: grabtag - grab a tag from an xml string |
sub grabtag { |
sub grabtag |
|
{ |
my ($tag,$text,$clean)=@_; |
my ($tag,$text,$clean)=@_; |
# meant to be quick and dirty as opposed to a formal state machine parser |
# meant to be quick and dirty as opposed to a formal state machine parser |
my $value=''; |
my $value=''; |
$cu=~/\<$tag\>(.*?)\<\/$tag\>/s; |
$cu=~/\<$tag\>(.*?)\<\/$tag\>/s; |
$value=$1; $value=~s/^\s+//; |
$value=$1; $value=~s/^\s+//; |
if ($clean==1) { |
if ($clean==1) |
|
{ |
$value=~s/\n\s/ /g; |
$value=~s/\n\s/ /g; |
$value=~s/\s\n/ /g; |
$value=~s/\s\n/ /g; |
$value=~s/\n/ /g; |
$value=~s/\n/ /g; |
$value=~s/\s+$//; |
$value=~s/\s+$//; |
} |
} |
return($value); |
return($value); |
} |
} |
|
|
# ----------------------------------------------------- Plain Old Documentation |
# ----------------------------------------------------- Plain Old Documentation |
|
|
Line 455 make_rpm.pl - cleanly generate an rpm in
|
Line 531 make_rpm.pl - cleanly generate an rpm in
|
|
|
=head1 SYNOPSIS |
=head1 SYNOPSIS |
|
|
Usage: <STDIN> | make_rpm.pl <TAG> <VERSION> |
Usage: <STDIN> | make_rpm.pl <TAG> <VERSION> <RELEASE> |
[CONFIGURATION_FILES] [DOCUMENTATION_FILES] |
[CONFIGURATION_FILES] [DOCUMENTATION_FILES] |
[PATHPREFIX] [CUSTOMIZATION_XML] |
[PATHPREFIX] [CUSTOMIZATION_XML] |
|
|
Line 527 I<VERSION> ($version), B<required> versi
|
Line 603 I<VERSION> ($version), B<required> versi
|
information for the RPM. This should be in the format N.M where N and M are |
information for the RPM. This should be in the format N.M where N and M are |
integers. |
integers. |
|
|
|
I<RELEASE> ($release), B<required> release number. Needed to generate release |
|
information for the RPM. This is typically an integer, but can also be given |
|
descriptive text such as 'rh7' or 'mandrake8a'. |
|
|
I<CONFIGURATION_FILES>, B<optional> comma-separated listing of files to |
I<CONFIGURATION_FILES>, B<optional> comma-separated listing of files to |
be treated as configuration files by RPM (and thus subject to saving |
be treated as configuration files by RPM (and thus subject to saving |
during RPM upgrades). Configuration files can also be specified in |
during RPM upgrades). Configuration files can also be specified in |
Line 552 description, and pre-installation script
|
Line 632 description, and pre-installation script
|
=head2 Examples |
=head2 Examples |
|
|
bash$ find /notreallyrootdir | perl make_rpm.pl \ |
bash$ find /notreallyrootdir | perl make_rpm.pl \ |
makemoney 3.1 '' \ |
makemoney 3.1 1 '' \ |
'/usr/doc/man/man3/makemoney.3' \ |
'/usr/doc/man/man3/makemoney.3' \ |
/notreallyrootdir |
/notreallyrootdir |
would generate makemoney-3.1-1.i386.rpm |
would generate makemoney-3.1-1.i386.rpm |
|
|
bash$ find /usr/local/bin | \ |
bash$ find /usr/local/bin | \ |
perl make_rpm.pl mybinfiles 1.0 |
perl make_rpm.pl mybinfiles 1.0 2 |
would generate mybinfiles-1.0-1.i386.rpm |
would generate mybinfiles-1.0-2.i386.rpm |
|
|
|
bash$ echo '/sycamore33/tree.txt' | \ |
|
perl make_rpm.pl sycamore 1.0 2 '' '' '/sycamore33' |
|
would generate sycamore-1.0-2.i386.rpm |
|
Note that the generated sycamore rpm would install files at the root |
|
'/' directory (not underneath /sycamore33); thus a file named |
|
'/tree.txt' is created, NOT '/sycamore33/tree.txt'. |
|
|
bash$ find /home/joe/romeodir/buildloc | \ |
bash$ find /home/joe/romeodir/buildloc | \ |
perl make_rpm.pl romeo \ |
perl make_rpm.pl romeo \ |
1.0 '' '' '/home/joe/romeodir/buildloc' customize.xml |
1.0 3 '' '' '/home/joe/romeodir/buildloc' customize.xml |
would generate romeo with customizations from customize.xml. |
would generate romeo with customizations from customize.xml. |
|
Note that the generated romeo rpm would install files at the root |
|
'/' directory (not underneath /home/joe/romedir/buildloc). |
|
|
The I<CUSTOMIZATION_XML> argument represents a way to customize the |
The I<CUSTOMIZATION_XML> argument represents a way to customize the |
numerous variables associated with RPMs. This argument represents |
numerous variables associated with RPMs. This argument represents |
Line 690 information, three of which are mandator
|
Line 779 information, three of which are mandator
|
|
|
=item * |
=item * |
|
|
(required) a descriptive tag and a version tag for the naming of the |
(required) a descriptive tag, version tag, and release tag for the naming of |
RPM software package; |
the RPM software package; |
|
|
=item * |
=item * |
|
|
Line 715 generated under the directory from which
|
Line 804 generated under the directory from which
|
|
|
For example, user "joe" running |
For example, user "joe" running |
|
|
cat file_list.txt | make_rpm.pl krb4 1.0 |
cat file_list.txt | make_rpm.pl krb4 1.0 1 |
|
|
would temporarily generate F</home/joe/krb4/>. |
would temporarily generate F</home/joe/krb4/>. |
|
|