diff options
Diffstat (limited to 'www-apache/mod_perl')
14 files changed, 987 insertions, 0 deletions
diff --git a/www-apache/mod_perl/Manifest b/www-apache/mod_perl/Manifest new file mode 100644 index 000000000000..74557b1dcb49 --- /dev/null +++ b/www-apache/mod_perl/Manifest @@ -0,0 +1 @@ +DIST mod_perl-2.0.8.tar.gz 3790026 SHA256 35dc1b7a40a90a395ce88bba2df84f22289975f34d1757de6d715560c20a20e6 SHA512 d5090651699c4436fe8d0a525226543c971aa05db337dc1b1e89023183df1c7dd8b8775f3a0f7d3b9ec40e8c058ac23bd24141cf15a5fe5806226d634dfb4c87 WHIRLPOOL d22e1c353339b08ad752e9f9c7fc0ec4d6a173c4cd3004380b14098e1028737e0eb69d2f56dbe0da3cbfb01b31232c5073d7edb28bf4fed6b2ccd67b09ad7080 diff --git a/www-apache/mod_perl/files/2.0.3/75_mod_perl.2.2.conf b/www-apache/mod_perl/files/2.0.3/75_mod_perl.2.2.conf new file mode 100644 index 000000000000..596d2cc73c6e --- /dev/null +++ b/www-apache/mod_perl/files/2.0.3/75_mod_perl.2.2.conf @@ -0,0 +1,50 @@ +<IfDefine PERL> +LoadModule perl_module modules/mod_perl.so + +#PerlTrace all +PerlRequire "/etc/apache2/modules.d/apache2-mod_perl-startup.pl" +PerlModule ModPerl::Registry + +# Provide two aliases to the same cgi-bin directory, to see the effects of the +# 2 different mod_perl modes for Apache2::Registry Mode +Alias /perl/ /var/www/localhost/perl/ +# for Apache2::Perlrun Mode +Alias /cgi-perl/ /var/www/localhost/perl/ + +<Location /perl-status> + SetHandler perl-script + PerlResponseHandler Apache2::Status + Order deny,allow + Deny from all + Allow from 127.0.0.1 +</Location> + +<Directory /home/*/public_html/perl> + SetHandler perl-script + PerlResponseHandler ModPerl::PerlRun + Options -Indexes ExecCGI + PerlOptions +ParseHeaders +</Directory> + +# set Apache::Registry Mode for /perl Alias +<Location /perl/*.pl> + SetHandler perl-script + PerlResponseHandler ModPerl::Registry + Options -Indexes ExecCGI + PerlSendHeader On + Order allow,deny + Allow from all +</Location> + +# set Apache::PerlRun Mode for /cgi-perl Alias +<Location /cgi-perl/*.pl> + SetHandler perl-script + PerlResponseHandler ModPerl::PerlRun + Options -Indexes ExecCGI + PerlSendHeader On + Order allow,deny + Allow from all +</Location> +</IfDefine> + +# vim: ts=4 filetype=apache diff --git a/www-apache/mod_perl/files/2.0.3/75_mod_perl.conf b/www-apache/mod_perl/files/2.0.3/75_mod_perl.conf new file mode 100644 index 000000000000..9cf7b7b4394f --- /dev/null +++ b/www-apache/mod_perl/files/2.0.3/75_mod_perl.conf @@ -0,0 +1,54 @@ +<IfDefine PERL> +LoadModule perl_module modules/mod_perl.so + +#PerlTrace all +PerlRequire "/etc/apache2/modules.d/apache2-mod_perl-startup.pl" +PerlModule ModPerl::Registry + +# Provide two aliases to the same cgi-bin directory, to see the effects of the +# 2 different mod_perl modes for Apache2::Registry Mode +Alias /perl/ /var/www/localhost/perl/ +# for Apache2::Perlrun Mode +Alias /cgi-perl/ /var/www/localhost/perl/ + +<Location /perl-status> + SetHandler perl-script + PerlResponseHandler Apache2::Status + Require host localhost +</Location> + +<Directory /home/*/public_html/perl> + SetHandler perl-script + PerlResponseHandler ModPerl::PerlRun + PerlOptions +ParseHeaders + + # Clear all existing options and only permit cgi. + Options ExecCGI +</Directory> + +# set Apache::Registry Mode for /perl Alias +<Location /perl/*.pl> + SetHandler perl-script + PerlResponseHandler ModPerl::Registry + PerlSendHeader On + + # Clear all existing options and only permit cgi. + Options ExecCGI + + Require all granted +</Location> + +# set Apache::PerlRun Mode for /cgi-perl Alias +<Location /cgi-perl/*.pl> + SetHandler perl-script + PerlResponseHandler ModPerl::PerlRun + PerlSendHeader On + + # Clear all existing options and only permit cgi. + Options ExecCGI + + Require all granted +</Location> +</IfDefine> + +# vim: ts=4 filetype=apache diff --git a/www-apache/mod_perl/files/2.0.3/apache2-mod_perl-startup.pl b/www-apache/mod_perl/files/2.0.3/apache2-mod_perl-startup.pl new file mode 100644 index 000000000000..afc048ac125b --- /dev/null +++ b/www-apache/mod_perl/files/2.0.3/apache2-mod_perl-startup.pl @@ -0,0 +1,24 @@ +use lib qw(/home/httpd/perl); + +# enable if the mod_perl 1.0 compatibility is needed +#use Apache2::compat (); + +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; diff --git a/www-apache/mod_perl/files/mod_perl-2.0.1-sneak-tmpdir.patch b/www-apache/mod_perl/files/mod_perl-2.0.1-sneak-tmpdir.patch new file mode 100644 index 000000000000..0930278aeba3 --- /dev/null +++ b/www-apache/mod_perl/files/mod_perl-2.0.1-sneak-tmpdir.patch @@ -0,0 +1,11 @@ +--- t/conf/modperl_extra.pl.orig 2005-05-16 18:27:45.000000000 +1000 ++++ t/conf/modperl_extra.pl 2005-05-16 18:34:46.000000000 +1000 +@@ -136,6 +136,8 @@ + sub test_modperl_env { + # see t/response/TestModperl/env.pm + $ENV{MODPERL_EXTRA_PL} = __FILE__; ++ $ENV{TMPDIR} = __FILE__; ++ $ENV{TMPDIR} =~ s,/work/.*,/temp,; + } + + 1; diff --git a/www-apache/mod_perl/files/mod_perl-2.0.4-inline.patch b/www-apache/mod_perl/files/mod_perl-2.0.4-inline.patch new file mode 100644 index 000000000000..5c51a803b816 --- /dev/null +++ b/www-apache/mod_perl/files/mod_perl-2.0.4-inline.patch @@ -0,0 +1,22 @@ +https://bugs.gentoo.org/550244 + +taken from Fedora: +http://pkgs.fedoraproject.org/cgit/mod_perl.git/tree/mod_perl-2.0.4-inline.patch?h=f22 + +fixes building with gcc-5: +apache2: Syntax error on line 148 of /etc/apache2/httpd.conf: +Syntax error on line 2 of /etc/apache2/modules.d/75_mod_perl.conf: +Cannot load modules/mod_perl.so into server: +/usr/lib64/apache2/modules/mod_perl.so: undefined symbol: modperl_handler_name + +--- mod_perl-2.0.4/src/modules/perl/modperl_common_util.h.inline ++++ mod_perl-2.0.4/src/modules/perl/modperl_common_util.h +@@ -22,7 +22,7 @@ + #ifdef MP_DEBUG + #define MP_INLINE + #else +-#define MP_INLINE APR_INLINE ++#define MP_INLINE + #endif + + #ifdef CYGWIN diff --git a/www-apache/mod_perl/files/mod_perl-2.0.7-bundled-Apache-Test.patch b/www-apache/mod_perl/files/mod_perl-2.0.7-bundled-Apache-Test.patch new file mode 100644 index 000000000000..478495e5d769 --- /dev/null +++ b/www-apache/mod_perl/files/mod_perl-2.0.7-bundled-Apache-Test.patch @@ -0,0 +1,134 @@ +diff --git a/Makefile.PL b/Makefile.PL +index c4a0430..e85cf01 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -24,7 +24,7 @@ BEGIN { + + } + +-use lib qw(lib Apache-Test/lib); ++use lib qw(lib); + + use Config; + use File::Spec::Functions; +@@ -117,16 +117,6 @@ sub get_DEFINE { + } + + sub configure { +- +- # mod_perl test suite relies on having Apache-Test bundled with +- # the mod_perl source, since any pre-installed version may not do +- # the right thing +- unless (-d "Apache-Test") { +- error "Can't find a sub-directory Apache-Test. " . +- "Make sure that you are using a complete source distribution"; +- exit 1; +- } +- + set_modperl_version(); + + if ($old_modperl_version) { +@@ -798,14 +788,9 @@ run_tests : test_clean + run_subtests :: + cd ModPerl-Registry && $(MAKE) test + +-run_subtests :: +- cd Apache-Reload && $(MAKE) test +- + EOF + + $preamble .= <<'EOF' unless $build->mpm_is_threaded(); +-run_subtests :: +- cd Apache-SizeLimit && $(MAKE) test + + EOF + +@@ -816,36 +801,6 @@ EOF + return $preamble; + } + +-sub MY::postamble { +- my $self = shift; +- +- my $string = $self->ModPerl::BuildMM::MY::postamble; +- +- $string .= <<'EOF'; +-mydist : Apache-Test/META.yml mod_perl.spec manifest tardist +- +-rpm: dist +- @[ -d $(PWD)/rpm ] || mkdir $(PWD)/rpm +- rpmbuild -ta --define "_rpmdir $(PWD)/rpm" \ +- --define "_srcrpmdir $(PWD)/rpm" \ +- $(DISTVNAME).tar.gz +- @mv $(PWD)/rpm/*/*.rpm $(PWD)/rpm/ +- @rm -rf $(PWD)/rpm/*/ +- +-mod_perl.spec: build/make_rpm_spec +- $(PERL) build/make_rpm_spec +- +-Apache-Test/META.yml: +- cd Apache-Test && make metafile +- +-tag : +- svn copy https://svn.apache.org/repos/asf/perl/modperl/branches/release/$(VERSION_SYM) https://svn.apache.org/repos/asf/perl/modperl/tags/$(VERSION_SYM) +- svn copy https://svn.apache.org/repos/asf/perl/modperl/docs/trunk https://svn.apache.org/repos/asf/perl/modperl/docs/tags/$(VERSION_SYM) +-EOF +- +- return $string; +-} +- + # this is a workaround so that ModPerl::MM will move MY::constants + # away, and Apache-Test/Makefile.PL which has its own MY::constants + # won't get complaints on MY::constants redefined +diff --git a/ModPerl-Registry/Makefile.PL b/ModPerl-Registry/Makefile.PL +index e72e65c..8610935 100644 +--- a/ModPerl-Registry/Makefile.PL ++++ b/ModPerl-Registry/Makefile.PL +@@ -14,7 +14,7 @@ use Apache::TestMM qw(test clean); + + # prerequisites + my %require = ( +- "Apache::Test" => "", # any version will do? ++ "Apache::Test" => 0, # any version will do? + ); + + my @scripts = qw(t/TEST t/SMOKE); +diff --git a/lib/ModPerl/BuildMM.pm b/lib/ModPerl/BuildMM.pm +index 1c729e2..8651999 100644 +--- a/lib/ModPerl/BuildMM.pm ++++ b/lib/ModPerl/BuildMM.pm +@@ -38,12 +38,10 @@ my @methods = grep *{$stash->{$_}}{CODE}, keys %$stash; + ModPerl::MM::override_eu_mm_mv_all_methods(@methods); + use strict 'refs'; + +-my $apache_test_dir = catdir Cwd::getcwd(), "Apache-Test", "lib"; +- + #to override MakeMaker MOD_INSTALL macro + sub mod_install { + q{$(PERL) -I$(INST_LIB) -I$(PERL_LIB) \\}."\n" . +- qq{-I$apache_test_dir -MModPerl::BuildMM \\}."\n" . ++ qq{-MModPerl::BuildMM \\}."\n" . + q{-e "ExtUtils::Install::install({@ARGV},'$(VERBINST)',0,'$(UNINST)');"}."\n"; + } + +@@ -269,7 +267,7 @@ sub ModPerl::BuildMM::MY::postamble { + + push @target, + '$(FULLPERL) -I$(INST_LIB) ' . +- "-I$apache_test_dir -MModPerl::BuildMM " . ++ "-MModPerl::BuildMM " . + "-e ModPerl::BuildMM::glue_pod $pm $podpath $blib"; + + # Win32 doesn't normally install man pages +diff --git a/lib/ModPerl/Manifest.pm b/lib/ModPerl/Manifest.pm +index 1e856bc..9f1833c 100644 +--- a/lib/ModPerl/Manifest.pm ++++ b/lib/ModPerl/Manifest.pm +@@ -33,7 +33,6 @@ our @EXPORT_OK = qw(mkmanifest); + my @add_files = qw{ + MANIFEST + mod_perl.spec +- Apache-Test/META.yml + }; + + sub get_svn_files { diff --git a/www-apache/mod_perl/files/mod_perl-2.0.8-bundled-Apache-Test.patch b/www-apache/mod_perl/files/mod_perl-2.0.8-bundled-Apache-Test.patch new file mode 100644 index 000000000000..2e4da922aeaf --- /dev/null +++ b/www-apache/mod_perl/files/mod_perl-2.0.8-bundled-Apache-Test.patch @@ -0,0 +1,127 @@ +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -24,7 +24,7 @@ BEGIN { + + } + +-use lib qw(lib Apache-Test/lib); ++use lib qw(lib); + + use Config; + use File::Spec::Functions; +@@ -117,16 +117,6 @@ sub get_DEFINE { + } + + sub configure { +- +- # mod_perl test suite relies on having Apache-Test bundled with +- # the mod_perl source, since any pre-installed version may not do +- # the right thing +- unless (-d "Apache-Test") { +- error "Can't find a sub-directory Apache-Test. " . +- "Make sure that you are using a complete source distribution"; +- exit 1; +- } +- + set_modperl_version(); + + if ($old_modperl_version) { +@@ -798,14 +788,9 @@ run_tests : test_clean + run_subtests :: + cd ModPerl-Registry && $(MAKE) test + +-run_subtests :: +- cd Apache-Reload && $(MAKE) test +- + EOF + + $preamble .= <<'EOF' unless $build->mpm_is_threaded(); +-run_subtests :: +- cd Apache-SizeLimit && $(MAKE) test + + EOF + +@@ -816,37 +801,6 @@ EOF + return $preamble; + } + +-sub MY::postamble { +- my $self = shift; +- +- my $string = $self->ModPerl::BuildMM::MY::postamble; +- +- $string .= <<'EOF'; +-mydist : Apache-Test/META.yml mod_perl.spec manifest tardist +- +-rpm: dist +- @[ -d $(PWD)/rpm ] || mkdir $(PWD)/rpm +- rpmbuild -ta --define "_rpmdir $(PWD)/rpm" \ +- --define "_srcrpmdir $(PWD)/rpm" \ +- $(DISTVNAME).tar.gz +- @mv $(PWD)/rpm/*/*.rpm $(PWD)/rpm/ +- @rm -rf $(PWD)/rpm/*/ +- +-mod_perl.spec: build/make_rpm_spec +- $(PERL) build/make_rpm_spec +- +-Apache-Test/META.yml: +- cd Apache-Test && make metafile +- +-tag : +- svn copy https://svn.apache.org/repos/asf/perl/modperl/trunk https://svn.apache.org/repos/asf/perl/modperl/branches/release/$(VERSION_SYM) +- svn copy https://svn.apache.org/repos/asf/perl/modperl/branches/release/$(VERSION_SYM) https://svn.apache.org/repos/asf/perl/modperl/tags/$(VERSION_SYM) +- svn copy https://svn.apache.org/repos/asf/perl/modperl/docs/trunk https://svn.apache.org/repos/asf/perl/modperl/docs/tags/$(VERSION_SYM) +-EOF +- +- return $string; +-} +- + # this is a workaround so that ModPerl::MM will move MY::constants + # away, and Apache-Test/Makefile.PL which has its own MY::constants + # won't get complaints on MY::constants redefined +--- a/ModPerl-Registry/Makefile.PL ++++ b/ModPerl-Registry/Makefile.PL +@@ -14,7 +14,7 @@ use Apache::TestMM qw(test clean); + + # prerequisites + my %require = ( +- "Apache::Test" => "", # any version will do? ++ "Apache::Test" => 0, # any version will do? + ); + + my @scripts = qw(t/TEST t/SMOKE); +--- a/lib/ModPerl/BuildMM.pm ++++ b/lib/ModPerl/BuildMM.pm +@@ -38,12 +38,10 @@ my @methods = grep *{$stash->{$_}}{CODE} + ModPerl::MM::override_eu_mm_mv_all_methods(@methods); + use strict 'refs'; + +-my $apache_test_dir = catdir Cwd::getcwd(), "Apache-Test", "lib"; +- + #to override MakeMaker MOD_INSTALL macro + sub mod_install { + q{$(PERL) -I$(INST_LIB) -I$(PERL_LIB) \\}."\n" . +- qq{-I$apache_test_dir -MModPerl::BuildMM \\}."\n" . ++ qq{-MModPerl::BuildMM \\}."\n" . + q{-e "ExtUtils::Install::install({@ARGV},'$(VERBINST)',0,'$(UNINST)');"}."\n"; + } + +@@ -269,7 +267,7 @@ sub ModPerl::BuildMM::MY::postamble { + + push @target, + '$(FULLPERL) -I$(INST_LIB) ' . +- "-I$apache_test_dir -MModPerl::BuildMM " . ++ "-MModPerl::BuildMM " . + "-e ModPerl::BuildMM::glue_pod $pm $podpath $blib"; + + # Win32 doesn't normally install man pages +--- a/lib/ModPerl/Manifest.pm ++++ b/lib/ModPerl/Manifest.pm +@@ -33,7 +33,6 @@ our @EXPORT_OK = qw(mkmanifest); + my @add_files = qw{ + MANIFEST + mod_perl.spec +- Apache-Test/META.yml + }; + + sub get_svn_files { diff --git a/www-apache/mod_perl/files/use-client_ip-client_add-instead-of-remote_ip-remote.patch b/www-apache/mod_perl/files/use-client_ip-client_add-instead-of-remote_ip-remote.patch new file mode 100644 index 000000000000..1a695b85409c --- /dev/null +++ b/www-apache/mod_perl/files/use-client_ip-client_add-instead-of-remote_ip-remote.patch @@ -0,0 +1,47 @@ +From 3fb7843aa2aa992be430068929f4e1cc7787a233 Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Tue, 3 Apr 2012 19:25:41 +0200 +Subject: [PATCH] use client_ip/client_add instead of remote_ip/remote_addr + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + xs/maps/apache2_structures.map | 4 ++-- + xs/tables/current/Apache2/StructureTable.pm | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/xs/maps/apache2_structures.map b/xs/maps/apache2_structures.map +index f86ec93..c0fcf78 100644 +--- a/xs/maps/apache2_structures.map ++++ b/xs/maps/apache2_structures.map +@@ -106,8 +106,8 @@ $ limit_req_fields + < local_addr + < local_ip + < local_host +-< remote_addr +- remote_ip ++< client_addr ++ client_ip + < remote_host + - remote_logname + < aborted +diff --git a/xs/tables/current/Apache2/StructureTable.pm b/xs/tables/current/Apache2/StructureTable.pm +index af50be1..0c0465a 100644 +--- a/xs/tables/current/Apache2/StructureTable.pm ++++ b/xs/tables/current/Apache2/StructureTable.pm +@@ -2708,11 +2708,11 @@ $Apache2::StructureTable = [ + }, + { + 'type' => 'apr_sockaddr_t *', +- 'name' => 'remote_addr' ++ 'name' => 'client_addr' + }, + { + 'type' => 'char *', +- 'name' => 'remote_ip' ++ 'name' => 'client_ip' + }, + { + 'type' => 'char *', +-- +1.7.8.5 + diff --git a/www-apache/mod_perl/files/use-log.level-instead-of-loglevel.patch b/www-apache/mod_perl/files/use-log.level-instead-of-loglevel.patch new file mode 100644 index 000000000000..aeb8d98af79d --- /dev/null +++ b/www-apache/mod_perl/files/use-log.level-instead-of-loglevel.patch @@ -0,0 +1,27 @@ +From 0d6ac25c1c7871be52e8399c6e8bc8509ed5f3d9 Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Tue, 3 Apr 2012 19:30:33 +0200 +Subject: [PATCH] use log.level instead of loglevel + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + xs/maps/apache2_structures.map | 2 +- + xs/tables/current/Apache2/StructureTable.pm | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/xs/tables/current/Apache2/StructureTable.pm b/xs/tables/current/Apache2/StructureTable.pm +index 0c0465a..439184e 100644 +--- a/xs/tables/current/Apache2/StructureTable.pm ++++ b/xs/tables/current/Apache2/StructureTable.pm +@@ -3245,7 +3245,7 @@ $Apache2::StructureTable = [ + }, + { + 'type' => 'int', +- 'name' => 'loglevel' ++ 'name' => 'log.level' + }, + { + 'type' => 'int', +-- +1.7.8.5 + diff --git a/www-apache/mod_perl/metadata.xml b/www-apache/mod_perl/metadata.xml new file mode 100644 index 000000000000..8be00b39dc0e --- /dev/null +++ b/www-apache/mod_perl/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>perl</herd> + <maintainer> + <email>idl0r@gentoo.org</email> + <name>Christian Ruppert</name> + </maintainer> +</pkgmetadata> diff --git a/www-apache/mod_perl/mod_perl-2.0.8-r1.ebuild b/www-apache/mod_perl/mod_perl-2.0.8-r1.ebuild new file mode 100644 index 000000000000..0520b8c66d7e --- /dev/null +++ b/www-apache/mod_perl/mod_perl-2.0.8-r1.ebuild @@ -0,0 +1,162 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +inherit depend.apache apache-module perl-module eutils + +DESCRIPTION="An embedded Perl interpreter for Apache2" +SRC_URI="mirror://apache/perl/${P}.tar.gz" +HOMEPAGE="https://projects.apache.org/projects/mod_perl.html" + +LICENSE="GPL-2" +KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="debug" +SLOT="1" + +# Make sure we always use the latest Apache-Test version or even check the +# version of the bundled Apache-Test! +# +# We need both, apache and perl but either apache without threads or perl with +# ithreads, bug 373943 +DEPEND=" + >=dev-perl/Apache-Test-1.360 + >=dev-perl/CGI-3.08 + dev-lang/perl[ithreads] + www-servers/apache +" +RDEPEND="${DEPEND}" +PDEPEND=">=dev-perl/Apache-Reload-0.11 + >=dev-perl/Apache-SizeLimit-0.95" + +APACHE2_MOD_FILE="${S}/src/modules/perl/mod_perl.so" +APACHE2_MOD_CONF="2.0.3/75_${PN}" +APACHE2_MOD_DEFINE="PERL" + +SRC_TEST="do" + +DOCFILES="Changes INSTALL README STATUS" + +need_apache2_4 + +src_prepare() { + perl-module_src_prepare + + # I am not entirely happy with this solution, but here's what's + # going on here if someone wants to take a stab at another + # approach. When userpriv compilation is off, then the make + # process drops to user "nobody" to run the test servers. This + # server is closed, and then the socket is rebound using + # SO_REUSEADDR. If the same user does this, there is no problem, + # and the socket may be rebound immediately. If a different user + # (yes, in my testing, even root) attempts to rebind, it fails. + # Since the "is the socket available yet" code and the + # second-batch bind call both run as root, this will fail. + + # The upstream settings on my test machine cause the second batch + # of tests to fail, believing the socket to still be in use. I + # tried patching various parts to make them run as the user + # specified in $config->{vars}{user} using getpwnam, but found + # this patch to be fairly intrusive, because the userid must be + # restored and the patch must be applied to multiple places. + + # For now, we will simply extend the timeout in hopes that in the + # non-userpriv case, the socket will clear from the kernel tables + # normally, and the tests will proceed. + + # If anybody is still having problems, then commenting out "make + # test" below should allow the software to build properly. + + # Robert Coie <rac@gentoo.org> 2003.05.06 +# sed -i -e "s/sleep \$_/sleep \$_ << 2/" \ +# "${S}"/Apache-Test/lib/Apache/TestServer.pm \ +# || die "problem editing TestServer.pm" + + # rendhalver - this got redone for 2.0.1 and seems to fix the make test problems + epatch "${FILESDIR}"/mod_perl-2.0.1-sneak-tmpdir.patch + + # bug 352724 + epatch "${FILESDIR}/${P}-bundled-Apache-Test.patch" + rm -rf Apache-{Test,Reload,SizeLimit}/ lib/Bundle/ + sed -i -e 's:^Apache-\(Reload\|SizeLimit\|Test\).*::' \ + -e 's:^lib/Bundle/Apache2.pm::' MANIFEST || die + + # 410453 + epatch "${FILESDIR}/use-client_ip-client_add-instead-of-remote_ip-remote.patch" + epatch "${FILESDIR}/use-log.level-instead-of-loglevel.patch" +} + +src_configure() { + local myargs= + + if use debug; then + myargs="MP_TRACE=1 MP_DEBUG=1" + else + myargs="MP_TRACE=0 MP_DEBUG=0" + fi + + perl Makefile.PL \ + PREFIX="${EPREFIX}"/usr \ + INSTALLDIRS=vendor \ + MP_USE_DSO=1 \ + MP_APXS=${APXS} \ + MP_APR_CONFIG=/usr/bin/apr-1-config \ + ${myargs} || die +} + +src_test() { + # make test notes whether it is running as root, and drops + # privileges all the way to "nobody" if so, so we must adjust + # write permissions accordingly in this case. + + # IF YOU SUDO TO EMERGE AND HAVE !env_reset set testing will fail! + if [[ "$(id -u)" == "0" ]]; then + chown nobody:nobody "${WORKDIR}" + chown nobody:nobody "${T}" + fi + + # this does not || die because of bug 21325. kudos to smark for + # the idea of setting HOME. + TMPDIR="${T}" HOME="${T}/" perl-module_src_test +} + +src_install() { + apache-module_src_install + + emake DESTDIR="${D}" install || die + + # TODO: add some stuff from docs/ back? + + # rendhalver - fix the perllocal.pod that gets installed + # it seems to me that this has been getting installed for ages + perl_delete_localpod + # Remove empty .bs files as well + perl_delete_packlist + + insinto "${APACHE_MODULES_CONFDIR}" + doins "${FILESDIR}"/2.0.3/apache2-mod_perl-startup.pl || die + + # this is an attempt to get @INC in line with /usr/bin/perl. + # there is blib garbage in the mainstream one that can only be + # useful during internal testing, so we wait until here and then + # just go with a clean slate. should be much easier to see what's + # happening and revert if problematic. + + # Sorry for this evil hack... + perl_set_version # just to be sure... + sed -i -e "s,-I${S}/[^[:space:]\"\']\+[[:space:]]\?,,g" \ + -e "s,-typemap[[:space:]]${S}/[^[:space:]\"\']\+[[:space:]]\?,,g" \ + -e "s,${S}\(/[^[:space:]\"\']\+\)\?,/,g" "${D}/${VENDOR_ARCH}/Apache2/BuildConfig.pm" || die + + for fname in $(find "${D}" -type f -not -name '*.so'); do + grep -q "\(${D}\|${S}\)" "${fname}" && ewarn "QA: File contains a temporary path ${fname}" + sed -i -e "s:\(${D}\|${S}\):/:g" ${fname} + done + # All the rest + perl_remove_temppath +} + +pkg_postinst() { + apache-module_pkg_postinst +} diff --git a/www-apache/mod_perl/mod_perl-2.0.8-r2.ebuild b/www-apache/mod_perl/mod_perl-2.0.8-r2.ebuild new file mode 100644 index 000000000000..b4b85c96c065 --- /dev/null +++ b/www-apache/mod_perl/mod_perl-2.0.8-r2.ebuild @@ -0,0 +1,162 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +inherit depend.apache apache-module perl-module eutils + +DESCRIPTION="An embedded Perl interpreter for Apache2" +HOMEPAGE="https://projects.apache.org/projects/mod_perl.html" +SRC_URI="mirror://apache/perl/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="1" +KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="debug" + +# Make sure we always use the latest Apache-Test version or even check the +# version of the bundled Apache-Test! +# +# We need both, apache and perl but either apache without threads or perl with +# ithreads, bug 373943 +DEPEND=" + >=dev-perl/Apache-Test-1.360 + >=dev-perl/CGI-3.08 + dev-lang/perl[ithreads] + www-servers/apache +" +RDEPEND="${DEPEND}" +PDEPEND=">=dev-perl/Apache-Reload-0.11 + >=dev-perl/Apache-SizeLimit-0.95" + +APACHE2_MOD_FILE="${S}/src/modules/perl/mod_perl.so" +APACHE2_MOD_CONF="2.0.3/75_${PN}" +APACHE2_MOD_DEFINE="PERL" + +SRC_TEST="do" + +DOCFILES="Changes INSTALL README STATUS" + +need_apache2_4 + +src_prepare() { + perl-module_src_prepare + + # I am not entirely happy with this solution, but here's what's + # going on here if someone wants to take a stab at another + # approach. When userpriv compilation is off, then the make + # process drops to user "nobody" to run the test servers. This + # server is closed, and then the socket is rebound using + # SO_REUSEADDR. If the same user does this, there is no problem, + # and the socket may be rebound immediately. If a different user + # (yes, in my testing, even root) attempts to rebind, it fails. + # Since the "is the socket available yet" code and the + # second-batch bind call both run as root, this will fail. + + # The upstream settings on my test machine cause the second batch + # of tests to fail, believing the socket to still be in use. I + # tried patching various parts to make them run as the user + # specified in $config->{vars}{user} using getpwnam, but found + # this patch to be fairly intrusive, because the userid must be + # restored and the patch must be applied to multiple places. + + # For now, we will simply extend the timeout in hopes that in the + # non-userpriv case, the socket will clear from the kernel tables + # normally, and the tests will proceed. + + # If anybody is still having problems, then commenting out "make + # test" below should allow the software to build properly. + + # Robert Coie <rac@gentoo.org> 2003.05.06 +# sed -i -e "s/sleep \$_/sleep \$_ << 2/" \ +# "${S}"/Apache-Test/lib/Apache/TestServer.pm \ +# || die "problem editing TestServer.pm" + + # rendhalver - this got redone for 2.0.1 and seems to fix the make test problems + epatch "${FILESDIR}"/${PN}-2.0.1-sneak-tmpdir.patch + epatch "${FILESDIR}"/${PN}-2.0.4-inline.patch #550244 + + # bug 352724 + epatch "${FILESDIR}/${P}-bundled-Apache-Test.patch" + rm -rf Apache-{Test,Reload,SizeLimit}/ lib/Bundle/ + sed -i \ + -e 's:^Apache-\(Reload\|SizeLimit\|Test\).*::' \ + -e 's:^lib/Bundle/Apache2.pm::' \ + MANIFEST || die + + # 410453 + epatch "${FILESDIR}/use-client_ip-client_add-instead-of-remote_ip-remote.patch" + epatch "${FILESDIR}/use-log.level-instead-of-loglevel.patch" +} + +src_configure() { + local debug=$(usex debug 1 0) + perl Makefile.PL \ + PREFIX="${EPREFIX}"/usr \ + INSTALLDIRS=vendor \ + MP_USE_DSO=1 \ + MP_APXS=${APXS} \ + MP_APR_CONFIG=/usr/bin/apr-1-config \ + MP_TRACE=${debug} \ + MP_DEBUG=${debug} \ + || die +} + +src_test() { + # make test notes whether it is running as root, and drops + # privileges all the way to "nobody" if so, so we must adjust + # write permissions accordingly in this case. + + # IF YOU SUDO TO EMERGE AND HAVE !env_reset set testing will fail! + if [[ "$(id -u)" == "0" ]]; then + chown nobody:nobody "${WORKDIR}" "${T}" + fi + + # this does not || die because of bug 21325. kudos to smark for + # the idea of setting HOME. + TMPDIR="${T}" HOME="${T}/" perl-module_src_test +} + +src_install() { + apache-module_src_install + + default +#emake DESTDIR="${D}" install || die + + # TODO: add some stuff from docs/ back? + + # rendhalver - fix the perllocal.pod that gets installed + # it seems to me that this has been getting installed for ages + perl_delete_localpod + # Remove empty .bs files as well + perl_delete_packlist + + insinto "${APACHE_MODULES_CONFDIR}" + doins "${FILESDIR}"/2.0.3/apache2-mod_perl-startup.pl + + # this is an attempt to get @INC in line with /usr/bin/perl. + # there is blib garbage in the mainstream one that can only be + # useful during internal testing, so we wait until here and then + # just go with a clean slate. should be much easier to see what's + # happening and revert if problematic. + + # Sorry for this evil hack... + perl_set_version # just to be sure... + sed -i \ + -e "s,-I${S}/[^[:space:]\"\']\+[[:space:]]\?,,g" \ + -e "s,-typemap[[:space:]]${S}/[^[:space:]\"\']\+[[:space:]]\?,,g" \ + -e "s,${S}\(/[^[:space:]\"\']\+\)\?,/,g" \ + "${D}/${VENDOR_ARCH}/Apache2/BuildConfig.pm" || die + + for fname in $(find "${D}" -type f -not -name '*.so'); do + grep -q "\(${D}\|${S}\)" "${fname}" && ewarn "QA: File contains a temporary path ${fname}" + sed -i -e "s:\(${D}\|${S}\):/:g" ${fname} + done + # All the rest + perl_remove_temppath +} + +pkg_postinst() { + apache-module_pkg_postinst +} diff --git a/www-apache/mod_perl/mod_perl-2.0.8.ebuild b/www-apache/mod_perl/mod_perl-2.0.8.ebuild new file mode 100644 index 000000000000..c605774efabe --- /dev/null +++ b/www-apache/mod_perl/mod_perl-2.0.8.ebuild @@ -0,0 +1,157 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +inherit depend.apache apache-module perl-module eutils + +DESCRIPTION="An embedded Perl interpreter for Apache2" +SRC_URI="mirror://apache/perl/${P}.tar.gz" +HOMEPAGE="https://projects.apache.org/projects/mod_perl.html" + +LICENSE="GPL-2" +KEYWORDS="alpha amd64 ~hppa ia64 ppc ppc64 sparc x86" +IUSE="debug" +SLOT="1" + +# Make sure we always use the latest Apache-Test version or even check the +# version of the bundled Apache-Test! +# +# We need both, apache and perl but either apache without threads or perl with +# ithreads, bug 373943 +DEPEND="<www-servers/apache-2.4 + >=dev-perl/Apache-Test-1.360 + >=dev-perl/CGI-3.08 + dev-lang/perl + www-servers/apache + || ( www-servers/apache[-threads] dev-lang/perl[ithreads] )" +RDEPEND="${DEPEND}" +PDEPEND=">=dev-perl/Apache-Reload-0.11 + >=dev-perl/Apache-SizeLimit-0.95" + +APACHE2_MOD_FILE="${S}/src/modules/perl/mod_perl.so" +APACHE2_MOD_CONF="2.0.3/75_${PN}.2.2" +APACHE2_MOD_DEFINE="PERL" + +SRC_TEST="do" + +DOCFILES="Changes INSTALL README STATUS" + +need_apache2 + +src_prepare() { + perl-module_src_prepare + + # I am not entirely happy with this solution, but here's what's + # going on here if someone wants to take a stab at another + # approach. When userpriv compilation is off, then the make + # process drops to user "nobody" to run the test servers. This + # server is closed, and then the socket is rebound using + # SO_REUSEADDR. If the same user does this, there is no problem, + # and the socket may be rebound immediately. If a different user + # (yes, in my testing, even root) attempts to rebind, it fails. + # Since the "is the socket available yet" code and the + # second-batch bind call both run as root, this will fail. + + # The upstream settings on my test machine cause the second batch + # of tests to fail, believing the socket to still be in use. I + # tried patching various parts to make them run as the user + # specified in $config->{vars}{user} using getpwnam, but found + # this patch to be fairly intrusive, because the userid must be + # restored and the patch must be applied to multiple places. + + # For now, we will simply extend the timeout in hopes that in the + # non-userpriv case, the socket will clear from the kernel tables + # normally, and the tests will proceed. + + # If anybody is still having problems, then commenting out "make + # test" below should allow the software to build properly. + + # Robert Coie <rac@gentoo.org> 2003.05.06 +# sed -i -e "s/sleep \$_/sleep \$_ << 2/" \ +# "${S}"/Apache-Test/lib/Apache/TestServer.pm \ +# || die "problem editing TestServer.pm" + + # rendhalver - this got redone for 2.0.1 and seems to fix the make test problems + epatch "${FILESDIR}"/mod_perl-2.0.1-sneak-tmpdir.patch + + # bug 352724 + epatch "${FILESDIR}/${P}-bundled-Apache-Test.patch" + rm -rf Apache-{Test,Reload,SizeLimit}/ lib/Bundle/ + sed -i -e 's:^Apache-\(Reload\|SizeLimit\|Test\).*::' \ + -e 's:^lib/Bundle/Apache2.pm::' MANIFEST || die +} + +src_configure() { + local myargs= + + if use debug; then + myargs="MP_TRACE=1 MP_DEBUG=1" + else + myargs="MP_TRACE=0 MP_DEBUG=0" + fi + + perl Makefile.PL \ + PREFIX="${EPREFIX}"/usr \ + INSTALLDIRS=vendor \ + MP_USE_DSO=1 \ + MP_APXS=${APXS} \ + ${myargs} || die +} + +src_test() { + # make test notes whether it is running as root, and drops + # privileges all the way to "nobody" if so, so we must adjust + # write permissions accordingly in this case. + + # IF YOU SUDO TO EMERGE AND HAVE !env_reset set testing will fail! + if [[ "$(id -u)" == "0" ]]; then + chown nobody:nobody "${WORKDIR}" + chown nobody:nobody "${T}" + fi + + # this does not || die because of bug 21325. kudos to smark for + # the idea of setting HOME. + TMPDIR="${T}" HOME="${T}/" perl-module_src_test +} + +src_install() { + apache-module_src_install + + emake DESTDIR="${D}" install || die + + # TODO: add some stuff from docs/ back? + + # rendhalver - fix the perllocal.pod that gets installed + # it seems to me that this has been getting installed for ages + perl_delete_localpod + # Remove empty .bs files as well + perl_delete_packlist + + insinto "${APACHE_MODULES_CONFDIR}" + doins "${FILESDIR}"/2.0.3/apache2-mod_perl-startup.pl || die + + # this is an attempt to get @INC in line with /usr/bin/perl. + # there is blib garbage in the mainstream one that can only be + # useful during internal testing, so we wait until here and then + # just go with a clean slate. should be much easier to see what's + # happening and revert if problematic. + + # Sorry for this evil hack... + perl_set_version # just to be sure... + sed -i -e "s,-I${S}/[^[:space:]\"\']\+[[:space:]]\?,,g" \ + -e "s,-typemap[[:space:]]${S}/[^[:space:]\"\']\+[[:space:]]\?,,g" \ + -e "s,${S}\(/[^[:space:]\"\']\+\)\?,/,g" "${D}/${VENDOR_ARCH}/Apache2/BuildConfig.pm" || die + + for fname in $(find "${D}" -type f -not -name '*.so'); do + grep -q "\(${D}\|${S}\)" "${fname}" && ewarn "QA: File contains a temporary path ${fname}" + sed -i -e "s:\(${D}\|${S}\):/:g" ${fname} + done + # All the rest + perl_remove_temppath +} + +pkg_postinst() { + apache-module_pkg_postinst +} |