mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
multiprocessing.eclass: work around Cygwin FIFO shortcoming
Cygwin does not support multiple read-handles for one FIFO (yet). As we really need just one readonly- and one writeonly-handle, we can reorder to open one single readwrite- and one writeonly-handle. X-Gentoo-Bug: 583962 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=583962
This commit is contained in:
committed by
Michael Haubenwallner
parent
4429daa932
commit
077e60fb9c
@@ -139,11 +139,16 @@ multijob_init() {
|
||||
|
||||
# Setup a pipe for children to write their pids to when they finish.
|
||||
# We have to allocate two fd's because POSIX has undefined behavior
|
||||
# when you open a FIFO for simultaneous read/write. #487056
|
||||
# when using one single fd for both read and write. #487056
|
||||
# However, opening an fd for read or write only will block until the
|
||||
# opposite end is opened as well. Thus we open the first fd for both
|
||||
# read and write to not block ourselve, but use it for reading only.
|
||||
# The second fd really is opened for write only, as Cygwin supports
|
||||
# just one single read fd per FIFO. #583962
|
||||
local pipe="${T}/multijob.pipe"
|
||||
mkfifo -m 600 "${pipe}"
|
||||
redirect_alloc_fd mj_write_fd "${pipe}"
|
||||
redirect_alloc_fd mj_read_fd "${pipe}"
|
||||
redirect_alloc_fd mj_write_fd "${pipe}" '>'
|
||||
rm -f "${pipe}"
|
||||
|
||||
# See how many children we can fork based on the user's settings.
|
||||
|
||||
Reference in New Issue
Block a user