diff options
author | Andreas K. Hüttel <dilfridge@gentoo.org> | 2018-12-30 22:26:22 +0100 |
---|---|---|
committer | Andreas K. Hüttel <dilfridge@gentoo.org> | 2018-12-30 22:26:38 +0100 |
commit | e576790a512945d1884868c55e87721b4d75b56b (patch) | |
tree | c01aed0a00185ea28c34edb709e75e8f19ce203d /dev-lang | |
parent | media-libs/libgii: mark s390 stable (diff) | |
download | gentoo-e576790a512945d1884868c55e87721b4d75b56b.tar.gz gentoo-e576790a512945d1884868c55e87721b4d75b56b.tar.bz2 gentoo-e576790a512945d1884868c55e87721b4d75b56b.zip |
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@gentoo.org>
Diffstat (limited to 'dev-lang')
-rw-r--r-- | dev-lang/perl/files/perl-5.26.2-hppa.patch | 105 | ||||
-rw-r--r-- | dev-lang/perl/perl-5.26.2.ebuild | 4 | ||||
-rw-r--r-- | dev-lang/perl/perl-5.26.9999.ebuild | 4 | ||||
-rw-r--r-- | dev-lang/perl/perl-5.28.0.ebuild | 4 | ||||
-rw-r--r-- | dev-lang/perl/perl-5.28.9999.ebuild | 4 |
5 files changed, 121 insertions, 0 deletions
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 000000000000..83ed944353e5 --- /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 e2af84bf47de..3efe8267e5be 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 e2af84bf47de..3efe8267e5be 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 a88e2d54acf9..13cbdc3c0050 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 a88e2d54acf9..13cbdc3c0050 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 |