commit: 2a7a49ce39447bf4a7effed3d38ec525f8d7cc4d Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Mon Jun 30 12:23:05 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Mon Jun 30 12:23:05 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2a7a49ce
www-apache/mod_perl: fix modern C issue Signed-off-by: Sam James <sam <AT> gentoo.org> .../mod_perl/files/mod_perl-2.0.13-c99.patch | 43 ++++++ www-apache/mod_perl/mod_perl-2.0.13-r2.ebuild | 144 +++++++++++++++++++++ 2 files changed, 187 insertions(+) diff --git a/www-apache/mod_perl/files/mod_perl-2.0.13-c99.patch b/www-apache/mod_perl/files/mod_perl-2.0.13-c99.patch new file mode 100644 index 000000000000..f0ef4cba0c52 --- /dev/null +++ b/www-apache/mod_perl/files/mod_perl-2.0.13-c99.patch @@ -0,0 +1,43 @@ +https://github.com/apache/mod_perl/commit/ead5012b9f8bca08415f39e15226dbc6112a9538 + +From ead5012b9f8bca08415f39e15226dbc6112a9538 Mon Sep 17 00:00:00 2001 +From: Joe Orton <[email protected]> +Date: Tue, 6 Feb 2024 08:33:52 +0000 +Subject: [PATCH] * src/modules/perl/modperl_common_util.c + (modperl_table_magic_copy): Use I32 rather than int for 'namelen' argument, + fixing an incompatible function pointer error/warning in a 32-bit build: +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +modperl_common_util.c:57:53: error: initialization of ‘int (*)(PerlInterpreter *, SV *, MAGIC *, SV *, const char *, I32)’ {aka ‘int (*)(struct interpreter *, struct sv *, struct magic *, struct sv *, const char *, long int)’} from incompatible pointer type ‘int (*)(PerlInterpreter *, SV *, MAGIC *, SV *, const char *, int)’ {aka ‘int (*)(struct interpreter *, struct sv *, struct magic *, struct sv *, const char *, int)’} [-Wincompatible-pointer-types] + 57 | modperl_table_magic_copy}; + | ^~~~~~~~~~~~~~~~~~~~~~~~ + +Checked back to Perl 5.14.x which has I32 (a typedef of long int on +i686) rather than int in the prototype for the svt_copy function +pointer in MGVTBL, so I32 appears to have been always correct here: + +int (*svt_copy)(SV *sv, MAGIC* mg, SV *nsv, const char *name, I32 namlen); + +per https://perldoc.perl.org/5.14.0/perlguts + + +git-svn-id: https://svn.apache.org/repos/asf/perl/modperl/trunk@1915593 13f79535-47bb-0310-9956-ffa450edef68 +--- + src/modules/perl/modperl_common_util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/modules/perl/modperl_common_util.c b/src/modules/perl/modperl_common_util.c +index c5f285f9d..461750f2f 100644 +--- a/src/modules/perl/modperl_common_util.c ++++ b/src/modules/perl/modperl_common_util.c +@@ -41,7 +41,7 @@ + + MP_INLINE static + int modperl_table_magic_copy(pTHX_ SV *sv, MAGIC *mg, SV *nsv, +- const char *name, int namelen) ++ const char *name, I32 namelen) + { + /* prefetch the value whenever we're iterating over the keys */ + MAGIC *tie_magic = mg_find(nsv, PERL_MAGIC_tiedelem); diff --git a/www-apache/mod_perl/mod_perl-2.0.13-r2.ebuild b/www-apache/mod_perl/mod_perl-2.0.13-r2.ebuild new file mode 100644 index 000000000000..d8210716297d --- /dev/null +++ b/www-apache/mod_perl/mod_perl-2.0.13-r2.ebuild @@ -0,0 +1,144 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DIST_TEST=do +inherit depend.apache apache-module perl-module + +DESCRIPTION="An embedded Perl interpreter for Apache2" +HOMEPAGE="https://perl.apache.org/ https://projects.apache.org/project.html?perl-mod_perl" +SRC_URI="mirror://apache/perl/${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="1" +KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~riscv ~x86" +IUSE="debug perl_features_ithreads test" +RESTRICT="!test? ( test )" + +# Apache::Reload, Apache::SizeLimit, and Apache::Test are force-unbundled. +# The minimum versions requested here are the bundled versions. + +# The test dependencies are from CPAN (Bundle::Apache2). + +# When all MPMs are disabled via useflags, the apache ebuild selects a +# default one, which will likely need threading. + +RDEPEND=" + perl_features_ithreads? ( || ( >=dev-lang/perl-5.38.2-r3[perl_features_ithreads] <dev-lang/perl-5.38.2-r3[ithreads] ) ) + !perl_features_ithreads? ( || ( >=dev-lang/perl-5.38.2-r3[-perl_features_ithreads] <dev-lang/perl-5.38.2-r3[-ithreads] ) ) + >=dev-perl/Apache-Test-1.420.0 + >=www-servers/apache-2.0.47 + >=dev-libs/apr-util-1.4 + !perl_features_ithreads? ( www-servers/apache[-apache2_mpms_event,-apache2_mpms_worker,apache2_mpms_prefork] ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + dev-perl/Module-Build + test? ( + >=dev-perl/CGI-3.110.0 + dev-perl/Chatbot-Eliza + dev-perl/Devel-Symdump + dev-perl/HTML-Parser + dev-perl/IPC-Run3 + dev-perl/libwww-perl + www-servers/apache[apache2_modules_version,-apache2_modules_unique_id] + !www-apache/mpm_itk + ) +" +PDEPEND=" + >=dev-perl/Apache-Reload-0.130.0 + >=dev-perl/Apache-SizeLimit-0.970.0 +" + +APACHE2_MOD_FILE="${S}/src/modules/perl/mod_perl.so" +APACHE2_MOD_CONF="2.0.3/75_${PN}" +APACHE2_MOD_DEFINE="PERL" + +need_apache2 + +PATCHES=( + "${FILESDIR}"/${PN}-2.0.1-sneak-tmpdir.patch # seems to fix the make test problem + "${FILESDIR}"/${PN}-2.0.4-inline.patch # 550244 + "${FILESDIR}"/${PN}-2.0.10_rc1-bundled-Apache-Test.patch # 352724 + "${FILESDIR}"/${PN}-2.0.10_rc1-Gentoo-not-Unix.patch + "${FILESDIR}"/${PN}-2.0.11-ranlib.patch # 728554 + "${FILESDIR}"/${PN}-2.0.13-c99.patch +) + +src_prepare() { + perl-module_src_prepare + + # chainsaw unbundling + rm -rf Apache-{Test,Reload,SizeLimit}/ lib/Bundle/ || die +} + +src_configure() { + _init_apache2_late + + local debug=$(usex debug 1 0) + local nothreads=$(usex perl_features_ithreads 0 1) + myconf=( + MP_USE_DSO=1 + MP_APXS=${APXS} + MP_APR_CONFIG=/usr/bin/apr-1-config + MP_TRACE=${debug} + MP_DEBUG=${debug} + MP_NO_THREADS=${nothreads} + ) + + perl-module_src_configure +} + +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}" || die + fi + + # We force verbose tests for now to get meaningful bug reports. + MAKEOPTS+=" -j1" + TMPDIR="${T}" HOME="${T}/" TEST_VERBOSE=1 LC_TIME=C perl-module_src_test +} + +src_install() { + apache-module_src_install + + default + + perl_delete_localpod + perl_fix_packlist + perl_delete_emptybsdir + + 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. + + perl_set_version + 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 + + local fname + 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} || die + done + + perl_remove_temppath +} + +pkg_postinst() { + apache-module_pkg_postinst +}
