From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-904043-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 7E282138331 for <garchives@archives.gentoo.org>; Fri, 30 Sep 2016 16:53:58 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D067DE0A9D; Fri, 30 Sep 2016 16:53:57 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id A393CE0A9D for <gentoo-commits@lists.gentoo.org>; Fri, 30 Sep 2016 16:53:57 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id AE3F2340AB2 for <gentoo-commits@lists.gentoo.org>; Fri, 30 Sep 2016 16:53:56 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 3C408241F for <gentoo-commits@lists.gentoo.org>; Fri, 30 Sep 2016 16:53:54 +0000 (UTC) From: "Andreas Hüttel" <dilfridge@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Andreas Hüttel" <dilfridge@gentoo.org> Message-ID: <1475254392.05d8230b31fa9ecffd92089b8b24078a56bbe29e.dilfridge@gentoo> Subject: [gentoo-commits] dev/dilfridge:master commit in: www-apache/mod_perl/files/2.0.3/, www-apache/mod_perl/files/, ... X-VCS-Repository: dev/dilfridge X-VCS-Files: www-apache/mod_perl/Manifest www-apache/mod_perl/files/2.0.3/75_mod_perl.2.2.conf www-apache/mod_perl/files/2.0.3/75_mod_perl.conf www-apache/mod_perl/files/2.0.3/apache2-mod_perl-startup.pl www-apache/mod_perl/files/mod_perl-2.0.1-sneak-tmpdir.patch www-apache/mod_perl/files/mod_perl-2.0.10_pre201601-bundled-Apache-Test.patch www-apache/mod_perl/files/mod_perl-2.0.4-inline.patch www-apache/mod_perl/files/mod_perl-2.0.7-bundled-Apache-Test.patch www-apache/mod_perl/files/mod_perl-2.0.8-bundled-Apache-Test.patch www-apache/mod_perl/files/mod_perl_init_b554794.patch www-apache/mod_perl/files/use-client_ip-client_add-instead-of-remote_ip-remote.patch www-apache/mod_perl/files/use-log.level-instead-of-loglevel.patch www-apache/mod_perl/metadata.xml www-apache/mod_perl/mod_perl-2.0.10_pre201601.ebuild www-apache/mod_perl/mod_perl-2.0.8-r3.ebuild www-apache/mod_perl/mod_perl-2.0.8.ebuild X-VCS-Directories: www-apache/mod_perl/files/2.0.3/ www-apache/mod_perl/ www-apache/mod_perl/files/ X-VCS-Committer: dilfridge X-VCS-Committer-Name: Andreas Hüttel X-VCS-Revision: 05d8230b31fa9ecffd92089b8b24078a56bbe29e X-VCS-Branch: master Date: Fri, 30 Sep 2016 16:53:54 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 2d0c0ad2-efef-4c1f-aa13-5065a2efc219 X-Archives-Hash: 0472919669414d3c9f3f4f0e57d98cbe commit: 05d8230b31fa9ecffd92089b8b24078a56bbe29e Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org> AuthorDate: Fri Sep 30 16:53:12 2016 +0000 Commit: Andreas Hüttel <dilfridge <AT> gentoo <DOT> org> CommitDate: Fri Sep 30 16:53:12 2016 +0000 URL: https://gitweb.gentoo.org/dev/dilfridge.git/commit/?id=05d8230b www-apache/mod_perl: Copy from main tree www-apache/mod_perl/Manifest | 2 + .../mod_perl/files/2.0.3/75_mod_perl.2.2.conf | 50 +++++ www-apache/mod_perl/files/2.0.3/75_mod_perl.conf | 54 +++++ .../files/2.0.3/apache2-mod_perl-startup.pl | 24 ++ .../files/mod_perl-2.0.1-sneak-tmpdir.patch | 11 + ...perl-2.0.10_pre201601-bundled-Apache-Test.patch | 123 +++++++++++ .../mod_perl/files/mod_perl-2.0.4-inline.patch | 22 ++ .../files/mod_perl-2.0.7-bundled-Apache-Test.patch | 134 ++++++++++++ .../files/mod_perl-2.0.8-bundled-Apache-Test.patch | 127 +++++++++++ .../mod_perl/files/mod_perl_init_b554794.patch | 241 +++++++++++++++++++++ ...ip-client_add-instead-of-remote_ip-remote.patch | 47 ++++ .../files/use-log.level-instead-of-loglevel.patch | 27 +++ www-apache/mod_perl/metadata.xml | 12 + .../mod_perl/mod_perl-2.0.10_pre201601.ebuild | 165 ++++++++++++++ www-apache/mod_perl/mod_perl-2.0.8-r3.ebuild | 165 ++++++++++++++ www-apache/mod_perl/mod_perl-2.0.8.ebuild | 157 ++++++++++++++ 16 files changed, 1361 insertions(+) diff --git a/www-apache/mod_perl/Manifest b/www-apache/mod_perl/Manifest new file mode 100644 index 0000000..3c73173 --- /dev/null +++ b/www-apache/mod_perl/Manifest @@ -0,0 +1,2 @@ +DIST mod_perl-2.0.10_pre201601.tar.gz 3854229 SHA256 a89c23b66b21c600b74a48125c02c91159c07b08cc07fb4f55015e8e07713697 SHA512 04e57e79031374f3ec432e950fb9f79d1202da9dfc0d86a5137b7346c18f313a4e58ecfffed51efd7e6494baec86b22a42d6712ce5f7824f9f479c05bac00659 WHIRLPOOL 5d37b067aa945cafc0cc7a1f1b27257d8409f6804f22880ae7fd6c21424bbd2c07bace483d95590d255678725f67d081741978cff24cfc91716c08294547e622 +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 0000000..596d2cc --- /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 0000000..9cf7b7b --- /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 0000000..afc048a --- /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 0000000..0930278 --- /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.10_pre201601-bundled-Apache-Test.patch b/www-apache/mod_perl/files/mod_perl-2.0.10_pre201601-bundled-Apache-Test.patch new file mode 100644 index 0000000..af53cad --- /dev/null +++ b/www-apache/mod_perl/files/mod_perl-2.0.10_pre201601-bundled-Apache-Test.patch @@ -0,0 +1,123 @@ +diff -ruN mod_perl-2.0.10_pre201601.orig/Makefile.PL mod_perl-2.0.10_pre201601/Makefile.PL +--- mod_perl-2.0.10_pre201601.orig/Makefile.PL 2015-05-13 10:01:18.000000000 +0200 ++++ mod_perl-2.0.10_pre201601/Makefile.PL 2016-01-09 21:02:00.000000000 +0100 +@@ -25,7 +25,7 @@ + + } + +-use lib qw(lib Apache-Test/lib); ++use lib qw(lib); + + use Config; + use File::Spec::Functions; +@@ -122,15 +122,6 @@ + + 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) { +@@ -853,14 +844,9 @@ + 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 + +@@ -871,42 +857,6 @@ + return $preamble; + } + +-sub MY::postamble { +- my $self = shift; +- +- my $string = $self->ModPerl::BuildMM::MY::postamble; +- +- if (!WIN32) { +- $string .= <<'EOF'; +-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/*/ +- +-EOF +- } +- +- $string .= <<'EOF'; +-mydist : Apache-Test/META.yml mod_perl.spec manifest tardist +- +-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 +diff -ruN mod_perl-2.0.10_pre201601.orig/lib/ModPerl/BuildMM.pm mod_perl-2.0.10_pre201601/lib/ModPerl/BuildMM.pm +--- mod_perl-2.0.10_pre201601.orig/lib/ModPerl/BuildMM.pm 2015-04-01 18:19:18.000000000 +0200 ++++ mod_perl-2.0.10_pre201601/lib/ModPerl/BuildMM.pm 2016-01-09 21:04:34.000000000 +0100 +@@ -39,12 +39,10 @@ + 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"; + } + +@@ -271,7 +269,7 @@ + + 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 -ruN mod_perl-2.0.10_pre201601.orig/lib/ModPerl/Manifest.pm mod_perl-2.0.10_pre201601/lib/ModPerl/Manifest.pm +--- mod_perl-2.0.10_pre201601.orig/lib/ModPerl/Manifest.pm 2015-05-13 09:23:09.000000000 +0200 ++++ mod_perl-2.0.10_pre201601/lib/ModPerl/Manifest.pm 2016-01-09 21:04:50.000000000 +0100 +@@ -119,7 +119,6 @@ + t/apr-ext/perlio + # PAUSE breaks if a dist has more than one META.yml. the top-level + # META.yml already excludes Apache-Test from indexing +-Apache-Test/META.yml + # exclude Apache-Test/MANIFEST since it confuses the mp2 build (e.g it + # wants Apache-Test/META.yml which we don't supply, see above) + Apache-Test/MANIFEST 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 0000000..5c51a80 --- /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 0000000..478495e --- /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 0000000..2e4da92 --- /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/mod_perl_init_b554794.patch b/www-apache/mod_perl/files/mod_perl_init_b554794.patch new file mode 100644 index 0000000..b33a34a --- /dev/null +++ b/www-apache/mod_perl/files/mod_perl_init_b554794.patch @@ -0,0 +1,241 @@ +--- a/src/modules/perl/modperl_env.c.orig 2015-12-28 11:42:26.604632457 +0100 ++++ b/src/modules/perl/modperl_env.c 2015-12-28 12:36:35.305228288 +0100 +@@ -120,6 +120,7 @@ + const apr_array_header_t *array; + apr_table_entry_t *elts; + ++ modperl_env_init(aTHX); + modperl_env_untie(mg_flags); + + array = apr_table_elts(table); +@@ -431,13 +432,11 @@ + } + + /* to store the original virtual tables +- * these are global, not per-interpreter ++ * handy access to perl's original virtual tables + */ +-static MGVTBL MP_PERL_vtbl_env; +-static MGVTBL MP_PERL_vtbl_envelem; + + #define MP_PL_vtbl_call(name, meth) \ +- MP_PERL_vtbl_##name.svt_##meth(aTHX_ sv, mg) ++ PL_vtbl_##name.svt_##meth(aTHX_ sv, mg) + + #define MP_dENV_KEY \ + STRLEN klen; \ +@@ -534,6 +533,26 @@ + return 0; + } + ++static int modperl_env_magic_copy(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *name, I32 namlen) ++{ ++ MP_TRACE_e(MP_FUNC, "setting up %%ENV element magic"); ++ sv_magicext(nsv, mg->mg_obj, toLOWER(mg->mg_type), &MP_vtbl_envelem, name, namlen); ++ ++ return 1; ++} ++ ++static int modperl_env_magic_local_all(pTHX_ SV *nsv, MAGIC *mg) ++{ ++ MAGIC *nmg; ++ MP_TRACE_e(MP_FUNC, "localizing %%ENV"); ++ nmg = sv_magicext(nsv, mg->mg_obj, mg->mg_type, &MP_vtbl_env, (char*)NULL, 0); ++ nmg->mg_ptr = mg->mg_ptr; ++ nmg->mg_flags |= MGf_COPY; ++ nmg->mg_flags |= MGf_LOCAL; ++ ++ return 1; ++} ++ + static int modperl_env_magic_set(pTHX_ SV *sv, MAGIC *mg) + { + request_rec *r = (request_rec *)EnvMgObj; +@@ -625,15 +644,18 @@ + #endif + + /* override %ENV virtual tables with our own */ +-static MGVTBL MP_vtbl_env = { ++MGVTBL MP_vtbl_env = { + 0, + modperl_env_magic_set_all, + 0, + modperl_env_magic_clear_all, +- 0 ++ 0, ++ modperl_env_magic_copy, ++ 0, ++ modperl_env_magic_local_all + }; + +-static MGVTBL MP_vtbl_envelem = { ++MGVTBL MP_vtbl_envelem = { + 0, + modperl_env_magic_set, + 0, +@@ -641,20 +663,62 @@ + 0 + }; + +-void modperl_env_init(void) ++void modperl_env_init(pTHX) + { +- /* save originals */ +- StructCopy(&PL_vtbl_env, &MP_PERL_vtbl_env, MGVTBL); +- StructCopy(&PL_vtbl_envelem, &MP_PERL_vtbl_envelem, MGVTBL); ++ MAGIC *mg; + +- /* replace with our versions */ +- StructCopy(&MP_vtbl_env, &PL_vtbl_env, MGVTBL); +- StructCopy(&MP_vtbl_envelem, &PL_vtbl_envelem, MGVTBL); ++ /* Find the 'E' magic on %ENV */ ++ if (!my_perl) ++ return; ++ if (!PL_envgv) ++ return; ++ if (!SvRMAGICAL(ENVHV)) ++ return; ++ mg = mg_find((const SV *)ENVHV, PERL_MAGIC_env); ++ if (!mg) ++ return; ++ ++ /* Ignore it if it isn't perl's original version */ ++ if (mg->mg_virtual != &PL_vtbl_env) ++ return; ++ ++ MP_TRACE_e(MP_FUNC, "env_init - ptr: %x obj: %x flags: %x", ++ mg->mg_ptr, mg->mg_obj, mg->mg_flags); ++ ++ /* Remove it */ ++ mg_free_type((SV*)ENVHV, PERL_MAGIC_env); ++ ++ /* Add our version instead */ ++ mg = sv_magicext((SV*)ENVHV, (SV*)NULL, PERL_MAGIC_env, &MP_vtbl_env, (char*)NULL, 0); ++ mg->mg_flags |= MGf_COPY; ++ mg->mg_flags |= MGf_LOCAL; + } + +-void modperl_env_unload(void) ++void modperl_env_unload(pTHX) + { +- /* restore originals */ +- StructCopy(&MP_PERL_vtbl_env, &PL_vtbl_env, MGVTBL); +- StructCopy(&MP_PERL_vtbl_envelem, &PL_vtbl_envelem, MGVTBL); ++ MAGIC *mg; ++ ++ /* Find the 'E' magic on %ENV */ ++ if (!my_perl) ++ return; ++ if (!PL_envgv) ++ return; ++ if (!SvRMAGICAL(ENVHV)) ++ return; ++ mg = mg_find((const SV *)ENVHV, PERL_MAGIC_env); ++ if (!mg) ++ return; ++ ++ /* Ignore it if it isn't our version */ ++ if (mg->mg_virtual != &MP_vtbl_env) ++ return; ++ ++ MP_TRACE_e(MP_FUNC, "env_unload - ptr: %x obj: %x flags: %x", ++ mg->mg_ptr, mg->mg_obj, mg->mg_flags); ++ ++ /* Remove it */ ++ mg_free_type((SV*)ENVHV, PERL_MAGIC_env); ++ ++ /* Restore perl's original version */ ++ sv_magicext((SV*)ENVHV, (SV*)NULL, PERL_MAGIC_env, &PL_vtbl_env, (char*)NULL, 0); + } +--- a/src/modules/perl/modperl_env.h.orig 2015-12-28 11:42:34.868727490 +0100 ++++ b/src/modules/perl/modperl_env.h 2015-12-28 12:37:47.730041274 +0100 +@@ -28,7 +28,7 @@ + MP_magical_tie(ENVHV, mg_flags) + + #define modperl_envelem_tie(sv, key, klen) \ +- sv_magic(sv, (SV *)NULL, 'e', key, klen) ++ sv_magicext(sv, (SV *)NULL, PERL_MAGIC_envelem, &MP_vtbl_envelem, key, klen) + + void modperl_env_hash_keys(pTHX); + +@@ -58,8 +58,11 @@ + + void modperl_env_request_untie(pTHX_ request_rec *r); + +-void modperl_env_init(void); ++void modperl_env_init(pTHX); + +-void modperl_env_unload(void); ++void modperl_env_unload(pTHX); ++ ++MGVTBL MP_vtbl_env; ++MGVTBL MP_vtbl_envelem; + + #endif /* MODPERL_ENV_H */ +Index: trunk/src/modules/perl/modperl_perl.c +=================================================================== +--- trunk/src/modules/perl/modperl_perl.c (revision 1717473) ++++ trunk/src/modules/perl/modperl_perl.c (revision 1717474) +@@ -181,6 +181,8 @@ + } + } + ++ modperl_env_unload(perl); ++ + perl_destruct(perl); + + /* XXX: big bug in 5.6.1 fixed in 5.7.2+ +Index: trunk/src/modules/perl/mod_perl.c +=================================================================== +--- trunk/src/modules/perl/mod_perl.c (revision 1717473) ++++ trunk/src/modules/perl/mod_perl.c (revision 1717474) +@@ -262,6 +262,8 @@ + exit(1); + } + ++ modperl_env_init(aTHX); ++ + /* suspend END blocks to be run at server shutdown */ + endav = PL_endav; + PL_endav = (AV *)NULL; +@@ -576,9 +578,6 @@ + /* modifies PL_ppaddr */ + modperl_perl_pp_set_all(); + +- /* modifies PL_vtbl_env{elem} */ +- modperl_env_init(); +- + return APR_SUCCESS; + } + +@@ -597,8 +596,6 @@ + + MP_TRACE_i(MP_FUNC, "mod_perl sys term"); + +- modperl_env_unload(); +- + modperl_perl_pp_unset_all(); + + PERL_SYS_TERM(); +Index: trunk/t/response/TestModperl/env.pm +=================================================================== +--- trunk/t/response/TestModperl/env.pm (revision 1717473) ++++ trunk/t/response/TestModperl/env.pm (revision 1717474) +@@ -15,7 +15,7 @@ + sub handler { + my $r = shift; + +- plan $r, tests => 23 + keys(%ENV); ++ plan $r, tests => 23 + 3 * keys(%ENV); + + my $env = $r->subprocess_env; + +@@ -75,6 +75,8 @@ + for my $key (sort keys %ENV) { + eval { delete $ENV{$key}; }; + ok t_cmp($@, '', $key); ++ ok t_cmp($ENV{$key}, undef, "ENV{$key} is empty"); ++ ok t_cmp($env->get($key), undef, "subprocess_env($key) is empty"); + } + + Apache2::Const::OK; 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 0000000..1a695b8 --- /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 0000000..aeb8d98 --- /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 0000000..f75208c --- /dev/null +++ b/www-apache/mod_perl/metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>idl0r@gentoo.org</email> + <name>Christian Ruppert</name> + </maintainer> +<maintainer type="project"> + <email>perl@gentoo.org</email> + <name>Gentoo Perl Project</name> + </maintainer> +</pkgmetadata> diff --git a/www-apache/mod_perl/mod_perl-2.0.10_pre201601.ebuild b/www-apache/mod_perl/mod_perl-2.0.10_pre201601.ebuild new file mode 100644 index 0000000..9735237 --- /dev/null +++ b/www-apache/mod_perl/mod_perl-2.0.10_pre201601.ebuild @@ -0,0 +1,165 @@ +# Copyright 1999-2016 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" +SRC_URI="http://dev.gentoo.org/~dilfridge/distfiles/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="1" +KEYWORDS="alpha amd64 ~arm ~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 + +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 +# uncomment this once we're packaging a proper release again + + # 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-r3.ebuild b/www-apache/mod_perl/mod_perl-2.0.8-r3.ebuild new file mode 100644 index 0000000..0f895d1 --- /dev/null +++ b/www-apache/mod_perl/mod_perl-2.0.8-r3.ebuild @@ -0,0 +1,165 @@ +# Copyright 1999-2016 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 ~arm ~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" + + # 554794 + epatch "${FILESDIR}/mod_perl_init_b554794.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 0000000..c605774 --- /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 +}