1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
#!perl
use strict;
require "./lib/mod_perl2.pm";
my $dev_build = is_dev_build();
my $release = $dev_build ? svn_release() : 1;
my $version = $mod_perl2::VERSION_TRIPLET;
my $path = $dev_build ? "mod_perl-$version-$dev_build" : "mod_perl-$version";
my $tarname = "$path.tar.gz";
my $httpd_ver = min_httpd_ver();
open(my $spec, ">mod_perl.spec") || die "Can't open mod_perl.spec $!";
print $spec <<"EOF";
%define _version $mod_perl2::VERSION_TRIPLET
%define _release $release
%define _source https://apache.org/dist/perl/$tarname
%define _dirname $path
%define _httpd_min_ver $httpd_ver
%define _perl_min_ver 5.6.1
EOF
print $spec <<'EOF';
Name: mod_perl
Version: %{_version}
Release: %{_release}
Summary: An embedded Perl interpreter for the Apache Web server
Group: System Environment/Daemons
License: Apache License, Version 2.0
Packager: mod_perl Development Team <dev@perl.apache.org>
URL: https://perl.apache.org/
Source: %{_source}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: httpd >= %{_httpd_min_ver}
BuildRequires: perl >= %{_perl_min_ver}
BuildRequires: httpd-devel >= %{_httpd_min_ver}
BuildRequires: apr-devel, apr-util-devel
%description
Mod_perl incorporates a Perl interpreter into the Apache web server,
so that the Apache web server can directly execute Perl code.
Mod_perl links the Perl runtime library into the Apache web server and
provides an object-oriented Perl interface for Apache's C language
API. The end result is a quicker CGI script turnaround process, since
no external Perl interpreter has to be started.
Install mod_perl if you're installing the Apache web server and you'd
like for it to directly incorporate a Perl interpreter.
%package devel
Summary: Files needed for building XS modules that use mod_perl
Group: Development/Libraries
Requires: mod_perl = %{version}-%{release}, httpd-devel
%description devel
The mod_perl-devel package contains the files needed for building XS
modules that use mod_perl.
%prep
%setup -q -n %{_dirname}
%build
CFLAGS="$RPM_OPT_FLAGS" %{__perl} Makefile.PL </dev/null \
PREFIX=$RPM_BUILD_ROOT/usr \
INSTALLDIRS=vendor \
MP_APXS=%{_sbindir}/apxs
make %{?_smp_mflags} OPTIMIZE="$RPM_OPT_FLAGS"
%install
rm -rf $RPM_BUILD_ROOT
install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/httpd/modules
make install \
MODPERL_AP_LIBEXECDIR=$RPM_BUILD_ROOT%{_libdir}/httpd/modules \
MODPERL_AP_INCLUDEDIR=$RPM_BUILD_ROOT%{_includedir}/httpd
# Remove the temporary files.
find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
find $RPM_BUILD_ROOT -type f -name perllocal.pod -exec rm -f {} ';'
find $RPM_BUILD_ROOT -type f -name '*.bs' -a -size 0 -exec rm -f {} ';'
find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null ';'
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc Changes LICENSE README* STATUS SVN-MOVE docs/
%{_bindir}/*
%{_libdir}/httpd/modules/mod_perl.so
%{perl_vendorarch}/auto/*
%{perl_vendorarch}/Apache/
%{perl_vendorarch}/Apache2/
%{perl_vendorarch}/Bundle/
%{perl_vendorarch}/APR/
%{perl_vendorarch}/ModPerl/
%{perl_vendorarch}/*.pm
%{_mandir}/man?/*
%files devel
%defattr(-,root,root,-)
%{_includedir}/httpd/*
%changelog
EOF
sub min_httpd_ver {
my $min_httpd_ver;
open my $mk, 'Makefile.PL';
while (<$mk>) {
if (/MIN_HTTPD_VERSION_DYNAMIC\s*=>\s*'(.*)'/) {
$min_httpd_ver = $1;
last;
}
}
close $mk;
$min_httpd_ver;
}
sub svn_release {
open my $svn, "<.svn/entries";
my $revision;
while (<$svn>) {
if (/revision="(\d+)"/) {
$revision = $1;
last;
}
}
close $svn;
$revision;
}
sub is_dev_build {
my $dev;
open my $fh, 'Changes';
while (<$fh>) {
if (/^=item.*-(dev|rc\d+)/) {
$dev = $1;
last;
}
last if /^=item/;
}
close $fh;
$dev;
}
|