summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Seifert <soap@gentoo.org>2021-05-15 00:13:28 +0200
committerDavid Seifert <soap@gentoo.org>2021-05-15 00:13:28 +0200
commita744d84288f6863e0536e11460302232141f0c4a (patch)
tree0964ecefc966eaf4ca166ec12334a4321f3b7480 /sys-devel/make/files
parentsys-block/sedutil: Port to EAPI 7 (diff)
downloadgentoo-a744d84288f6863e0536e11460302232141f0c4a.tar.gz
gentoo-a744d84288f6863e0536e11460302232141f0c4a.tar.bz2
gentoo-a744d84288f6863e0536e11460302232141f0c4a.zip
sys-devel/make: drop 4.2.1-r4
Signed-off-by: David Seifert <soap@gentoo.org>
Diffstat (limited to 'sys-devel/make/files')
-rw-r--r--sys-devel/make/files/make-4.2.1-glob-internals.patch67
-rw-r--r--sys-devel/make/files/make-4.2.1-glob-v2.patch30
-rw-r--r--sys-devel/make/files/make-4.2.1-guile-2.2.patch320
-rw-r--r--sys-devel/make/files/make-4.2.1-perl526.patch26
-rw-r--r--sys-devel/make/files/make-4.2.1-pselect-non-blocking.patch172
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 9f70ae2084f..00000000000
--- 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 e55a7790a3f..00000000000
--- 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 b7f9eb50b78..00000000000
--- 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 a935d1314eb..00000000000
--- 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 61e19516f3c..00000000000
--- 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
-