summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wendler <polynomial-c@gentoo.org>2018-05-09 13:31:34 +0200
committerLars Wendler <polynomial-c@gentoo.org>2018-05-09 13:31:50 +0200
commitb3cd383722ae22bc2567f1b4f8a875e79dd56bca (patch)
treec6c21be898cd968240a475f6f79ca8265afac924 /app-shells
parentapp-i18n/man-pages-pl: bump to 0.7 (diff)
downloadgentoo-b3cd383722ae22bc2567f1b4f8a875e79dd56bca.tar.gz
gentoo-b3cd383722ae22bc2567f1b4f8a875e79dd56bca.tar.bz2
gentoo-b3cd383722ae22bc2567f1b4f8a875e79dd56bca.zip
app-shells/dash: Fixed subshell regression.
See https://patchwork.kernel.org/patch/10382199/ Closes: https://bugs.gentoo.org/655320 Package-Manager: Portage-2.3.36, Repoman-2.3.9
Diffstat (limited to 'app-shells')
-rw-r--r--app-shells/dash/dash-0.5.10-r1.ebuild (renamed from app-shells/dash/dash-0.5.10.ebuild)5
-rw-r--r--app-shells/dash/files/dash-0.5.10-subshells.patch16
2 files changed, 20 insertions, 1 deletions
diff --git a/app-shells/dash/dash-0.5.10.ebuild b/app-shells/dash/dash-0.5.10-r1.ebuild
index 72821681d9b7..97e4202bc4d1 100644
--- a/app-shells/dash/dash-0.5.10.ebuild
+++ b/app-shells/dash/dash-0.5.10-r1.ebuild
@@ -27,7 +27,10 @@ DEPEND="${RDEPEND}
virtual/pkgconfig
libedit? ( static? ( dev-libs/libedit[static-libs] ) )"
-PATCHES=( "${FILESDIR}"/${PN}-0.5.9.1-format-security.patch )
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.5.9.1-format-security.patch
+ "${FILESDIR}"/${P}-subshells.patch
+)
src_prepare() {
if [[ -n "${DEB_PATCH}" ]] ; then
diff --git a/app-shells/dash/files/dash-0.5.10-subshells.patch b/app-shells/dash/files/dash-0.5.10-subshells.patch
new file mode 100644
index 000000000000..5943db11e697
--- /dev/null
+++ b/app-shells/dash/files/dash-0.5.10-subshells.patch
@@ -0,0 +1,16 @@
+https://bugs.gentoo.org/655320
+https://patchwork.kernel.org/patch/10382199/
+
+--- dash-0.5.10/src/jobs.c
++++ dash-0.5.10/src/jobs.c
+@@ -975,8 +975,8 @@
+ int st;
+
+ TRACE(("waitforjob(%%%d) called\n", jp ? jobno(jp) : 0));
+- while ((jp && jp->state == JOBRUNNING) || gotsigchld)
+- dowait(DOWAIT_BLOCK, jp);
++ while (jp ? jp->state == JOBRUNNING : gotsigchld)
++ dowait(jp ? DOWAIT_BLOCK : DOWAIT_NORMAL, jp);
+ if (!jp)
+ return exitstatus;
+ st = getstatus(jp);