# 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; $_ = ; 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 Packager: Rob Brown 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 - initial creation