# Copyright (C) 2002 Rob Brown (bbb@cpan.org)
# Generic rpm SPEC file generator.
use strict;
my $p = $1 if $0 =~ m%([^/]*)$%;
my $output = shift or die "create what?";
### Extract $VERSION from VERSION_FROM
my $name;
my $version;
$INC{"ExtUtils/MakeMaker.pm"} = 1;
sub WriteMakefile {
my %props = @_;
$name = $props{NAME} || die "Makefile.PL: Missing NAME";
if ($version = $props{VERSION}) {
# done
} elsif (my $version_from = $props{VERSION_FROM}) {
$@ = "";
$version = eval qq{
do "$version_from";
\$$name\::VERSION || die "$version_from: Missing VERSION";
};
die $@ if $@;
if (!defined $version) {
die "$version_from: Missing VERSION";
}
} else {
die "Makefile.PL: Could not determine version!";
}
}
do "Makefile.PL";
if ($name) {
$name =~ s/::/-/g;
} else {
die "Makefile.PL: Missing WriteMakefile";
}
$version || die "No version!";
my ($class,$subclass) = split(/\-/,$name,2);
local $/ = undef;
$_ = <DATA>;
s/\@CLASS\@/$class/g;
s/\@SUBCLASS\@/$subclass/g;
s/\@VERSION\@/$version/g;
open SPEC, ">$output" or die "$output: $!";
print SPEC "# Automatically generated by $p\n";
print SPEC $_;
close SPEC;
__DATA__
%define class @CLASS@
%define subclass @SUBCLASS@
%define version @VERSION@
%define release 1
%define defperlver 5.6.1
# Derived values
%define real_name %{class}-%{subclass}
%define name perl-%{real_name}
%define perlver %(rpm -q perl --queryformat '%%{version}' 2> /dev/null || echo %{defperlver})
# Provide perl-specific find-{provides,requires}.
%define __find_provides %( echo -n /usr/lib/rpm/find-provides && [ -x /usr/lib/rpm/find-provides.perl ] && echo .perl )
%define __find_requires %( echo -n /usr/lib/rpm/find-requires && [ -x /usr/lib/rpm/find-requires.perl ] && echo .perl )
Summary: Perl module %{class}::%{subclass}
Name: %{name}
Version: %{version}
Release: %{release}
Group: Development/Perl
License: Artistic
Source: http://www.cpan.org./modules/by-module/%{class}/%{real_name}-%{version}.tar.gz
URL: http://search.cpan.org/search?dist=%{real_name}
Vendor: Rob Brown <bbb@cpan.org>
Packager: Rob Brown <bbb@cpan.org>
BuildRequires: perl
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot-%(id -u -n)
Requires: perl = %{perlver}
Provides: %{real_name} = %{version}
%description
%{class}::%{subclass} Perl Module
%prep
%setup -q -n %{real_name}-%{version}
%build
%{__perl} Makefile.PL
%{__make} OPTIMIZE="$RPM_OPT_FLAGS"
%install
rm -rf $RPM_BUILD_ROOT
%{makeinstall} PREFIX=$RPM_BUILD_ROOT%{_prefix}
[ -x /usr/lib/rpm/brp-compress ] && /usr/lib/rpm/brp-compress
# Clean up some files we don't want/need
rm -rf `find $RPM_BUILD_ROOT -name "perllocal.pod" -o -name ".packlist" -o -name "*.bs"`
find $RPM_BUILD_ROOT%{_prefix} -type d | tac | xargs rmdir --ign
%clean
rm -rf $RPM_BUILD_ROOT
HERE=`pwd`
cd ..
rm -rf $HERE
%files
%defattr(-,root,root)
%doc README Changes examples
%{_prefix}
%changelog
* Thu May 30 2002 Rob Brown <bbb@cpan.org>
- initial creation