# # spec file for package apache2-mod_perl (Version 2.0.2) # # Copyright (c) 2006 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: Other License(s), see package, Apache 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.2 Release: 16 Source0: mod_perl-%{version}.tar.gz #%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 # patches for tests to run with httpd trunk Patch1: mod_perl-r411028-t_api_status.patch Patch2: mod_perl-t_content_length-r412063.patch 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: Add mod_perl to APACHE_MODULES in /etc/sysconfig/apache2 to load it into Apache. 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. %prep #%setup -q -n modperl-2.0 -a 1 %setup -q -n mod_perl-%{version} %patch1 -p3 %patch2 -p1 %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 < AllowOverride None Options None Order allow,deny Deny from all PerlRequire "/etc/apache2/mod_perl-startup.pl" ScriptAlias /perl/ "%{apache_serverroot}/cgi-bin/" # mod_perl mode SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI ScriptAlias /cgi-perl/ "%{apache_serverroot}/cgi-bin/" # perl cgi mode SetHandler perl-script PerlResponseHandler ModPerl::PerlRun PerlOptions +ParseHeaders Options +ExecCGI # The /cgi-bin/ ScriptAlias is already set up in httpd.conf # 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} %dir %{apache_includedir} %dir %{apache_includedir}/modules %{apache_includedir}/modules/perl %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 %clean if ! test -f /.buildenv; then rm -rf $RPM_BUILD_ROOT fi %changelog -n apache2-mod_perl * 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 - 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