forked from pool/apache2-mod_perl
require %{apache_suse_maintenance_mmn} OBS-URL: https://build.opensuse.org/request/show/317131 OBS-URL: https://build.opensuse.org/package/show/Apache:Modules/apache2-mod_perl?expand=0&rev=54
297 lines
11 KiB
RPMSpec
297 lines
11 KiB
RPMSpec
#
|
|
# spec file for package apache2-mod_perl
|
|
#
|
|
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
Name: apache2-mod_perl
|
|
Version: 2.0.8
|
|
Release: 0
|
|
Summary: Embedded Perl for Apache
|
|
License: Apache-2.0
|
|
Group: Productivity/Networking/Web/Servers
|
|
Url: http://perl.apache.org/
|
|
Source0: http://ftp.de.debian.org/debian/pool/main/liba/libapache2-mod-perl2/libapache2-mod-perl2_2.0.8+httpd24-r1449661.orig.tar.gz
|
|
Patch0: %{name}-2.0.4-tests.diff
|
|
# PATCH-NEEDS-REBASE
|
|
Patch1: lfs-perl-5.14.patch
|
|
Patch2: avoid-broken-provides.diff
|
|
Patch3: apache24-mod_authz_host.patch
|
|
BuildRequires: apache-rpm-macros
|
|
BuildRequires: apache2-devel
|
|
BuildRequires: db-devel
|
|
BuildRequires: ed
|
|
BuildRequires: netcfg
|
|
BuildRequires: pcre-devel
|
|
BuildRequires: perl
|
|
BuildRequires: perl-BSD-Resource
|
|
BuildRequires: perl-Compress-Zlib
|
|
BuildRequires: perl-Tie-IxHash
|
|
BuildRequires: perl-libwww-perl
|
|
BuildRequires: sudo
|
|
Requires: %{apache_mmn}
|
|
Requires: %{apache_suse_maintenance_mmn}
|
|
Requires: apache2
|
|
Requires: perl = %{perl_version}
|
|
Requires: perl-HTML-Parser
|
|
Requires: perl-Tie-IxHash
|
|
Requires: perl-URI
|
|
Requires: perl-libwww-perl
|
|
Requires: perl(Linux::Pid)
|
|
Obsoletes: mod_perl_2
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
Conflicts: mod_perl
|
|
Icon: mod_perl.xpm
|
|
%if 0%{?sles_version} == 9
|
|
BuildRequires: openldap2-devel
|
|
%endif
|
|
|
|
%description
|
|
The Apache/Perl integration project brings together the full power of
|
|
the Perl programming language and the Apache HTTP server.
|
|
|
|
With mod_perl, it is possible to write Apache modules entirely in Perl.
|
|
The persistent interpreter embedded in the server avoids the overhead
|
|
of starting an external interpreter and the penalty of Perl start-up
|
|
time.
|
|
|
|
Note that you do not need mod_perl to run perl scripts via the common
|
|
gateway interface (CGI). mod_perl enables you to run Perl scripts in an
|
|
embedded interpreter if the additional performance is needed, but may
|
|
require modifications to the scripts.
|
|
|
|
Usage:
|
|
|
|
To load the module into Apache, run the command "a2enmod perl" as root.
|
|
|
|
To learn about the configuration, the best reference unequivocally is
|
|
http://perl.apache.org/docs/
|
|
|
|
For porting 1.0 applications to 2.0, the page
|
|
http://perl.apache.org/docs/2.0/user/porting/compat.html should give
|
|
the required information.
|
|
|
|
Most mod_perl handlers use the perl-script handler. Scripts can run in
|
|
"mod_perl mode" (preconfigured for URLs starting with /perl/) or "perl
|
|
cgi mode" (preconfigured for URLs starting /cgi-perl). Plain CGI
|
|
scripts can be run via /cgi-bin/. In all these cases, the script would
|
|
be placed inside the /srv/www/cgi-bin/ directory. Refer to
|
|
%{_sysconfdir}/apache2/conf.d/mod_perl.conf about this configuration.
|
|
|
|
%package devel
|
|
Summary: Embedded Perl for Apache - Development package
|
|
Group: Productivity/Networking/Web/Servers
|
|
Requires: %{name} = %{version}
|
|
Provides: apache2-mod_perl:%{_includedir}/apache2/modules/perl/modperl_cgi.h
|
|
|
|
%description devel
|
|
The Apache/Perl integration project brings together the full power of
|
|
the Perl programming language and the Apache HTTP server.
|
|
|
|
This package contains the include files useful for developing new
|
|
software depending on apache2-mod_perl.
|
|
|
|
%prep
|
|
#%setup -q -n modperl-2.0 -a 1
|
|
%setup -q -n httpd24
|
|
%patch2 -p1
|
|
%patch3 -p1
|
|
#%patch1 -p1
|
|
find -name ".svn" -type d | xargs rm -rfv
|
|
|
|
%build
|
|
perl Makefile.PL INSTALLDIRS=vendor MP_APXS=`which %{apache_apxs}` MP_APR_CONFIG=%{_bindir}/apr-1-config MP_CCOPTS="%{apache_cflags}"
|
|
ln -s Apache-mod_perl_guide-1.29/bin bin
|
|
make %{?_smp_mflags}
|
|
# XXX mod_include/SSI does not include files when they are not named .shtml
|
|
mv t/htdocs/includes-registry/test.pl t/htdocs/includes-registry/test.shtml
|
|
mv t/htdocs/includes-registry/cgipm.pl t/htdocs/includes-registry/cgipm.shtml
|
|
sed 's/\.pl/.shtml/' t/htdocs/includes/test.shtml > tmpfile && mv tmpfile t/htdocs/includes/test.shtml
|
|
%ifnarch %{arm}
|
|
#
|
|
# Run tests
|
|
#
|
|
# Don't use sendfile because most systems on which this package will be built don't run a
|
|
# kernel that has it implemented, actually
|
|
# (Files smaller than 256 bytes will be delivered via conventional read/write, so most of the tests would pass nevertheless.)
|
|
echo -e '\n\nEnableSendfile off' >> t/conf/extra.conf.in
|
|
#
|
|
# fix for bad_scripts.t in 1.99_12
|
|
# [Tue Mar 02 17:28:26 2004] [error] file permissions deny server execution/usr/src/packages/BUILD/modperl-2.0/ModPerl-Registry/t/cgi-bin/r_inherited.pl
|
|
if test -e ModPerl-Registry/t/cgi-bin/r_inherited.pl; then chmod +x ModPerl-Registry/t/cgi-bin/r_inherited.pl; fi
|
|
#
|
|
# 1.99_12_20040302 fix for t/hooks/cleanup.t and t/hooks/cleanup2.t
|
|
# [Tue Mar 02 18:38:41 2004] [error] [client 127.0.0.1] can't open /usr/src/packages/BUILD/modperl-2.0/t/htdocs/hooks/cleanup2: Permission denied at /usr/src/packages/BUILD/modperl-2.0/Apache-Test/lib/Apache/TestUtil.pm line 82.
|
|
#
|
|
# enable more apache modules
|
|
# we can't simply use a2enmod, since we are not root.
|
|
cat >> t/conf/extra.conf.in <<-EOF
|
|
#LoadModule access_compat_module %{_prefix}/%_lib/apache2-prefork/mod_access_compat.so
|
|
LoadModule authn_core_module %{_libdir}/apache2-prefork/mod_authn_core.so
|
|
LoadModule authz_core_module %{_libdir}/apache2-prefork/mod_authz_core.so
|
|
#LoadModule unixd_module %{_prefix}/%_lib/apache2-prefork/mod_unixd.so
|
|
LoadModule deflate_module %{_libdir}/apache2-prefork/mod_deflate.so
|
|
LoadModule proxy_module %{_libdir}/apache2-prefork/mod_proxy.so
|
|
LoadModule proxy_http_module %{_libdir}/apache2-prefork/mod_proxy_http.so
|
|
EOF
|
|
mkdir -p t/htdocs/hooks
|
|
chmod 2770 t/htdocs/hooks
|
|
#
|
|
# run test suite:
|
|
#
|
|
#make TEST_VERBOSE=1 APACHE_TEST_PORT=select APACHE_TEST_STARTUP_TIMEOUT=360 test || {
|
|
# ps aufx | grep "/usr/sbin/httpd2-prefork -d /usr/src/packages/BUILD/modperl-2.0" \
|
|
# | grep -v grep | awk '{print $2}' | xargs -r kill
|
|
# exit 1
|
|
#}
|
|
mkdir t/run
|
|
t/TEST -start-httpd -port select -startup_timeout 720
|
|
t/TEST -run-tests || true
|
|
#t/TEST -run-tests || {
|
|
# t/TEST -stop-httpd
|
|
# exit 1
|
|
#}
|
|
t/TEST -stop-httpd
|
|
# in case of failures, see http://perl.apache.org/docs/2.0/user/help/help.html#_C_make_test___Failures
|
|
# then, debug like this:
|
|
# t/TEST -start-httpd
|
|
# tail -F t/logs/*&
|
|
# t/TEST -run-tests -verbose $failed_test
|
|
# t/TEST -stop-httpd
|
|
%endif
|
|
|
|
%install
|
|
%perl_make_install
|
|
### since 11.4 perl_process_packlist
|
|
### removes .packlist, perllocal.pod files
|
|
%if 0%{?suse_version} > 1130
|
|
%perl_process_packlist
|
|
%else
|
|
# do not perl_process_packlist
|
|
# remove .packlist file
|
|
find %{buildroot}%{perl_vendorarch}/auto -name .packlist -print0 | xargs -0 -r rm ;
|
|
# remove perllocal.pod file
|
|
rm -f %{buildroot}%{perl_archlib}/perllocal.pod
|
|
%endif
|
|
|
|
#mkdir -p $RPM_BUILD_ROOT/%{apache_libexecdir}
|
|
#cp -p src/modules/perl/mod_perl.so $RPM_BUILD_ROOT/%{apache_libexecdir}
|
|
install -D src/modules/perl/mod_perl.so \
|
|
%{buildroot}/%{apache_libexecdir}/mod_perl.so
|
|
|
|
#mkdir -p $RPM_BUILD_ROOT/%{apache_includedir}/modules/perl
|
|
install -d %{buildroot}/%{apache_includedir}/modules/perl
|
|
cp src/modules/perl/*.h %{buildroot}/%{apache_includedir}/modules/perl/
|
|
|
|
#mkdir -p $RPM_BUILD_ROOT/%{apache_sysconfdir}/conf.d
|
|
install -d %{buildroot}/%{apache_sysconfdir}/conf.d
|
|
|
|
cat > %{buildroot}/%{apache_sysconfdir}/mod_perl-startup.pl <<-EOF
|
|
# Taken from http://perl.apache.org/docs/2.0/user/handlers/server.html#Startup_File
|
|
if ( ! \$ENV{MOD_PERL}) { die "GATEWAY_INTERFACE not Perl!"; }
|
|
use lib qw(/srv/www/perl-lib);
|
|
# enable if the mod_perl 1.0 compatibility is needed
|
|
# use Apache2::compat ();
|
|
# preload all mp2 modules
|
|
# use ModPerl::MethodLookup;
|
|
# ModPerl::MethodLookup::preload_all_modules();
|
|
use ModPerl::Util (); #for CORE::GLOBAL::exit
|
|
use Apache2::RequestRec ();
|
|
use Apache2::RequestIO ();
|
|
use Apache2::RequestUtil ();
|
|
use Apache2::ServerRec ();
|
|
use Apache2::ServerUtil ();
|
|
use Apache2::Connection ();
|
|
use Apache2::Log ();
|
|
use APR::Table ();
|
|
use ModPerl::Registry ();
|
|
use Apache2::Const -compile => ':common';
|
|
use APR::Const -compile => ':common';
|
|
1;
|
|
EOF
|
|
|
|
#mkdir -p $RPM_BUILD_ROOT/%{apache_serverroot}/perl-lib
|
|
install -d %{buildroot}/%{apache_serverroot}/perl-lib
|
|
|
|
cat > %{buildroot}/%{apache_sysconfdir}/conf.d/mod_perl.conf <<EOF
|
|
<Directory "%{apache_serverroot}/perl-lib">
|
|
AllowOverride None
|
|
Options None
|
|
<IfModule !mod_authz_host.c>
|
|
Order allow,deny
|
|
Deny from all
|
|
</IfModule>
|
|
<IfModule mod_authz_host.c>
|
|
Require all granted
|
|
</IfModule>
|
|
</Directory>
|
|
<IfModule mod_perl.c>
|
|
PerlRequire "%{_sysconfdir}/apache2/mod_perl-startup.pl"
|
|
ScriptAlias /perl/ "%{apache_serverroot}/cgi-bin/"
|
|
<Location /perl/>
|
|
# mod_perl mode
|
|
SetHandler perl-script
|
|
PerlResponseHandler ModPerl::Registry
|
|
PerlOptions +ParseHeaders
|
|
Options +ExecCGI
|
|
</Location>
|
|
ScriptAlias /cgi-perl/ "%{apache_serverroot}/cgi-bin/"
|
|
<Location /cgi-perl>
|
|
# perl cgi mode
|
|
SetHandler perl-script
|
|
PerlResponseHandler ModPerl::PerlRun
|
|
PerlOptions +ParseHeaders
|
|
Options +ExecCGI
|
|
</Location>
|
|
# The /cgi-bin/ ScriptAlias is already set up in httpd.conf
|
|
</IfModule>
|
|
EOF
|
|
# install documentation files alongside perl modules, where applicable
|
|
cp -av docs/api/*.pod %{buildroot}/%{perl_vendorarch}/
|
|
cp -av docs/api/APR/*.pod %{buildroot}/%{perl_vendorarch}/APR/
|
|
cp -av docs/api/Apache2/*.pod %{buildroot}/%{perl_vendorarch}/Apache2/
|
|
cp -av docs/api/ModPerl/*.pod %{buildroot}/%{perl_vendorarch}/ModPerl/
|
|
find %{buildroot} -type f -name '*.orig' -delete -print
|
|
|
|
%files
|
|
%defattr(-,root,root)
|
|
%doc Changes INSTALL LICENSE README RELEASE STATUS
|
|
%doc docs
|
|
%dir %{apache_libexecdir}
|
|
%{apache_libexecdir}/mod_perl.so
|
|
%config(noreplace) %{apache_sysconfdir}/mod_perl-startup.pl
|
|
%config(noreplace) %{apache_sysconfdir}/conf.d/mod_perl.conf
|
|
%dir %{apache_serverroot}/perl-lib
|
|
%{_mandir}/man3/*
|
|
%{perl_vendorarch}/Apache
|
|
%{perl_vendorarch}/Apache2
|
|
%{perl_vendorarch}/APR
|
|
%{perl_vendorarch}/APR.pm
|
|
%{perl_vendorarch}/Bundle
|
|
%{perl_vendorarch}/ModPerl
|
|
#%{perl_vendorarch}/MyTest
|
|
#%dir %{perl_sitearch}/auto
|
|
%{perl_vendorarch}/auto/*
|
|
%{perl_vendorarch}/mod_perl2.pm
|
|
%{perl_vendorarch}/*.pod
|
|
%{_bindir}/mp2bug
|
|
|
|
%files devel
|
|
%defattr(-,root,root)
|
|
%{apache_includedir}/*
|
|
%{perl_vendorarch}/MyTest/
|
|
|
|
%changelog
|