1
0
Files
apache2-mod_perl/apache2-mod_perl.spec

432 lines
16 KiB
RPMSpec

#
# spec file for package apache2-mod_perl (Version 2.0.3)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: apache2-mod_perl
BuildRequires: apache2-devel db-devel ed pcre-devel perl-BSD-Resource perl-Compress-Zlib perl-Tie-IxHash perl-libwww-perl sudo
%if 0%{sles_version} == 9
BuildRequires: openldap2-devel
%endif
%define apxs /usr/sbin/apxs2
%define apache apache2
%define apache_libexecdir %(%{apxs} -q LIBEXECDIR)
%define apache_sysconfdir %(%{apxs} -q SYSCONFDIR)
%define apache_includedir %(%{apxs} -q INCLUDEDIR)
%define apache_serverroot %(%{apxs} -q PREFIX)
%define apache_mmn %(MMN=$(%{apxs} -q LIBEXECDIR)_MMN; test -x $MMN && $MMN)
Summary: Embedded Perl for Apache
Group: Productivity/Networking/Web/Servers
Autoreqprov: on
License: The Apache Software License, Apache License which distribution and redistribution
Requires: apache2 %{apache_mmn}
Requires: perl = %{perl_version}
Requires: perl-HTML-Parser perl-Tie-IxHash
Requires: perl-URI perl-libwww-perl
Obsoletes: mod_perl_2
Conflicts: mod_perl
Autoreqprov: on
Version: 2.0.3
Release: 25
Source0: mod_perl-%{version}.tar.bz2
#%define apache_test_version 1_99_15
# cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic up -r MODPERL_%{apache_test_version}
#Source1: Apache-Test-%{apache_test_version}.tar.bz2
Patch: %{name}-%{version}-server_const.diff
URL: http://perl.apache.org/
Icon: mod_perl.xpm
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%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
/etc/apache2/conf.d/mod_perl.conf about this configuration.
%package devel
Summary: Embedded Perl for Apache - Development package
Group: Productivity/Networking/Web/Servers
Autoreqprov: on
Requires: %{name} = %{version}
Provides: apache2-mod_perl:/usr/include/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 mod_perl-%{version}
#temporarily disable t/api/server_const.t because it fails with current Apache2::ServerUtil::get_server_version()
%patch
%build
perl Makefile.PL MP_APXS=`which %{apxs}` MP_CCOPTS="$(%{apxs} -q CFLAGS)"
ln -s Apache-mod_perl_guide-1.29/bin bin
make
# 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 deflate_module /usr/%_lib/apache2-prefork/mod_deflate.so
LoadModule proxy_module /usr/%_lib/apache2-prefork/mod_proxy.so
LoadModule proxy_http_module /usr/%_lib/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
#}
t/TEST -start-httpd -port select -startup_timeout 720
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
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install_vendor
mkdir -p $RPM_BUILD_ROOT/%{apache_libexecdir}
cp -p src/modules/perl/mod_perl.so $RPM_BUILD_ROOT/%{apache_libexecdir}
mkdir -p $RPM_BUILD_ROOT/%{apache_includedir}/modules/perl
cp src/modules/perl/*.h $RPM_BUILD_ROOT/%{apache_includedir}/modules/perl/
%perl_process_packlist
mkdir -p $RPM_BUILD_ROOT/%{apache_sysconfdir}/conf.d
cat > $RPM_BUILD_ROOT/%{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
cat > $RPM_BUILD_ROOT/%{apache_sysconfdir}/conf.d/mod_perl.conf <<EOF
<Directory "%{apache_serverroot}/perl-lib">
AllowOverride None
Options None
Order allow,deny
Deny from all
</Directory>
<IfModule mod_perl.c>
PerlRequire "/etc/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>
# vim: ft=apache
EOF
# install documentation files alongside perl modules, where applicable
cp -av docs/api/*.pod $RPM_BUILD_ROOT/%{perl_vendorarch}/
cp -av docs/api/APR/*.pod $RPM_BUILD_ROOT/%{perl_vendorarch}/APR/
cp -av docs/api/Apache2/*.pod $RPM_BUILD_ROOT/%{perl_vendorarch}/Apache2/
cp -av docs/api/ModPerl/*.pod $RPM_BUILD_ROOT/%{perl_vendorarch}/ModPerl/
# remove unwanted files
find $RPM_BUILD_ROOT/%{perl_sitearch} -name .packlist | xargs --no-run-if-empty rm -v
%files
%defattr(-,root,root)
%doc Changes INSTALL LICENSE README RELEASE STATUS
%doc docs
%dir %{apache_libexecdir}
%{apache_libexecdir}/mod_perl.so
/var/adm/perl-modules/%{name}
%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
#%dir %{perl_sitearch}/auto
%{perl_vendorarch}/auto/*
%{perl_vendorarch}/mod_perl2.pm
%{perl_vendorarch}/*.pod
/usr/bin/mp2bug
%files devel
%defattr(-,root,root)
%dir %{apache_includedir}
%dir %{apache_includedir}/modules
%{apache_includedir}/modules/perl
%clean
if ! test -f /.buildenv; then
rm -rf $RPM_BUILD_ROOT
fi
%changelog
* Thu Jun 14 2007 - anicka@suse.cz
- split up devel subpackage
* Tue Jan 23 2007 - anicka@suse.cz
- update to 2.0.3
* Prevent things in %%INC that are not stat() able
from breaking Apache2::Status 'Loaded Modules'
under fatal warnings.
* Multi-line $PerlConfig is now working
* Fixed problems with add_config() and thread-safety
* Added support for httpd-2.2's new override_opts in
Apache2::Access. Calls to add_config() now accept
an override_opts value as the 4th argument.
* more minor fixes and improvements
- remove last two patches (fixed in upstream)
- temporarily disable t/api/server_const.t because
it does not work with current get_server_version()
* Wed Aug 09 2006 - poeml@suse.de
- build fix for sles9: add openldap2-devel to BuildRequires
* Fri Jul 14 2006 - olh@suse.de
- rename gzip archive from .bz2 to .gz
* Tue Jul 04 2006 - poeml@suse.de
- add mod_perl-r411028-t_api_status.patch and
mod_perl-t_content_length-r412063.patch, which both fix test
cases to work with httpd trunk
- remove SOL_IPV6-test.c and mod_perl-1.99_09-ipv6.dif, which have
not been needed for long enough now
- enable more apache modules in testing (deflate, proxy,
proxy_http)
* Mon Jan 30 2006 - poeml@suse.de
- removed libapr-util1-devel from BuildRequires (apache2-devel does
require it)
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Wed Dec 21 2005 - varkoly@suse.de
- Update to 2.0.2
* Mon Dec 12 2005 - poeml@suse.de
- fix quoting of dollar sign in here document which creates the
startup file [#136882]
* Tue Nov 15 2005 - uli@suse.de
- disabled tests on ARM, don't make much sense with current QEMU
* Fri Aug 12 2005 - poeml@suse.de
- install documentation [#95243]
* Tue Aug 02 2005 - pth@suse.de
- mod_perl2 needs a different startup file (#99275)
* Wed Jul 27 2005 - pth@suse.de
- Update to 2.0.1
* Tue Jan 25 2005 - poeml@suse.de
- update 2.0.0 to release candidate 4
- move usage hints from %%post into package description
- remove obsolete stuff from %%clean
* Mon Dec 20 2004 - poeml@suse.de
- update to 2.0.0, release candidate 1
- comment out mod_perl-1.99_09-ipv6.dif, it shouldn't be needed
anymore for the build farm
- the call to /usr/share/apache2/get_module_list is not needed
- fix startup file for recent changes
* Mon Oct 11 2004 - poeml@suse.de
- update to 1.99_15_20040907
- put Apache-Test in separate tarball
* Tue Mar 02 2004 - poeml@suse.de
- update to CVS snapshot 1.99_12_20040302
- two tests need small tweaks for file permissions
- mod_perl-1.99_09-perlmm.dif is obsolete
- remove file ROADMAP from filelist
* Thu Feb 19 2004 - ro@suse.de
- added check-build.sh (build on 2.6 hosts only)
* Wed Jan 28 2004 - ro@suse.de
- build as normal user
* Tue Nov 18 2003 - poeml@suse.de
- add some comments about the SOL_IPV6-test.c test program [#31246]
* Mon Sep 22 2003 - mls@suse.de
- fix build for official perl-5.8.1 (missing MM initialization)
* Thu Aug 28 2003 - poeml@suse.de
- last added patch is not needed
- clean up some old cruft from the spec file
- use only IPv4 sockets for testing, if SOL_IPV6 socket option is
not available. With this the package builds on all machines.
* Thu Aug 21 2003 - mjancar@suse.cz
- honor user supplied OPTIMIZE like original MakeMaker does
- use $RPM_OPT_FLAGS
* Wed Aug 20 2003 - mjancar@suse.cz
- require the perl version we build with
* Thu Aug 07 2003 - poeml@suse.de
- update to snapshot 1.99_09_20030803
- enable t/apr-ext/uuid.t (problem was that apr-config wasn't found)
- add db-devel to neededforbuild, so APR.so can be linked with
`apu-config --ldflags --libs`
* Wed Aug 06 2003 - poeml@suse.de
- fix last change: config-dist.sh did never exit with "ok"
* Wed Aug 06 2003 - ro@suse.de
- use different string in config-dist.sh (one we check for ...)
* Mon Aug 04 2003 - poeml@suse.de
- config-dist.sh: build only on hosts that support listening on
IPv6-only sockets
- increase the timeout when waiting for the test server.
- add extra precautions to stop test server. The start can hang if
the random device blocks, and when no pid file has been written
the testsuite will not kill it
- don't make use of %%jobs, it doesn't work
- obsolete mod_perl_2, the precursor
- fix typo in %%post
* Mon Aug 04 2003 - poeml@suse.de
- update to snapshot 1.99_09_20030803
- disable a new test that fails
- add a diagnostic config-dist.sh
* Mon Jul 28 2003 - poeml@suse.de
- update to snapshot 1.99_09_20030727
- add sudo to the buildsystem, so the tests can be run as nobody
- don't explicitely strip binaries since RPM handles it, and may
keep the stripped information somewhere
- add perl-Compress-Zlib to the buildsystem (for another test)
- CFLAGS can be taken from apxs -q CFLAGS, and they'll match. It's
better not to miss _FILE_OFFSET_BITS=64
- allow passing of "jobs" define from rpm for make -j
- install with install_vendor target, and use %%{perl_vendorarch}
macro
* Tue Jul 01 2003 - ro@suse.de
- use perl_process_packlist macro
* Tue Jun 17 2003 - poeml@suse.de
- add missing directories
- add a hint on how to configure mod_perl
* Tue Jun 10 2003 - poeml@suse.de
- update to 2.0_20030610110118 snapshot (called 1.99_09_20030610)
* Fri Feb 28 2003 - poeml@suse.de
- make the test suite pass again, by renaming two .pl files of the
test suite to .shtml, because mod_include didn't include files
other than .shtml any longer
* Wed Feb 12 2003 - poeml@suse.de
- rename package from mod_perl_2 to apache2-mod_perl
* Tue Feb 11 2003 - poeml@suse.de
- call the new apache configuration script, so modules that are
needed for the test get loaded
* Mon Feb 10 2003 - poeml@suse.de
- MPM specific links to mod_dav_svn.so are no longer needed
- add apache_libexecdir to filelist
* Tue Jan 14 2003 - poeml@suse.de
- update to 1.99_08
- <Perl> directive missing closing '>' bug fixed, and much else
- drop /etc/apache2/modules/mod_perl
- add /etc/apache2/mod_perl-startup.pl, setting up with
/srv/www/perl-lib in @INC
- add /etc/apache2/conf.d/mod_perl.conf, setting up scriptaliases
/perl/, and /cgi-perl/ (for unaltered CGI scripts under mod_perl)
- use %%defattr
* Wed Dec 04 2002 - poeml@suse.de
- update to 1.99_07
- build one module, it works for all MPMs
- use RPM_OPT_FLAGS
* Fri Aug 30 2002 - poeml@suse.de
- new package with mod_perl-1.99_05 for Apache 2