commit:     a0b007e3de8dea386bb8666b468140c4ea076937
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 21 16:30:02 2019 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Mon Oct 21 16:30:56 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a0b007e3

dev-perl/Parallel-Prefork: Add patch by Slaven Rezic to fix tests

Closes: https://bugs.gentoo.org/664502
Package-Manager: Portage-2.3.76, Repoman-2.3.17
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 .../Parallel-Prefork-0.180.0.ebuild                |  4 ++-
 .../files/Parallel-Prefork-0.180.0-RT113449.patch  | 40 ++++++++++++++++++++++
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/dev-perl/Parallel-Prefork/Parallel-Prefork-0.180.0.ebuild 
b/dev-perl/Parallel-Prefork/Parallel-Prefork-0.180.0.ebuild
index d402ddf167d..e337b654056 100644
--- a/dev-perl/Parallel-Prefork/Parallel-Prefork-0.180.0.ebuild
+++ b/dev-perl/Parallel-Prefork/Parallel-Prefork-0.180.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
@@ -28,6 +28,8 @@ DEPEND="${RDEPEND}
        )
 "
 
+PATCHES=( "${FILESDIR}/${P}-RT113449.patch" )
+
 src_prepare() {
        sed -i -e 's/use inc::Module::Install/use lib q[.]; use 
inc::Module::Install/' Makefile.PL ||
                die "Can't patch Makefile.PL for 5.26 dot-in-inc"

diff --git 
a/dev-perl/Parallel-Prefork/files/Parallel-Prefork-0.180.0-RT113449.patch 
b/dev-perl/Parallel-Prefork/files/Parallel-Prefork-0.180.0-RT113449.patch
new file mode 100644
index 00000000000..f075600e256
--- /dev/null
+++ b/dev-perl/Parallel-Prefork/files/Parallel-Prefork-0.180.0-RT113449.patch
@@ -0,0 +1,40 @@
+From 0e51495b41c913ba2474d95ed7668a2190e7bd8e Mon Sep 17 00:00:00 2001
+From: Slaven Rezic <[email protected]>
+Date: Sat, 18 Nov 2017 21:04:26 +0000
+Subject: [PATCH] workaround for race condition in t/01-base.t [RT #113449]
+
+It's possible that the TERM signal handler is not yet installed
+in some workers when the last worker runs and sends the final
+TERM signal to the parent. The effect is that the number
+stored in the temporary file is not as expected, as in this report:
+http://www.cpantesters.org/cpan/report/86348529
+
+This failure seems to occur quite frequently on (virtual?) FreeBSD
+systems.
+---
+ t/01-base.t | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/t/01-base.t b/t/01-base.t
+index 5137791..80e447d 100755
+--- a/t/01-base.t
++++ b/t/01-base.t
+@@ -39,7 +39,6 @@ until ($pm->signal_received) {
+     $c++;
+     seek $fh, 0, 0;
+     syswrite $fh, $c, length($c);
+-    flock $fh, LOCK_UN;
+     local $SIG{TERM} = sub {
+         flock $fh, LOCK_EX;
+         seek $fh, 0, 0;
+@@ -50,6 +49,7 @@ until ($pm->signal_received) {
+         flock $fh, LOCK_UN;
+         exit 0;
+     };
++    flock $fh, LOCK_UN;
+     if ($c == $pm->max_workers) {
+         kill 'TERM', $ppid;
+     }
+-- 
+2.1.2
+

Reply via email to