dev-perl/Parallel-Prefork: Add patch by Slaven Rezic to fix tests
authorAndreas K. Hüttel <dilfridge@gentoo.org>
Mon, 21 Oct 2019 16:30:02 +0000 (18:30 +0200)
committerAndreas K. Hüttel <dilfridge@gentoo.org>
Mon, 21 Oct 2019 16:30:56 +0000 (18:30 +0200)
Closes: https://bugs.gentoo.org/664502
Package-Manager: Portage-2.3.76, Repoman-2.3.17
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
dev-perl/Parallel-Prefork/Parallel-Prefork-0.180.0.ebuild
dev-perl/Parallel-Prefork/files/Parallel-Prefork-0.180.0-RT113449.patch [new file with mode: 0644]

index d402ddf167da47dd962d32bb5f279ed646d154ae..e337b654056b41a6c31cd5dde4263be6bf33db06 100644 (file)
@@ -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 (file)
index 0000000..f075600
--- /dev/null
@@ -0,0 +1,40 @@
+From 0e51495b41c913ba2474d95ed7668a2190e7bd8e Mon Sep 17 00:00:00 2001
+From: Slaven Rezic <slaven@rezic.de>
+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
+