Christian Weisgerber: > I'll start another test build shortly.
Remaining fallout: multimedia/gstreamer-0.10/plugins-good multimedia/gstreamer-0.10/plugins-bad These need the same fix as plugins-base. devel/jdk/11 Upstream fix available. Commits ready, pending approval from the respective maintainers. Once those are in, I think we can go ahead with the gmake update itself. Below is the cumulative patch from bcallah@'s and my work that I have in my tree. Any further comments? Brian, do you want to commit or should I? Index: Makefile =================================================================== RCS file: /cvs/ports/devel/gmake/Makefile,v retrieving revision 1.63 diff -u -p -r1.63 Makefile --- Makefile 13 Sep 2019 16:59:34 -0000 1.63 +++ Makefile 30 Jan 2020 21:32:49 -0000 @@ -2,12 +2,11 @@ COMMENT= GNU make -DISTNAME= make-4.2.1 +DISTNAME= make-4.3 PKGNAME= g${DISTNAME} -REVISION= 4 CATEGORIES= devel MASTER_SITES= ${MASTER_SITE_GNU:=make/} -EXTRACT_SUFX= .tar.bz2 +EXTRACT_SUFX= .tar.lz HOMEPAGE= https://www.gnu.org/software/make/ @@ -18,14 +17,18 @@ PERMIT_PACKAGE= Yes WANTLIB= c iconv intl +DEBUG_PACKAGES= ${BUILD_PACKAGES} + SEPARATE_BUILD= Yes CONFIGURE_STYLE= gnu CONFIGURE_ARGS= --program-prefix="g" --without-guile CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ LDFLAGS="-L${LOCALBASE}/lib" -MODGNU_CONFIG_GUESS_DIRS= ${WRKSRC}/config +MODGNU_CONFIG_GUESS_DIRS= ${WRKSRC}/build-aux + +TEST_ENV= SHELL=$$SHELL -pre-test: - find ${WRKSRC}/tests/scripts -name \*.orig -delete +# Known test failures: +# output-sync can fail due to a race condition in the test itself .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/devel/gmake/distinfo,v retrieving revision 1.9 diff -u -p -r1.9 distinfo --- distinfo 25 Jun 2016 19:47:11 -0000 1.9 +++ distinfo 30 Jan 2020 21:32:49 -0000 @@ -1,2 +1,2 @@ -SHA256 (make-4.2.1.tar.bz2) = 1uJivzYBtC0rHk74MQAp4dzyAIPFRGtLeqZwgf3/xYk= -SIZE (make-4.2.1.tar.bz2) = 1407126 +SHA256 (make-4.3.tar.lz) = 3hpEHE7flSUh2zC/yoC6roag/xrNCgBAKZk0TwTEXoI= +SIZE (make-4.3.tar.lz) = 1266180 Index: patches/patch-Makefile_in =================================================================== RCS file: /cvs/ports/devel/gmake/patches/patch-Makefile_in,v retrieving revision 1.4 diff -u -p -r1.4 patch-Makefile_in --- patches/patch-Makefile_in 25 Jun 2016 19:47:11 -0000 1.4 +++ patches/patch-Makefile_in 30 Jan 2020 21:32:49 -0000 @@ -1,12 +1,14 @@ -$OpenBSD: patch-Makefile_in,v 1.4 2016/06/25 19:47:11 naddy Exp $ ---- Makefile.in.orig Sat Jun 11 01:03:22 2016 -+++ Makefile.in Fri Jun 24 18:19:09 2016 -@@ -481,7 +481,7 @@ EXTRA_make_SOURCES = vmsjobs.c remote-stub.c remote-cs - noinst_HEADERS = commands.h dep.h filedef.h job.h makeint.h rule.h variable.h \ - debug.h getopt.h gettext.h hash.h output.h os.h +$OpenBSD$ + +Index: Makefile.in +--- Makefile.in.orig ++++ Makefile.in +@@ -1039,7 +1039,7 @@ make_SOURCES = $(make_SRCS) $(am__append_1) $(am__appe + $(am__append_4) $(am__append_5) + EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) + make_LDADD = $(LIBOBJS) $(GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \ +- @LIBINTL@ ++ @LTLIBINTL@ --make_LDADD = @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@ \ -+make_LDADD = @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LTLIBINTL@ \ - $(GUILE_LIBS) $(am__append_1) - man_MANS = make.1 - AM_CPPFLAGS = $(GLOBINC) $(am__append_2) + AM_CPPFLAGS = -Isrc -I$(top_srcdir)/src -Ilib -I$(top_srcdir)/lib \ + -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" \ Index: patches/patch-doc_make_1 =================================================================== RCS file: patches/patch-doc_make_1 diff -N patches/patch-doc_make_1 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-doc_make_1 30 Jan 2020 21:32:49 -0000 @@ -0,0 +1,197 @@ +$OpenBSD$ + +Since we install GNU make as gmake replace make with gmake in the +manpage where it makes sense. + +Index: doc/make.1 +--- doc/make.1.orig ++++ doc/make.1 +@@ -1,13 +1,13 @@ +-.TH MAKE 1 "28 February 2016" "GNU" "User Commands" ++.TH GMAKE 1 "28 February 2016" "GNU" "User Commands" + .SH NAME +-make \- GNU make utility to maintain groups of programs ++gmake \- GNU make utility to maintain groups of programs + .SH SYNOPSIS +-.B make ++.B gmake + [\fIOPTION\fR]... [\fITARGET\fR]... + .SH DESCRIPTION + .LP + The +-.I make ++.I gmake + utility will determine automatically which pieces of a large program need to + be recompiled, and issue the commands to recompile them. The manual describes + the GNU implementation of +@@ -15,15 +15,15 @@ the GNU implementation of + which was written by Richard Stallman and Roland McGrath, and is currently + maintained by Paul Smith. Our examples show C programs, since they are very + common, but you can use +-.B make ++.B gmake + with any programming language whose compiler can be run with a shell command. + In fact, +-.B make ++.B gmake + is not limited to programs. You can use it to describe any task where some + files must be updated automatically from others whenever the others change. + .LP + To prepare to use +-.BR make , ++.BR gmake , + you must write a file called the + .I makefile + that describes the relationships among files in your program, and the states +@@ -35,17 +35,17 @@ Once a suitable makefile exists, each time you change + this simple shell command: + .sp 1 + .RS +-.B make ++.B gmake + .RE + .sp 1 + suffices to perform all necessary recompilations. + The +-.B make ++.B gmake + program uses the makefile description and the last-modification times of the + files to decide which of the files need to be updated. For each of those + files, it issues the commands recorded in the makefile. + .LP +-.B make ++.B gmake + executes commands in the + .I makefile + to update one or more target +@@ -56,7 +56,7 @@ is typically a program. + If no + .B \-f + option is present, +-.B make ++.B gmake + will look for the makefiles + .IR GNUmakefile , + .IR makefile , +@@ -84,7 +84,7 @@ If + .I makefile + is '\-', the standard input is read. + .LP +-.B make ++.B gmake + updates a target if it depends on prerequisite files + that have been modified since the target was last modified, + or if the target does not exist. +@@ -111,7 +111,7 @@ previous one: + is equivalent to + .BR "\-C " /etc. + This is typically used with recursive invocations of +-.BR make . ++.BR gmake . + .TP 0.5i + .B \-d + Print debugging information in addition to normal processing. +@@ -119,7 +119,7 @@ The debugging information says which files are being c + remaking, which file-times are being compared and with what results, + which files actually need to be remade, which implicit rules are + considered and which are applied---everything interesting about how +-.B make ++.B gmake + decides what to do. + .TP 0.5i + .BI \-\-debug "[=FLAGS]" +@@ -172,7 +172,7 @@ If several + options are used to specify several directories, the directories are + searched in the order specified. + Unlike the arguments to other flags of +-.BR make , ++.BR gmake , + directories given with + .B \-I + flags may come directly after the flag: +@@ -195,7 +195,7 @@ option, the last one is effective. + If the + .B \-j + option is given without an argument, +-.BR make ++.BR gmake + will not limit the number of jobs that can run simultaneously. + .TP 0.5i + \fB\-k\fR, \fB\-\-keep\-going\fR +@@ -256,7 +256,7 @@ This also prints the version information given by the + .B \-v + switch (see below). + To print the data base without trying to remake any files, use +-.IR "make \-p \-f/dev/null" . ++.IR "gmake \-p \-f/dev/null" . + .TP 0.5i + \fB\-q\fR, \fB\-\-question\fR + ``Question mode''. +@@ -287,7 +287,7 @@ Touch files (mark them up to date without really chang + instead of running their commands. + This is used to pretend that the commands were done, in order to fool + future invocations of +-.BR make . ++.BR gmake . + .TP 0.5i + .B \-\-trace + Information about the disposition of each target is printed (why the target is +@@ -295,7 +295,7 @@ being rebuilt and what commands are run to rebuild it) + .TP 0.5i + \fB\-v\fR, \fB\-\-version\fR + Print the version of the +-.B make ++.B gmake + program plus a copyright, a list of authors and a notice that there + is no warranty. + .TP 0.5i +@@ -304,7 +304,7 @@ Print a message containing the working directory + before and after other processing. + This may be useful for tracking down errors from complicated nests of + recursive +-.B make ++.B gmake + commands. + .TP 0.5i + .B \-\-no\-print\-directory +@@ -324,33 +324,33 @@ Without + it is almost the same as running a + .I touch + command on the given file before running +-.BR make , ++.BR gmake , + except that the modification time is changed only in the imagination of +-.BR make . ++.BR gmake . + .TP 0.5i + .B \-\-warn\-undefined\-variables + Warn when an undefined variable is referenced. + .SH "EXIT STATUS" + GNU +-.B make ++.B gmake + exits with a status of zero if all makefiles were successfully parsed + and no targets that were built failed. A status of one will be returned + if the + .B \-q + flag was used and +-.B make ++.B gmake + determines that a target needs to be rebuilt. A status of two will be + returned if any errors were encountered. + .SH "SEE ALSO" + The full documentation for +-.B make ++.B gmake + is maintained as a Texinfo manual. If the + .B info + and +-.B make ++.B gmake + programs are properly installed at your site, the command + .IP +-.B info make ++.B info 'GNU make' + .PP + should give you access to the complete manual. + .SH BUGS Index: patches/patch-job_c =================================================================== RCS file: patches/patch-job_c diff -N patches/patch-job_c --- patches/patch-job_c 2 Nov 2019 00:33:29 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,114 +0,0 @@ -$OpenBSD: patch-job_c,v 1.3 2019/11/02 00:33:29 jca Exp $ - -Only unblock fatal signals after child invocation -http://git.savannah.gnu.org/cgit/make.git/commit/?id=78b5fec6898c26956d00548427cda1101cb80f8a - -Index: job.c ---- job.c.orig -+++ job.c -@@ -461,6 +461,62 @@ is_bourne_compatible_shell (const char *path) - return 0; - } - -+#ifdef POSIX -+extern sigset_t fatal_signal_set; -+ -+static void -+block_sigs () -+{ -+ sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0); -+} -+ -+static void -+unblock_sigs () -+{ -+ sigprocmask (SIG_UNBLOCK, &fatal_signal_set, (sigset_t *) 0); -+} -+ -+void -+unblock_all_sigs () -+{ -+ sigset_t empty; -+ sigemptyset (&empty); -+ sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0); -+} -+ -+#elif defined(HAVE_SIGSETMASK) -+ -+extern int fatal_signal_mask; -+ -+static void -+block_sigs () -+{ -+ sigblock (fatal_signal_mask); -+} -+ -+static void -+unblock_sigs () -+{ -+ sigsetmask (siggetmask (0) & ~fatal_signal_mask); -+} -+ -+void -+unblock_all_sigs () -+{ -+ sigsetmask (0); -+} -+ -+#else -+ -+#define block_sigs() -+#define unblock_sigs() -+ -+void -+unblock_all_sigs () -+{ -+} -+ -+#endif - - /* Write an error message describing the exit status given in - EXIT_CODE, EXIT_SIG, and COREDUMP, for the target TARGET_NAME. -@@ -1031,33 +1087,7 @@ free_child (struct child *child) - free (child); - } - --#ifdef POSIX --extern sigset_t fatal_signal_set; --#endif - --void --block_sigs (void) --{ --#ifdef POSIX -- (void) sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0); --#else --# ifdef HAVE_SIGSETMASK -- (void) sigblock (fatal_signal_mask); --# endif --#endif --} -- --#ifdef POSIX --void --unblock_sigs (void) --{ -- sigset_t empty; -- sigemptyset (&empty); -- sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0); --} --#endif -- -- - /* Start a job to run the commands specified in CHILD. - CHILD is updated to reflect the commands and ID of the child process. - -@@ -2138,7 +2168,7 @@ child_execute_job (struct output *out, int good_stdin, - return pid; - - /* We are the child. */ -- unblock_sigs (); -+ unblock_all_sigs (); - - #ifdef SET_STACK_SIZE - /* Reset limits, if necessary. */ Index: patches/patch-job_h =================================================================== RCS file: patches/patch-job_h diff -N patches/patch-job_h --- patches/patch-job_h 13 Sep 2019 16:59:34 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,29 +0,0 @@ -$OpenBSD: patch-job_h,v 1.2 2019/09/13 16:59:34 kurt Exp $ - -Only unblock fatal signals after child invocation -http://git.savannah.gnu.org/cgit/make.git/commit/?id=78b5fec6898c26956d00548427cda1101cb80f8a - -Index: job.h ---- job.h.orig -+++ job.h -@@ -142,18 +142,7 @@ int exec_command (char **argv, char **envp); - void exec_command (char **argv, char **envp) __attribute__ ((noreturn)); - #endif - --extern unsigned int job_slots_used; -+void unblock_all_sigs (void); - --void block_sigs (void); --#ifdef POSIX --void unblock_sigs (void); --#else --#ifdef HAVE_SIGSETMASK --extern int fatal_signal_mask; --#define unblock_sigs() sigsetmask (0) --#else --#define unblock_sigs() --#endif --#endif -- -+extern unsigned int job_slots_used; - extern unsigned int jobserver_tokens; Index: patches/patch-main_c =================================================================== RCS file: patches/patch-main_c diff -N patches/patch-main_c --- patches/patch-main_c 13 Sep 2019 16:59:34 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,23 +0,0 @@ -$OpenBSD: patch-main_c,v 1.5 2019/09/13 16:59:34 kurt Exp $ - -Only unblock fatal signals after child invocation -http://git.savannah.gnu.org/cgit/make.git/commit/?id=78b5fec6898c26956d00548427cda1101cb80f8a - -Index: main.c ---- main.c.orig -+++ main.c -@@ -590,12 +590,10 @@ struct output make_sync; - - /* Mask of signals that are being caught with fatal_error_signal. */ - --#ifdef POSIX -+#if defined(POSIX) - sigset_t fatal_signal_set; --#else --# ifdef HAVE_SIGSETMASK -+#elif defined(HAVE_SIGSETMASK) - int fatal_signal_mask; --# endif - #endif - - #if !HAVE_DECL_BSD_SIGNAL && !defined bsd_signal Index: patches/patch-make_1 =================================================================== RCS file: patches/patch-make_1 diff -N patches/patch-make_1 --- patches/patch-make_1 25 Jun 2016 19:47:11 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,202 +0,0 @@ -$OpenBSD: patch-make_1,v 1.3 2016/06/25 19:47:11 naddy Exp $ - -Since we install GNU make as gmake replace make with gmake in the -manpage where it makes sense. - ---- make.1.orig Sun Feb 28 18:51:00 2016 -+++ make.1 Fri Jun 24 18:19:09 2016 -@@ -1,13 +1,13 @@ --.TH MAKE 1 "28 February 2016" "GNU" "User Commands" -+.TH GMAKE 1 "03 March 2012" "GNU" "User Commands" - .SH NAME --make \- GNU make utility to maintain groups of programs -+gmake \- GNU make utility to maintain groups of programs - .SH SYNOPSIS --.B make -+.B gmake - [\fIOPTION\fR]... [\fITARGET\fR]... - .SH DESCRIPTION - .LP - The --.I make -+.I gmake - utility will determine automatically which pieces of a large program need to - be recompiled, and issue the commands to recompile them. The manual describes - the GNU implementation of -@@ -15,15 +15,15 @@ the GNU implementation of - which was written by Richard Stallman and Roland McGrath, and is currently - maintained by Paul Smith. Our examples show C programs, since they are very - common, but you can use --.B make -+.B gmake - with any programming language whose compiler can be run with a shell command. - In fact, --.B make -+.B gmake - is not limited to programs. You can use it to describe any task where some - files must be updated automatically from others whenever the others change. - .LP - To prepare to use --.BR make , -+.BR gmake , - you must write a file called the - .I makefile - that describes the relationships among files in your program, and the states -@@ -35,17 +35,17 @@ Once a suitable makefile exists, each time you change - this simple shell command: - .sp 1 - .RS --.B make -+.B gmake - .RE - .sp 1 - suffices to perform all necessary recompilations. - The --.B make -+.B gmake - program uses the makefile description and the last-modification times of the - files to decide which of the files need to be updated. For each of those - files, it issues the commands recorded in the makefile. - .LP --.B make -+.B gmake - executes commands in the - .I makefile - to update one or more target -@@ -56,7 +56,7 @@ is typically a program. - If no - .B \-f - option is present, --.B make -+.B gmake - will look for the makefiles - .IR GNUmakefile , - .IR makefile , -@@ -84,7 +84,7 @@ If - .I makefile - is '\-', the standard input is read. - .LP --.B make -+.B gmake - updates a target if it depends on prerequisite files - that have been modified since the target was last modified, - or if the target does not exist. -@@ -111,7 +111,7 @@ previous one: - is equivalent to - .BR "\-C " /etc. - This is typically used with recursive invocations of --.BR make . -+.BR gmake . - .TP 0.5i - .B \-d - Print debugging information in addition to normal processing. -@@ -119,7 +119,7 @@ The debugging information says which files are being c - remaking, which file-times are being compared and with what results, - which files actually need to be remade, which implicit rules are - considered and which are applied---everything interesting about how --.B make -+.B gmake - decides what to do. - .TP 0.5i - .BI \-\-debug "[=FLAGS]" -@@ -168,7 +168,7 @@ If several - options are used to specify several directories, the directories are - searched in the order specified. - Unlike the arguments to other flags of --.BR make , -+.BR gmake , - directories given with - .B \-I - flags may come directly after the flag: -@@ -191,7 +191,7 @@ option, the last one is effective. - If the - .B \-j - option is given without an argument, --.BR make -+.BR gmake - will not limit the number of jobs that can run simultaneously. - .TP 0.5i - \fB\-k\fR, \fB\-\-keep\-going\fR -@@ -252,7 +252,7 @@ This also prints the version information given by the - .B \-v - switch (see below). - To print the data base without trying to remake any files, use --.IR "make \-p \-f/dev/null" . -+.IR "gmake \-p \-f/dev/null" . - .TP 0.5i - \fB\-q\fR, \fB\-\-question\fR - ``Question mode''. -@@ -275,11 +275,11 @@ Cancel the effect of the - .B \-k - option. - This is never necessary except in a recursive --.B make -+.B gmake - where - .B \-k - might be inherited from the top-level --.B make -+.B gmake - via MAKEFLAGS or if you set - .B \-k - in MAKEFLAGS in your environment. -@@ -289,7 +289,7 @@ Touch files (mark them up to date without really chang - instead of running their commands. - This is used to pretend that the commands were done, in order to fool - future invocations of --.BR make . -+.BR gmake . - .TP 0.5i - .B \-\-trace - Information about the disposition of each target is printed (why the target is -@@ -297,7 +297,7 @@ being rebuilt and what commands are run to rebuild it) - .TP 0.5i - \fB\-v\fR, \fB\-\-version\fR - Print the version of the --.B make -+.B gmake - program plus a copyright, a list of authors and a notice that there - is no warranty. - .TP 0.5i -@@ -306,7 +306,7 @@ Print a message containing the working directory - before and after other processing. - This may be useful for tracking down errors from complicated nests of - recursive --.B make -+.B gmake - commands. - .TP 0.5i - .B \-\-no\-print\-directory -@@ -326,7 +326,7 @@ Without - it is almost the same as running a - .I touch - command on the given file before running --.BR make , -+.BR gmake , - except that the modification time is changed only in the imagination of - .BR make . - .TP 0.5i -@@ -340,19 +340,19 @@ and no targets that were built failed. A status of on - if the - .B \-q - flag was used and --.B make -+.B gmake - determines that a target needs to be rebuilt. A status of two will be - returned if any errors were encountered. - .SH "SEE ALSO" - The full documentation for --.B make -+.B gmake - is maintained as a Texinfo manual. If the - .B info - and --.B make -+.B gmake - programs are properly installed at your site, the command - .IP --.B info make -+.B info 'GNU make' - .PP - should give you access to the complete manual. - .SH BUGS Index: patches/patch-makeint_h =================================================================== RCS file: patches/patch-makeint_h diff -N patches/patch-makeint_h --- patches/patch-makeint_h 2 Nov 2019 00:33:29 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ -$OpenBSD: patch-makeint_h,v 1.3 2019/11/02 00:33:29 jca Exp $ - -Remove too broad #ifdef so that we also use modern code on arm. - -Index: makeint.h ---- makeint.h.orig -+++ makeint.h -@@ -114,7 +114,7 @@ extern int errno; - #endif - - /* Some systems define _POSIX_VERSION but are not really POSIX.1. */ --#if (defined (butterfly) || defined (__arm) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386))) -+#if (defined (butterfly) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386))) - # undef POSIX - #endif - Index: patches/patch-posixos_c =================================================================== RCS file: patches/patch-posixos_c diff -N patches/patch-posixos_c --- patches/patch-posixos_c 6 Aug 2019 12:19:26 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,156 +0,0 @@ -$OpenBSD: patch-posixos_c,v 1.1 2019/08/06 12:19:26 naddy Exp $ - -Use a non-blocking read with pselect to avoid hangs. -https://git.savannah.gnu.org/cgit/make.git/commit/?id=b552b05251980f693c729e251f93f5225b400714 - -Index: posixos.c ---- posixos.c.orig -+++ posixos.c -@@ -59,6 +59,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) - { -@@ -78,6 +96,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; - } - -@@ -113,6 +134,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; - } - -@@ -161,7 +185,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; - -@@ -239,18 +266,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?) */ -@@ -259,28 +280,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; - -- /* 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; -+ 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")); -+ -+ 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 Index: patches/patch-read_c =================================================================== RCS file: patches/patch-read_c diff -N patches/patch-read_c --- patches/patch-read_c 5 Jan 2019 22:19:17 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,17 +0,0 @@ -$OpenBSD: patch-read_c,v 1.3 2019/01/05 22:19:17 naddy Exp $ - -Use after free(). -https://git.savannah.gnu.org/cgit/make.git/commit/?id=816a867ff51110cbca1956ad0e625d8251a7531b - -Index: read.c ---- read.c.orig -+++ read.c -@@ -204,7 +204,7 @@ read_all_makefiles (const char **makefiles) - { - if (*p != '\0') - *p++ = '\0'; -- eval_makefile (name, RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE); -+ eval_makefile (strcache_add (name), RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE); - } - - free (value); Index: patches/patch-remote-cstms_c =================================================================== RCS file: patches/patch-remote-cstms_c diff -N patches/patch-remote-cstms_c --- patches/patch-remote-cstms_c 13 Sep 2019 16:59:34 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,17 +0,0 @@ -$OpenBSD: patch-remote-cstms_c,v 1.1 2019/09/13 16:59:34 kurt Exp $ - -Only unblock fatal signals after child invocation -http://git.savannah.gnu.org/cgit/make.git/commit/?id=78b5fec6898c26956d00548427cda1101cb80f8a - -Index: remote-cstms.c ---- remote-cstms.c.orig -+++ remote-cstms.c -@@ -246,7 +246,7 @@ start_remote_job (char **argv, char **envp, int stdin_ - (void) dup2 (stdin_fd, 0); - - /* Unblock signals in the child. */ -- unblock_sigs (); -+ unblock_all_sigs (); - - /* Run the command. */ - exec_command (new_argv, envp); Index: patches/patch-src_makeint_h =================================================================== RCS file: patches/patch-src_makeint_h diff -N patches/patch-src_makeint_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_makeint_h 30 Jan 2020 21:32:49 -0000 @@ -0,0 +1,14 @@ +$OpenBSD$ + +Index: src/makeint.h +--- src/makeint.h.orig ++++ src/makeint.h +@@ -115,7 +115,7 @@ extern int errno; + #endif + + /* Some systems define _POSIX_VERSION but are not really POSIX.1. */ +-#if (defined (butterfly) || defined (__arm) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386))) ++#if (defined (butterfly) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386))) + # undef POSIX + #endif + Index: patches/patch-tests_run_make_tests_pl =================================================================== RCS file: patches/patch-tests_run_make_tests_pl diff -N patches/patch-tests_run_make_tests_pl --- patches/patch-tests_run_make_tests_pl 5 Aug 2019 12:14:52 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,18 +0,0 @@ -$OpenBSD: patch-tests_run_make_tests_pl,v 1.1 2019/08/05 12:14:52 naddy Exp $ - -Find Perl modules -https://git.savannah.gnu.org/cgit/make.git/commit/?id=d9d4e06084a4c7da480bd49a3487aadf6ba77b54 - -Index: tests/run_make_tests.pl ---- tests/run_make_tests.pl.orig -+++ tests/run_make_tests.pl -@@ -58,6 +58,9 @@ if ($^O eq 'VMS') - *CORE::GLOBAL::rmdir = \&vms_rmdir; - } - -+use FindBin; -+use lib "$FindBin::Bin"; -+ - require "test_driver.pl"; - require "config-flags.pm"; - Index: patches/patch-tests_scripts_features_archives =================================================================== RCS file: /cvs/ports/devel/gmake/patches/patch-tests_scripts_features_archives,v retrieving revision 1.2 diff -u -p -r1.2 patch-tests_scripts_features_archives --- patches/patch-tests_scripts_features_archives 25 Jun 2016 19:47:11 -0000 1.2 +++ patches/patch-tests_scripts_features_archives 30 Jan 2020 21:32:49 -0000 @@ -1,7 +1,8 @@ $OpenBSD: patch-tests_scripts_features_archives,v 1.2 2016/06/25 19:47:11 naddy Exp $ ---- tests/scripts/features/archives.orig Mon Feb 29 07:31:16 2016 -+++ tests/scripts/features/archives Fri Jun 24 18:19:09 2016 -@@ -183,7 +183,7 @@ $mk_string = q! +Index: tests/scripts/features/archives +--- tests/scripts/features/archives.orig ++++ tests/scripts/features/archives +@@ -184,7 +184,7 @@ $mk_string = q! DIR = artest vpath % $(DIR) default: lib(foo) Index: patches/patch-tests_scripts_misc_close_stdout =================================================================== RCS file: patches/patch-tests_scripts_misc_close_stdout diff -N patches/patch-tests_scripts_misc_close_stdout --- patches/patch-tests_scripts_misc_close_stdout 5 Aug 2019 15:05:09 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,20 +0,0 @@ -$OpenBSD: patch-tests_scripts_misc_close_stdout,v 1.1 2019/08/05 15:05:09 naddy Exp $ - -Don't error out on empty test: "Add test suite support to Windows" -https://git.savannah.gnu.org/cgit/make.git/commit/?id=fda00f88d3180be1a898c19bfa23b7adba6c2a9e - -Index: tests/scripts/misc/close_stdout ---- tests/scripts/misc/close_stdout.orig -+++ tests/scripts/misc/close_stdout -@@ -2,8 +2,8 @@ - - $description = "Make sure make exits with an error if stdout is full."; - --if (-e '/dev/full') { -- run_make_test('', '-v > /dev/full', '/^#MAKE#: write error/', 256); --} -+-e '/dev/full' or return -1; -+ -+run_make_test('', '-v > /dev/full', '/^#MAKE#: write error/', 256); - - 1; Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/devel/gmake/pkg/PLIST,v retrieving revision 1.16 diff -u -p -r1.16 PLIST --- pkg/PLIST 30 Oct 2013 23:08:56 -0000 1.16 +++ pkg/PLIST 30 Jan 2020 21:32:49 -0000 @@ -4,6 +4,7 @@ include/gnumake.h @info info/make.info @man man/man1/gmake.1 share/locale/be/LC_MESSAGES/make.mo +share/locale/bg/LC_MESSAGES/make.mo share/locale/cs/LC_MESSAGES/make.mo share/locale/da/LC_MESSAGES/make.mo share/locale/de/LC_MESSAGES/make.mo @@ -23,10 +24,13 @@ share/locale/lt/LC_MESSAGES/ share/locale/lt/LC_MESSAGES/make.mo share/locale/nl/LC_MESSAGES/make.mo share/locale/pl/LC_MESSAGES/make.mo +share/locale/pt/LC_MESSAGES/make.mo share/locale/pt_BR/LC_MESSAGES/make.mo share/locale/ru/LC_MESSAGES/make.mo +share/locale/sr/LC_MESSAGES/make.mo share/locale/sv/LC_MESSAGES/make.mo share/locale/tr/LC_MESSAGES/make.mo share/locale/uk/LC_MESSAGES/make.mo share/locale/vi/LC_MESSAGES/make.mo share/locale/zh_CN/LC_MESSAGES/make.mo +share/locale/zh_TW/LC_MESSAGES/make.mo -- Christian "naddy" Weisgerber na...@mips.inka.de