3
# need this for hostname()
9
my $MainDir = '/tmp/cpan';
11
# set default options, then get options
13
$options{'email'}=(getpwuid($<))[0] . "\@redhat.com" ;
14
GetOptions(\%options, "email=s", "n=s", "create") || exit 1;
16
my $InputFile = $ARGV[0];
19
if ($options{'create'}) {
23
my $tarball = basename($InputFile);
24
$tarball =~ /(\S+)\-(\S+)\.tar\.gz/;
28
my $class = dirname($InputFile);
29
$class =~ s/^\.\/[0-9][0-9]_//;
37
$clm_name =~ s/::/-/g;
39
my $clm_changelog = get_changelog();
41
# complain if either parameter is missing
42
($clm_name eq "") && die "Module name not specified\n";
43
($clm_version eq "") && die "Module version not specified\n";
45
# Create and Open file to create SPEC files.
46
mkdir($MainDir, 0755);
47
system("cp $InputFile $MainDir");
48
my $filename = $clm_name . '.spec';
49
open (FILE, "> $MainDir/$filename");
51
# Print the spec file. Lots of substitutions here.
52
print FILE "Summary: $clm_name module for perl $class
56
Copyright: distributable
57
Group: Applications/CPAN
58
Source0: $clm_name-$clm_version.tar.gz
59
Url: http://www.cpan.org
60
BuildRoot: %{_tmppath}/perl-$clm_name-buildroot/
61
BuildRequires: perl >= 0:5.00503
62
Requires: perl >= 0:5.00503
65
$clm_name module for perl
67
# Provide perl-specific find-{provides,requires}.
68
%define __find_provides /usr/lib/rpm/find-provides.perl
69
%define __find_requires /usr/lib/rpm/find-requires.perl
72
%setup -q -n $clm_name-%{version} $create
75
CFLAGS=\"\$RPM_OPT_FLAGS\" perl Makefile.PL
79
rm -rf \$RPM_BUILD_ROOT
82
rm -rf \$RPM_BUILD_ROOT
83
eval `perl '-V:installarchlib'`
84
mkdir -p \$RPM_BUILD_ROOT/\$installarchlib
85
make PREFIX=\$RPM_BUILD_ROOT/usr install
87
[ -x /usr/lib/rpm/brp-compress ] && /usr/lib/rpm/brp-compress
89
find \$RPM_BUILD_ROOT/usr -type f -print | \
90
sed \"s\@^\$RPM_BUILD_ROOT\@\@g\" | \
91
grep -v perllocal.pod | \
92
grep -v \"\\.packlist\" > $clm_name-$clm_version-filelist
93
if [ \"\$(cat $clm_name-$clm_version-filelist)X\" = \"X\" ] ; then
94
echo \"ERROR: EMPTY FILE LIST\"
98
%files -f $clm_name-$clm_version-filelist
103
- Spec file was autogenerated.
110
open (LOG, "> $MainDir/LogFile");
115
unlink "$MainDir/$filename";
116
unlink "$MainDir/$tarball";
122
# First, make sure it unpacks cleanely
123
system("rpm --rcfile $MainDir/rpmrc -bp $MainDir/$filename");
126
print "RPM test unpacking failed!\n";
127
print LOG "PREP failed: $filename\n";
131
system("rpm --rcfile $MainDir/rpmrc -bs --rmsource --rmspec --clean $MainDir/$filename");
134
print "RPM building failed!\n";
135
print LOG "SOURCE failed: $filename\n";
142
open(MACROS, "> $MainDir/macros");
145
%_builddir %{_topdir}/junk
147
%_sourcedir %{_topdir}
149
%_srcrpmdir %{_topdir}/temp
153
open(RPMRC, "> $MainDir/rpmrc");
155
include: /usr/lib/rpm/rpmrc
156
macrofiles: /usr/lib/rpm/macros:$MainDir/macros
162
# generate the changelog entry from available system info
165
$name = (getpwuid($<))[6];
166
$name = (split(",", $name))[0];
167
return ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")[(localtime)[6]] . " " .
168
("Jan", "Feb", "Mar", "Apr", "May", "Jun",
169
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec")[(localtime)[4]] . " " .
170
(localtime)[3] . " " . (1900+(localtime)[5]) . " " .
171
$name . " <" . $options{'email'} . ">";