diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2021-05-22 07:31:18 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2021-05-22 07:31:18 +0100 |
commit | 908778078736bd36f7a60a2d576d415cb8e000fa (patch) | |
tree | c6a4796c48b608c14dc7e9674cdbd38f905e3c15 /sys-devel/make/files | |
parent | 185fa19bbf68a4d4dca534d2b46729207a177f16 (diff) |
gentoo resync : 22.05.2021
Diffstat (limited to 'sys-devel/make/files')
-rw-r--r-- | sys-devel/make/files/make-4.2.1-glob-internals.patch | 67 | ||||
-rw-r--r-- | sys-devel/make/files/make-4.2.1-glob-v2.patch | 30 | ||||
-rw-r--r-- | sys-devel/make/files/make-4.2.1-guile-2.2.patch | 320 | ||||
-rw-r--r-- | sys-devel/make/files/make-4.2.1-perl526.patch | 26 | ||||
-rw-r--r-- | sys-devel/make/files/make-4.2.1-pselect-non-blocking.patch | 172 |
5 files changed, 0 insertions, 615 deletions
diff --git a/sys-devel/make/files/make-4.2.1-glob-internals.patch b/sys-devel/make/files/make-4.2.1-glob-internals.patch deleted file mode 100644 index 9f70ae2084f0..000000000000 --- a/sys-devel/make/files/make-4.2.1-glob-internals.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 193f1e81edd6b1b56b0eb0ff8aa4b41c7b4257b4 Mon Sep 17 00:00:00 2001 -From: Paul Eggert <eggert@cs.ucla.edu> -Date: Sun, 24 Sep 2017 09:12:58 -0400 -Subject: [PATCH] glob: Do not assume glibc glob internals. - -It has been proposed that glibc glob start using gl_lstat, -which the API allows it to do. GNU 'make' should not get in -the way of this. See: -https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html - -* dir.c (local_lstat): New function, like local_stat. -(dir_setup_glob): Use it to initialize gl_lstat too, as the API -requires. ---- - dir.c | 29 +++++++++++++++++++++++++++-- - 1 file changed, 27 insertions(+), 2 deletions(-) - -diff --git a/dir.c b/dir.c -index adbb8a9..c343e4c 100644 ---- a/dir.c -+++ b/dir.c -@@ -1299,15 +1299,40 @@ local_stat (const char *path, struct stat *buf) - } - #endif - -+/* Similarly for lstat. */ -+#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS) -+# ifndef VMS -+# ifndef HAVE_SYS_STAT_H -+int lstat (const char *path, struct stat *sbuf); -+# endif -+# else -+ /* We are done with the fake lstat. Go back to the real lstat */ -+# ifdef lstat -+# undef lstat -+# endif -+# endif -+# define local_lstat lstat -+#elif defined(WINDOWS32) -+/* Windows doesn't support lstat(). */ -+# define local_lstat local_stat -+#else -+static int -+local_lstat (const char *path, struct stat *buf) -+{ -+ int e; -+ EINTRLOOP (e, lstat (path, buf)); -+ return e; -+} -+#endif -+ - void - dir_setup_glob (glob_t *gl) - { - gl->gl_opendir = open_dirstream; - gl->gl_readdir = read_dirstream; - gl->gl_closedir = free; -+ gl->gl_lstat = local_lstat; - gl->gl_stat = local_stat; -- /* We don't bother setting gl_lstat, since glob never calls it. -- The slot is only there for compatibility with 4.4 BSD. */ - } - - void --- -2.16.1 - diff --git a/sys-devel/make/files/make-4.2.1-glob-v2.patch b/sys-devel/make/files/make-4.2.1-glob-v2.patch deleted file mode 100644 index e55a7790a3f6..000000000000 --- a/sys-devel/make/files/make-4.2.1-glob-v2.patch +++ /dev/null @@ -1,30 +0,0 @@ -http://git.savannah.gnu.org/cgit/make.git/commit/?id=48c8a116a914a325a0497721f5d8b58d5bba34d4 - ---- make-4.2.1/configure 2016-06-11 01:03:21.000000000 +0200 -+++ make-4.2.1/configure 2016-06-11 01:03:21.000000000 +0200 -@@ -11481,10 +11481,9 @@ - #include <glob.h> - #include <fnmatch.h> - --#define GLOB_INTERFACE_VERSION 1 - #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 - # include <gnu-versions.h> --# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION -+# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 - gnu glob - # endif - #endif ---- make-4.2.1/configure.ac 2016-06-06 14:27:31.000000000 +0200 -+++ make-4.2.1/configure.ac 2016-06-06 14:27:31.000000000 +0200 -@@ -399,10 +399,9 @@ - #include <glob.h> - #include <fnmatch.h> - --#define GLOB_INTERFACE_VERSION 1 - #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 - # include <gnu-versions.h> --# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION -+# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 - gnu glob - # endif - #endif], diff --git a/sys-devel/make/files/make-4.2.1-guile-2.2.patch b/sys-devel/make/files/make-4.2.1-guile-2.2.patch deleted file mode 100644 index b7f9eb50b786..000000000000 --- a/sys-devel/make/files/make-4.2.1-guile-2.2.patch +++ /dev/null @@ -1,320 +0,0 @@ -https://git.savannah.gnu.org/cgit/make.git/commit/?id=fbf71ec25a5986d9003ac16ee9e23675feac9053 -https://bugs.gentoo.org/650608 - ---- make-4.2.1/configure 2016-06-11 01:03:21.000000000 +0200 -+++ make-4.2.1/configure 2016-06-11 01:03:21.000000000 +0200 -@@ -9694,6 +9694,15 @@ - - # See if the user wants to add (or not) GNU Guile support - -+# Check whether --with-guile was given. -+if test "${with_guile+set}" = set; then : -+ withval=$with_guile; -+fi -+ -+ -+# Annoyingly, each version of Guile comes with it's own PC file so we have to -+# specify them as individual packages. Ugh. -+ - - - -@@ -9814,75 +9823,25 @@ - fi - fi - --# Check whether --with-guile was given. --if test "${with_guile+set}" = set; then : -- withval=$with_guile; --fi -- -- --# For some strange reason, at least on Ubuntu, each version of Guile --# comes with it's own PC file so we have to specify them as individual --# packages. Ugh. - if test "x$with_guile" != xno; then : -- --pkg_failed=no --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5 --$as_echo_n "checking for GUILE... " >&6; } -- --if test -n "$GUILE_CFLAGS"; then -- pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" -- elif test -n "$PKG_CONFIG"; then -- if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5 -- ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5 -- ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -- pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-2.0" 2>/dev/null` -- test "x$?" != "x0" && pkg_failed=yes --else -- pkg_failed=yes --fi -- else -- pkg_failed=untried --fi --if test -n "$GUILE_LIBS"; then -- pkg_cv_GUILE_LIBS="$GUILE_LIBS" -- elif test -n "$PKG_CONFIG"; then -+ guile_versions="2.2 2.0 1.8" -+ guile_version=no -+ have_guile=no -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 -+$as_echo_n "checking for GNU Guile... " >&6; } -+ for v in $guile_versions; do - if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5 -- ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5 -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 -+ ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then -- pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-2.0" 2>/dev/null` -- test "x$?" != "x0" && pkg_failed=yes --else -- pkg_failed=yes -+ guile_version=$v; have_guile=yes; break - fi -- else -- pkg_failed=untried --fi -- -- -- --if test $pkg_failed = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 --$as_echo "no" >&6; } -- --if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then -- _pkg_short_errors_supported=yes --else -- _pkg_short_errors_supported=no --fi -- if test $_pkg_short_errors_supported = yes; then -- GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-2.0" 2>&1` -- else -- GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-2.0" 2>&1` -- fi -- # Put the nasty error message in config.log where it belongs -- echo "$GUILE_PKG_ERRORS" >&5 -- -+ done -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 -+$as_echo "$guile_version" >&6; } -+ if test "$have_guile" = yes; then - - pkg_failed=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5 -@@ -9892,12 +9851,12 @@ - pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5 -- ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5 -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 -+ ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then -- pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-1.8" 2>/dev/null` -+ pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes - else - pkg_failed=yes -@@ -9909,12 +9868,12 @@ - pkg_cv_GUILE_LIBS="$GUILE_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5 -- ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5 -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 -+ ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then -- pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-1.8" 2>/dev/null` -+ pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes - else - pkg_failed=yes -@@ -9935,113 +9894,50 @@ - _pkg_short_errors_supported=no - fi - if test $_pkg_short_errors_supported = yes; then -- GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-1.8" 2>&1` -+ GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1` - else -- GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-1.8" 2>&1` -+ GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$GUILE_PKG_ERRORS" >&5 - -- have_guile=no --elif test $pkg_failed = untried; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 --$as_echo "no" >&6; } -- have_guile=no --else -- GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS -- GUILE_LIBS=$pkg_cv_GUILE_LIBS -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 --$as_echo "yes" >&6; } -- have_guile=yes --fi --elif test $pkg_failed = untried; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 --$as_echo "no" >&6; } -+ as_fn_error $? "Package requirements (guile-$guile_version) were not met: - --pkg_failed=no --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5 --$as_echo_n "checking for GUILE... " >&6; } -+$GUILE_PKG_ERRORS - --if test -n "$GUILE_CFLAGS"; then -- pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" -- elif test -n "$PKG_CONFIG"; then -- if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5 -- ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5 -- ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -- pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-1.8" 2>/dev/null` -- test "x$?" != "x0" && pkg_failed=yes --else -- pkg_failed=yes --fi -- else -- pkg_failed=untried --fi --if test -n "$GUILE_LIBS"; then -- pkg_cv_GUILE_LIBS="$GUILE_LIBS" -- elif test -n "$PKG_CONFIG"; then -- if test -n "$PKG_CONFIG" && \ -- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5 -- ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5 -- ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -- pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-1.8" 2>/dev/null` -- test "x$?" != "x0" && pkg_failed=yes --else -- pkg_failed=yes --fi -- else -- pkg_failed=untried --fi -- -- -- --if test $pkg_failed = yes; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 --$as_echo "no" >&6; } -- --if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then -- _pkg_short_errors_supported=yes --else -- _pkg_short_errors_supported=no --fi -- if test $_pkg_short_errors_supported = yes; then -- GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-1.8" 2>&1` -- else -- GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-1.8" 2>&1` -- fi -- # Put the nasty error message in config.log where it belongs -- echo "$GUILE_PKG_ERRORS" >&5 -+Consider adjusting the PKG_CONFIG_PATH environment variable if you -+installed software in a non-standard prefix. - -- have_guile=no -+Alternatively, you may set the environment variables GUILE_CFLAGS -+and GUILE_LIBS to avoid the need to call pkg-config. -+See the pkg-config man page for more details." "$LINENO" 5 - elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } -- have_guile=no --else -- GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS -- GUILE_LIBS=$pkg_cv_GUILE_LIBS -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 --$as_echo "yes" >&6; } -- have_guile=yes --fi -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -+is in your PATH or set the PKG_CONFIG environment variable to the full -+path to pkg-config. -+ -+Alternatively, you may set the environment variables GUILE_CFLAGS -+and GUILE_LIBS to avoid the need to call pkg-config. -+See the pkg-config man page for more details. -+ -+To get pkg-config, see <http://pkg-config.freedesktop.org/>. -+See \`config.log' for more details" "$LINENO" 5; } - else - GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS - GUILE_LIBS=$pkg_cv_GUILE_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -- have_guile=yes --fi - - fi - --if test "$have_guile" = yes; then : -- - $as_echo "#define HAVE_GUILE 1" >>confdefs.h - -+ fi -+ - fi - - if test "$have_guile" = yes; then ---- make-4.2.1/configure.ac 2016-06-06 14:27:31.000000000 +0200 -+++ make-4.2.1/configure.ac 2016-06-06 14:27:31.000000000 +0200 -@@ -160,22 +160,28 @@ - AC_FUNC_CLOSEDIR_VOID - - # See if the user wants to add (or not) GNU Guile support --PKG_PROG_PKG_CONFIG - AC_ARG_WITH([guile], [AS_HELP_STRING([--with-guile], - [Support GNU Guile for embedded scripting])]) - --# For some strange reason, at least on Ubuntu, each version of Guile --# comes with it's own PC file so we have to specify them as individual --# packages. Ugh. -+# Annoyingly, each version of Guile comes with it's own PC file so we have to -+# specify them as individual packages. Ugh. -+PKG_PROG_PKG_CONFIG -+ - AS_IF([test "x$with_guile" != xno], --[ PKG_CHECK_MODULES([GUILE], [guile-2.0], [have_guile=yes], -- [PKG_CHECK_MODULES([GUILE], [guile-1.8], [have_guile=yes], -- [have_guile=no])]) -+[ guile_versions="2.2 2.0 1.8" -+ guile_version=no -+ have_guile=no -+ AC_MSG_CHECKING([for GNU Guile]) -+ for v in $guile_versions; do -+ PKG_CHECK_EXISTS([guile-$v], [guile_version=$v; have_guile=yes; break], []) -+ done -+ AC_MSG_RESULT([$guile_version]) -+ if test "$have_guile" = yes; then -+ PKG_CHECK_MODULES(GUILE, [guile-$guile_version]) -+ AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support]) -+ fi - ]) - --AS_IF([test "$have_guile" = yes], -- [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])]) -- - AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = yes]) - - AC_FUNC_GETLOADAVG diff --git a/sys-devel/make/files/make-4.2.1-perl526.patch b/sys-devel/make/files/make-4.2.1-perl526.patch deleted file mode 100644 index a935d1314ebb..000000000000 --- a/sys-devel/make/files/make-4.2.1-perl526.patch +++ /dev/null @@ -1,26 +0,0 @@ -From d9d4e06084a4c7da480bd49a3487aadf6ba77b54 Mon Sep 17 00:00:00 2001 -From: Enrique Olaizola <enrique_olaizola16@hotmail.com> -Date: Sat, 27 May 2017 14:24:33 -0400 -Subject: [PATCH] * tests/run_make_tests.pl: [SV 50902] Find Perl modules - ---- - tests/run_make_tests.pl | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl -index a74417a..a844094 100644 ---- a/tests/run_make_tests.pl -+++ b/tests/run_make_tests.pl -@@ -64,6 +64,9 @@ if ($^O eq 'VMS') - $CMD_rmfile = 'delete_file -no_ask'; - } - -+use FindBin; -+use lib "$FindBin::Bin"; -+ - require "test_driver.pl"; - require "config-flags.pm"; - --- -2.16.1 - diff --git a/sys-devel/make/files/make-4.2.1-pselect-non-blocking.patch b/sys-devel/make/files/make-4.2.1-pselect-non-blocking.patch deleted file mode 100644 index 61e19516f3c3..000000000000 --- a/sys-devel/make/files/make-4.2.1-pselect-non-blocking.patch +++ /dev/null @@ -1,172 +0,0 @@ -https://bugs.gentoo.org/664632 - -From b552b05251980f693c729e251f93f5225b400714 Mon Sep 17 00:00:00 2001 -From: Paul Smith <psmith@gnu.org> -Date: Sat, 3 Jun 2017 16:20:51 -0400 -Subject: [SV 51159] Use a non-blocking read with pselect to avoid hangs. - -* posixos.c (set_blocking): Set blocking on a file descriptor. -(jobserver_setup): Set non-blocking on the jobserver read side. -(jobserver_parse_auth): Ditto. -(jobserver_acquire_all): Set blocking to avoid a busy-wait loop. -(jobserver_acquire): If the non-blocking read() returns without -taking a token then try again. ---- - posixos.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++----------------- - 1 file changed, 71 insertions(+), 26 deletions(-) - -diff --git a/posixos.c b/posixos.c -index e642d7f..dbafa51 100644 ---- a/posixos.c -+++ b/posixos.c -@@ -62,6 +62,24 @@ make_job_rfd (void) - #endif - } - -+static void -+set_blocking (int fd, int blocking) -+{ -+ // If we're not using pselect() don't change the blocking -+#ifdef HAVE_PSELECT -+ int flags; -+ EINTRLOOP (flags, fcntl (fd, F_GETFL)); -+ if (flags >= 0) -+ { -+ int r; -+ flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); -+ EINTRLOOP (r, fcntl (fd, F_SETFL, flags)); -+ if (r < 0) -+ pfatal_with_name ("fcntl(O_NONBLOCK)"); -+ } -+#endif -+} -+ - unsigned int - jobserver_setup (int slots) - { -@@ -86,6 +104,9 @@ jobserver_setup (int slots) - pfatal_with_name (_("init jobserver pipe")); - } - -+ /* When using pselect() we want the read to be non-blocking. */ -+ set_blocking (job_fds[0], 0); -+ - return 1; - } - -@@ -121,6 +142,9 @@ jobserver_parse_auth (const char *auth) - return 0; - } - -+ /* When using pselect() we want the read to be non-blocking. */ -+ set_blocking (job_fds[0], 0); -+ - return 1; - } - -@@ -169,7 +193,10 @@ jobserver_acquire_all (void) - { - unsigned int tokens = 0; - -- /* Close the write side, so the read() won't hang. */ -+ /* Use blocking reads to wait for all outstanding jobs. */ -+ set_blocking (job_fds[0], 1); -+ -+ /* Close the write side, so the read() won't hang forever. */ - close (job_fds[1]); - job_fds[1] = -1; - -@@ -236,18 +263,12 @@ jobserver_pre_acquire (void) - unsigned int - jobserver_acquire (int timeout) - { -- sigset_t empty; -- fd_set readfds; - struct timespec spec; - struct timespec *specp = NULL; -- int r; -- char intake; -+ sigset_t empty; - - sigemptyset (&empty); - -- FD_ZERO (&readfds); -- FD_SET (job_fds[0], &readfds); -- - if (timeout) - { - /* Alarm after one second (is this too granular?) */ -@@ -256,28 +277,52 @@ jobserver_acquire (int timeout) - specp = &spec; - } - -- r = pselect (job_fds[0]+1, &readfds, NULL, NULL, specp, &empty); -- -- if (r == -1) -+ while (1) - { -- /* Better be SIGCHLD. */ -- if (errno != EINTR) -- pfatal_with_name (_("pselect jobs pipe")); -- return 0; -- } -+ fd_set readfds; -+ int r; -+ char intake; - -- if (r == 0) -- /* Timeout. */ -- return 0; -+ FD_ZERO (&readfds); -+ FD_SET (job_fds[0], &readfds); - -- /* The read FD is ready: read it! */ -- EINTRLOOP (r, read (job_fds[0], &intake, 1)); -- if (r < 0) -- pfatal_with_name (_("read jobs pipe")); -+ r = pselect (job_fds[0]+1, &readfds, NULL, NULL, specp, &empty); -+ if (r < 0) -+ switch (errno) -+ { -+ case EINTR: -+ /* SIGCHLD will show up as an EINTR. */ -+ return 0; -+ -+ case EBADF: -+ /* Someone closed the jobs pipe. -+ That shouldn't happen but if it does we're done. */ -+ O (fatal, NILF, _("job server shut down")); - -- /* What does it mean if read() returns 0? It shouldn't happen because only -- the master make can reap all the tokens and close the write side...?? */ -- return r > 0; -+ default: -+ pfatal_with_name (_("pselect jobs pipe")); -+ } -+ -+ if (r == 0) -+ /* Timeout. */ -+ return 0; -+ -+ /* The read FD is ready: read it! This is non-blocking. */ -+ EINTRLOOP (r, read (job_fds[0], &intake, 1)); -+ -+ if (r < 0) -+ { -+ /* Someone sniped our token! Try again. */ -+ if (errno == EAGAIN) -+ continue; -+ -+ pfatal_with_name (_("read jobs pipe")); -+ } -+ -+ /* read() should never return 0: only the master make can reap all the -+ tokens and close the write side...?? */ -+ return r > 0; -+ } - } - - #else --- -cgit v1.0-41-gc330 - |