version 1.1, 2000/10/02 14:07:53
|
version 1.8, 2001/01/10 17:00:34
|
Line 7
|
Line 7
|
# GNU General Public License, Version 2, June 1991 |
# GNU General Public License, Version 2, June 1991 |
# See http://www.gnu.org/copyleft/gpl.html. |
# See http://www.gnu.org/copyleft/gpl.html. |
|
|
# This file currently does not actually "build" the RPM. |
# This script does actually "build" the RPM. |
# This has to be done with an RPM build environment and |
|
# commands like 'rpm -ba'. |
|
|
|
# What this file DOES do is generate all the needed |
# This script also generates and then deletes temporary |
# files (and binary root directory tree) to build an RPM with. |
# files (and binary root directory tree) to build an RPM with. |
|
|
# I still need to implement the CONFIGURATION_FILES and |
# I still need to implement the CONFIGURATION_FILES and |
Line 20
|
Line 18
|
|
|
# Take in a file list (from standard input), |
# Take in a file list (from standard input), |
# a description tag and version tag from command line argument |
# a description tag and version tag from command line argument |
# and generate a: |
# and temporarily generate a: |
# RPM .spec file |
# RPM .spec file |
# RPM Makefile |
# RPM Makefile |
# SourceRoot |
# SourceRoot |
|
|
|
# A resulting .rpm file is generated. |
|
|
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. |
Line 35 END
|
Line 35 END
|
|
|
my ($tag,$version,$configuration_files,$documentation_files,$pathprefix)=@ARGV; |
my ($tag,$version,$configuration_files,$documentation_files,$pathprefix)=@ARGV; |
@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"; |
Line 86 print RPMMACROS <<END;
|
Line 87 print RPMMACROS <<END;
|
END |
END |
close RPMMACROS; |
close RPMMACROS; |
|
|
|
# This needs to be dynamically based upon doc/otherfiles/rpm_list.txt |
|
# at some point. |
|
my $requires=""; |
|
if ($tag eq "setup") { |
|
$requires=<<END; |
|
PreReq: setup |
|
END |
|
} |
|
elsif ($tag eq "base") { |
|
$requires=<<END; |
|
PreReq: LON-CAPA-setup |
|
PreReq: apache |
|
PreReq: /etc/httpd/conf/access.conf |
|
END |
|
$requires2=<<END; |
|
Requires: LON-CAPA-setup |
|
Requires: raidtools |
|
Requires: ncurses |
|
Requires: popt |
|
Requires: tcsh |
|
Requires: redhat-release |
|
Requires: diffutils |
|
Requires: ed |
|
Requires: dialog |
|
Requires: rmt |
|
Requires: sed |
|
Requires: which |
|
Requires: gawk |
|
Requires: mingetty |
|
Requires: info |
|
Requires: portmap |
|
Requires: openssh-clients |
|
Requires: openssh |
|
Requires: openssh-server |
|
Requires: openssl |
|
Requires: basesystem |
|
Requires: ldconfig |
|
Requires: filesystem |
|
Requires: mktemp |
|
Requires: termcap |
|
Requires: shadow-utils |
|
Requires: libtermcap |
|
Requires: MAKEDEV |
|
Requires: utempter |
|
Requires: bash |
|
Requires: logrotate |
|
Requires: SysVinit |
|
Requires: chkconfig |
|
Requires: textutils |
|
Requires: pwdb |
|
Requires: vixie-cron |
|
Requires: procps |
|
Requires: modutils |
|
Requires: psmisc |
|
Requires: sysklogd |
|
Requires: authconfig |
|
Requires: zlib |
|
Requires: sh-utils |
|
Requires: mailcap |
|
Requires: anacron |
|
Requires: bc |
|
Requires: bdflush |
|
Requires: bind-utils |
|
Requires: cpio |
|
Requires: crontabs |
|
Requires: etcskel |
|
Requires: e2fsprogs |
|
Requires: samba-client |
|
Requires: apache-devel |
|
Requires: autofs |
|
Requires: findutils |
|
Requires: gdbm |
|
Requires: getty_ps |
|
Requires: readline |
|
Requires: glib10 |
|
Requires: inetd |
|
Requires: losetup |
|
Requires: gnupg |
|
Requires: gpgp |
|
Requires: urw-fonts |
|
Requires: mailx |
|
Requires: gzip |
|
Requires: ld.so |
|
Requires: less |
|
Requires: passwd |
|
Requires: sysreport |
|
Requires: ncompress |
|
Requires: mount |
|
Requires: lilo |
|
Requires: bzip2 |
|
Requires: grep |
|
Requires: memprof |
|
Requires: mars-nwe |
|
Requires: pidentd |
|
Requires: procinfo |
|
Requires: units |
|
Requires: routed |
|
Requires: quota |
|
Requires: pam |
|
Requires: stat |
|
Requires: setserial |
|
Requires: mod_perl |
|
Requires: rootfiles |
|
Requires: nfs-utils |
|
Requires: sendmail |
|
Requires: sharutils |
|
Requires: tmpwatch |
|
Requires: shapecfg |
|
Requires: tcp_wrappers |
|
Requires: unzip |
|
Requires: tetex-dvips |
|
Requires: tetex-afm |
|
Requires: tetex-latex |
|
Requires: xntp3 |
|
Requires: rpm |
|
Requires: wu-ftpd |
|
Requires: setup |
|
Requires: glibc |
|
Requires: fileutils |
|
Requires: initscripts |
|
Requires: netatalk |
|
Requires: apache |
|
Requires: bash2 |
|
Requires: dev |
|
Requires: samba |
|
Requires: ghostscript |
|
Requires: kernel-headers |
|
Requires: kernel |
|
Requires: linuxconf |
|
Requires: tetex |
|
Requires: tetex-fonts |
|
Requires: util-linux |
|
Requires: vim-common |
|
Requires: perl |
|
Requires: cracklib |
|
Requires: cracklib-dicts |
|
Requires: cdrecord |
|
Requires: ghostscript-fonts |
|
Requires: libgr |
|
Requires: libjpeg |
|
Requires: libpng |
|
Requires: libungif-progs |
|
Requires: libtiff |
|
Requires: libungif |
|
Requires: samba-common |
|
Requires: ImageMagick |
|
Requires: libgr-progs |
|
Requires: man-pages |
|
Requires: tar |
|
Requires: vim-minimal |
|
END |
|
} |
|
else { |
|
$requires=<<END; |
|
Requires: LON-CAPA-base |
|
END |
|
} |
open (SPEC,">$tag/SPECS/LON-CAPA-$tag-$version.spec"); |
open (SPEC,">$tag/SPECS/LON-CAPA-$tag-$version.spec"); |
|
|
print SPEC <<END; |
print SPEC <<END; |
Line 99 Copyright: GNU General Public License. V
|
Line 257 Copyright: GNU General Public License. V
|
Group: Utilities/System |
Group: Utilities/System |
Source: LON-CAPA-$tag-$version.tar.gz |
Source: LON-CAPA-$tag-$version.tar.gz |
AutoReqProv: no |
AutoReqProv: no |
|
$requires |
# requires: filesystem |
# requires: filesystem |
\%description |
\%description |
This package is automatically generated by the make_rpm.pl perl |
This package is automatically generated by the make_rpm.pl perl |
Line 143 END
|
Line 302 END
|
|
|
foreach $file (<>) { |
foreach $file (<>) { |
chop $file; |
chop $file; |
|
my $comment=""; |
|
if ($file=~/\s+\#(.*)$/) { |
|
$file=~s/\s+\#(.*)$//; |
|
$comment=$1; |
|
} |
|
my $config=""; |
|
if ($comment=~/config/i) { |
|
$config="\%config "; |
|
} |
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) { |
Line 151 foreach $file (<>) {
|
Line 319 foreach $file (<>) {
|
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 $pathprefix$file $binaryroot$file\n"; |
push @{$Makefile{$type}},"\tinstall -D -m $octalmode \$(SOURCE)$file \$(ROOT)$file\n"; |
push @{$Makefile{$type}},"\tinstall -D -m $octalmode \$(SOURCE)$file \$(ROOT)$file\n"; |
push @{$dotspecfile{$type}},"\%attr($octalmode,$user,$group) $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 $binaryroot$file\n"; |
Line 206 sub find_info {
|
Line 374 sub find_info {
|
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`)=~/^$file\n/) { |
$line=`find $file -type l -prune -printf "\%h/\%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)); |
} |
} |
|
|