commit: e576790a512945d1884868c55e87721b4d75b56b Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org> AuthorDate: Sun Dec 30 21:26:22 2018 +0000 Commit: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org> CommitDate: Sun Dec 30 21:26:38 2018 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e576790a
dev-lang/perl: Add hppa workaround, bug 634162 Patch from Debian, see https://bugs.debian.org/869122 Closes: https://bugs.gentoo.org/634162 Package-Manager: Portage-2.3.53, Repoman-2.3.12 Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org> dev-lang/perl/files/perl-5.26.2-hppa.patch | 105 +++++++++++++++++++++++++++++ dev-lang/perl/perl-5.26.2.ebuild | 4 ++ dev-lang/perl/perl-5.26.9999.ebuild | 4 ++ dev-lang/perl/perl-5.28.0.ebuild | 4 ++ dev-lang/perl/perl-5.28.9999.ebuild | 4 ++ 5 files changed, 121 insertions(+) diff --git a/dev-lang/perl/files/perl-5.26.2-hppa.patch b/dev-lang/perl/files/perl-5.26.2-hppa.patch new file mode 100644 index 00000000000..83ed944353e --- /dev/null +++ b/dev-lang/perl/files/perl-5.26.2-hppa.patch @@ -0,0 +1,105 @@ +https://bugs.gentoo.org/634162 + +Source: +https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=869122 + +Index: perl-5.26.0/op.c +=================================================================== +--- perl-5.26.0.orig/op.c ++++ perl-5.26.0/op.c +@@ -14832,6 +14832,7 @@ Perl_custom_op_get_field(pTHX_ const OP + SV *keysv; + HE *he = NULL; + XOP *xop; ++ XOPRETANY any; + + static const XOP xop_null = { 0, 0, 0, 0, 0 }; + +@@ -14874,58 +14875,37 @@ Perl_custom_op_get_field(pTHX_ const OP + else + xop = INT2PTR(XOP *, SvIV(HeVAL(he))); + } +- { +- XOPRETANY any; +- if(field == XOPe_xop_ptr) { +- any.xop_ptr = xop; +- } else { +- const U32 flags = XopFLAGS(xop); +- if(flags & field) { +- switch(field) { +- case XOPe_xop_name: +- any.xop_name = xop->xop_name; +- break; +- case XOPe_xop_desc: +- any.xop_desc = xop->xop_desc; +- break; +- case XOPe_xop_class: +- any.xop_class = xop->xop_class; +- break; +- case XOPe_xop_peep: +- any.xop_peep = xop->xop_peep; +- break; +- default: +- NOT_REACHED; /* NOTREACHED */ +- break; +- } +- } else { +- switch(field) { +- case XOPe_xop_name: +- any.xop_name = XOPd_xop_name; +- break; +- case XOPe_xop_desc: +- any.xop_desc = XOPd_xop_desc; +- break; +- case XOPe_xop_class: +- any.xop_class = XOPd_xop_class; +- break; +- case XOPe_xop_peep: +- any.xop_peep = XOPd_xop_peep; +- break; +- default: +- NOT_REACHED; /* NOTREACHED */ +- break; +- } +- } ++ ++ if(field == XOPe_xop_ptr) { ++ any.xop_ptr = xop; ++ } else { ++ const U32 flags = XopFLAGS(xop); ++ switch(field) { ++ case XOPe_xop_name: ++ any.xop_name = (flags & field) ? xop->xop_name : XOPd_xop_name; ++ break; ++ case XOPe_xop_desc: ++ any.xop_desc = (flags & field) ? xop->xop_desc : XOPd_xop_desc; ++ break; ++ case XOPe_xop_class: ++ any.xop_class = (flags & field) ? xop->xop_class : XOPd_xop_class; ++ break; ++ case XOPe_xop_peep: ++ any.xop_peep = (flags & field) ? xop->xop_peep : XOPd_xop_peep; ++ break; ++ default: ++ NOT_REACHED; /* NOTREACHED */ ++ break; + } +- /* On some platforms (HP-UX, IA64) gcc emits a warning for this function: +- * op.c: In function 'Perl_custom_op_get_field': +- * op.c:...: warning: 'any.xop_name' may be used uninitialized in this function [-Wmaybe-uninitialized] +- * This is because on those platforms (with -DEBUGGING) NOT_REACHED +- * expands to assert(0), which expands to ((0) ? (void)0 : +- * __assert(...)), and gcc doesn't know that __assert can never return. */ +- return any; + } ++ ++ /* On some platforms (HP-UX, IA64) gcc emits a warning for this function: ++ * op.c: In function 'Perl_custom_op_get_field': ++ * op.c:...: warning: 'any.xop_name' may be used uninitialized in this function [-Wmaybe-uninitialized] ++ * This is because on those platforms (with -DEBUGGING) NOT_REACHED ++ * expands to assert(0), which expands to ((0) ? (void)0 : ++ * __assert(...)), and gcc doesn't know that __assert can never return. */ ++ return any; + } + + /* diff --git a/dev-lang/perl/perl-5.26.2.ebuild b/dev-lang/perl/perl-5.26.2.ebuild index e2af84bf47d..3efe8267e5b 100644 --- a/dev-lang/perl/perl-5.26.2.ebuild +++ b/dev-lang/perl/perl-5.26.2.ebuild @@ -307,6 +307,10 @@ src_prepare() { local patch EPATCH_OPTS+=" -p1" + if use hppa ; then + epatch "${FILESDIR}/${PN}-5.26.2-hppa.patch" # bug 634162 + fi + if [[ ${CHOST} == *-solaris* ]] ; then # do NOT mess with nsl, on Solaris this is always necessary, # when -lsocket is used e.g. to get h_errno diff --git a/dev-lang/perl/perl-5.26.9999.ebuild b/dev-lang/perl/perl-5.26.9999.ebuild index e2af84bf47d..3efe8267e5b 100644 --- a/dev-lang/perl/perl-5.26.9999.ebuild +++ b/dev-lang/perl/perl-5.26.9999.ebuild @@ -307,6 +307,10 @@ src_prepare() { local patch EPATCH_OPTS+=" -p1" + if use hppa ; then + epatch "${FILESDIR}/${PN}-5.26.2-hppa.patch" # bug 634162 + fi + if [[ ${CHOST} == *-solaris* ]] ; then # do NOT mess with nsl, on Solaris this is always necessary, # when -lsocket is used e.g. to get h_errno diff --git a/dev-lang/perl/perl-5.28.0.ebuild b/dev-lang/perl/perl-5.28.0.ebuild index a88e2d54acf..13cbdc3c005 100644 --- a/dev-lang/perl/perl-5.28.0.ebuild +++ b/dev-lang/perl/perl-5.28.0.ebuild @@ -307,6 +307,10 @@ src_prepare() { local patch EPATCH_OPTS+=" -p1" + if use hppa ; then + epatch "${FILESDIR}/${PN}-5.26.2-hppa.patch" # bug 634162 + fi + if [[ ${CHOST} == *-solaris* ]] ; then # do NOT mess with nsl, on Solaris this is always necessary, # when -lsocket is used e.g. to get h_errno diff --git a/dev-lang/perl/perl-5.28.9999.ebuild b/dev-lang/perl/perl-5.28.9999.ebuild index a88e2d54acf..13cbdc3c005 100644 --- a/dev-lang/perl/perl-5.28.9999.ebuild +++ b/dev-lang/perl/perl-5.28.9999.ebuild @@ -307,6 +307,10 @@ src_prepare() { local patch EPATCH_OPTS+=" -p1" + if use hppa ; then + epatch "${FILESDIR}/${PN}-5.26.2-hppa.patch" # bug 634162 + fi + if [[ ${CHOST} == *-solaris* ]] ; then # do NOT mess with nsl, on Solaris this is always necessary, # when -lsocket is used e.g. to get h_errno