From a23f32161553559491d599d503600ff5c05ab7b62ab02b7f825f14465ebd9c41 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 20 Jan 2020 11:28:36 +0000 Subject: [PATCH] Accepting request 765762 from home:Andreas_Schwab:Factory - Update to make 4.3 * WARNING: Backward-incompatibility! Number signs (#) appearing inside a macro reference or function invocation no longer introduce comments and should not be escaped with backslashes * WARNING: Backward-incompatibility! Previously appending using '+=' to an empty variable would result in a value starting with a space * NOTE: Deprecated behavior. Contrary to the documentation, suffix rules with prerequisites are being treated BOTH as simple targets AND as pattern rules * New feature: Grouped explicit targets * New feature: .EXTRA_PREREQS variable * Makefiles can now specify the '-j' option in their MAKEFLAGS variable and this will cause make to enable that parallelism mode * Error messages printed when invoking non-existent commands have been cleaned up and made consistent. * A new option --no-silent has been added, that cancels the effect of the -s/--silent/--quiet flag * A new option -E has been added as a short alias for --eval * All wildcard expansion within GNU make, including $(wildcard ...), will sort the results * Performance improvements provided by Paolo Bonzini - make-sorted-glob.patch, glob-lstat.patch, glob-interface.patch, pselect-non-blocking.patch: Removed, upstreamed OBS-URL: https://build.opensuse.org/request/show/765762 OBS-URL: https://build.opensuse.org/package/show/Base:System/make?expand=0&rev=65 --- glob-interface.patch | 34 ------- glob-lstat.patch | 67 ------------- make-4.2.1.tar.bz2 | 3 - make-4.2.1.tar.bz2.sig | Bin 72 -> 0 bytes make-4.3.tar.gz | 3 + make-4.3.tar.gz.sig | Bin 0 -> 566 bytes make-library-search-path.diff | 8 +- make-sorted-glob.patch | 33 ------- make-testcases_timeout.diff | 8 +- make.changes | 30 ++++++ make.keyring | Bin 3240 -> 9435 bytes make.spec | 23 ++--- pselect-non-blocking.patch | 171 ---------------------------------- test-driver.patch | 22 ++--- 14 files changed, 59 insertions(+), 343 deletions(-) delete mode 100644 glob-interface.patch delete mode 100644 glob-lstat.patch delete mode 100644 make-4.2.1.tar.bz2 delete mode 100644 make-4.2.1.tar.bz2.sig create mode 100644 make-4.3.tar.gz create mode 100644 make-4.3.tar.gz.sig delete mode 100644 make-sorted-glob.patch delete mode 100644 pselect-non-blocking.patch diff --git a/glob-interface.patch b/glob-interface.patch deleted file mode 100644 index c27cba8..0000000 --- a/glob-interface.patch +++ /dev/null @@ -1,34 +0,0 @@ -* configure.ac: Support GLIBC glob interface version 2 - -Index: make-4.2.1/configure -=================================================================== ---- make-4.2.1.orig/configure -+++ make-4.2.1/configure -@@ -11481,10 +11481,9 @@ else - #include - #include - --#define GLOB_INTERFACE_VERSION 1 - #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 - # include --# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION -+# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 - gnu glob - # endif - #endif -Index: make-4.2.1/configure.ac -=================================================================== ---- make-4.2.1.orig/configure.ac -+++ make-4.2.1/configure.ac -@@ -399,10 +399,9 @@ AC_CACHE_CHECK([if system libc has GNU g - #include - #include - --#define GLOB_INTERFACE_VERSION 1 - #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 - # include --# 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/glob-lstat.patch b/glob-lstat.patch deleted file mode 100644 index 39e3b55..0000000 --- a/glob-lstat.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 193f1e81edd6b1b56b0eb0ff8aa4b41c7b4257b4 Mon Sep 17 00:00:00 2001 -From: Paul Eggert -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 adbb8a9b99..c343e4c29c 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.15.0 - diff --git a/make-4.2.1.tar.bz2 b/make-4.2.1.tar.bz2 deleted file mode 100644 index 7032ff1..0000000 --- a/make-4.2.1.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d6e262bf3601b42d2b1e4ef8310029e1dcf20083c5446b4b7aa67081fdffc589 -size 1407126 diff --git a/make-4.2.1.tar.bz2.sig b/make-4.2.1.tar.bz2.sig deleted file mode 100644 index fb6065ba979f410450418078a794c88cabaa64799f8b2eec7497a3378b5bde2a..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmV-O0Jr~$Mg#y60ssaD0#{p2?*Ix35SFk<6=OKI)PmgrpLwM-rxnI0b6RWPjJXKs e{S=lXDgdCPp9PTcFN))_Dgcn)tjez2coTXB0$wE7D*y@!5Z(y(0Tn3>fFmb|3iQ>1X3XiIT8RLZ(I2xM&Rs<)~m6O zn~o2_!?$eOQxsdnGJPARqm?e6<(f{W@uf`P+?=1TCm(`CoeyvG0)bdq0G&yM5Z(DO z77>>k)ATUG7jVGX^Opg#5px+hhFHVF*bbP0r1d5&>ue##1wF7RbJSC@8jJ zZqalk8m_O8-7{-RZpc0?uR;Z@@vnEW&4qvAHz`mZg+j)6bc2?aT>nIY z6>A!|ljixgjk_6EF!)ZPlMZ2;BNr8*7m#sh+V-{$))vuIHo+|W%XL@7uuDA0%iFf* z%%Q!_MB4Vh#P%tG8}`g2cV7%u3i{ML&B*!;XTmO6g1d~<$NNvtIhiom z?XK>S6}I*mzS8qBf1El}%p=aRlJL=71JN=bT|~_~pDl|mF>Z4I+7Ph(B>rm^NotI{ z4JnDo4nItBQQ_t5QJ_u_}#xnDYaag+DfcbDgMK;OsP5u EeBPfHBme*a literal 0 HcmV?d00001 diff --git a/make-library-search-path.diff b/make-library-search-path.diff index c3ef5f3..63a326a 100644 --- a/make-library-search-path.diff +++ b/make-library-search-path.diff @@ -6,11 +6,11 @@ This patch extends the search path to /lib64 and /usr/lib64 remake.c | 2 ++ 1 file changed, 2 insertions(+) -Index: make-4.1/remake.c +Index: make-4.3/src/remake.c =================================================================== ---- make-4.1.orig/remake.c 2014-10-05 17:24:51.000000000 +0100 -+++ make-4.1/remake.c 2014-10-15 23:20:42.000000000 +0100 -@@ -1549,6 +1549,8 @@ library_search (const char *lib, FILE_TI +--- make-4.3.orig/src/remake.c ++++ make-4.3/src/remake.c +@@ -1601,6 +1601,8 @@ library_search (const char *lib, FILE_TI static const char *dirs[] = { #ifndef _AMIGA diff --git a/make-sorted-glob.patch b/make-sorted-glob.patch deleted file mode 100644 index 499ae5d..0000000 --- a/make-sorted-glob.patch +++ /dev/null @@ -1,33 +0,0 @@ -https://savannah.gnu.org/bugs/index.php?52076 - -commit faa0098ac6b196375b00c48528a91ee553313e8d -Author: Bernhard M. Wiedemann -Date: Tue Sep 5 13:16:08 2017 +0200 - - Sort glob file lists - - to make builds more reproducible by default. - See https://reproducible-builds.org/ for why this is good. - - commit b9f831b8 added GLOB_NOSORT for no apparent reason, - possibly by mistake. - - man 3 glob is very specific that the only reason to add this flag is - to save processing time, but since ordering actually matters in a - variety of cases, (e.g. when linking .o files into a binary, - or appending snippets to a collection) - we want the list sorted. - -Index: make-4.2.1/read.c -=================================================================== ---- make-4.2.1.orig/read.c -+++ make-4.2.1/read.c -@@ -3275,7 +3275,7 @@ parse_file_seq (char **stringp, unsigned - nlist = &name; - } - else -- switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl)) -+ switch (glob (name, GLOB_ALTDIRFUNC, NULL, &gl)) - { - case GLOB_NOSPACE: - OUT_OF_MEM(); diff --git a/make-testcases_timeout.diff b/make-testcases_timeout.diff index 6861add..8d5ccc0 100644 --- a/make-testcases_timeout.diff +++ b/make-testcases_timeout.diff @@ -2,11 +2,11 @@ tests/test_driver.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: make-4.1/tests/test_driver.pl +Index: make-4.3/tests/test_driver.pl =================================================================== ---- make-4.1.orig/tests/test_driver.pl 2014-10-15 23:16:56.000000000 +0100 -+++ make-4.1/tests/test_driver.pl 2014-10-15 23:17:23.000000000 +0100 -@@ -49,7 +49,7 @@ $tests_passed = 0; +--- make-4.3.orig/tests/test_driver.pl ++++ make-4.3/tests/test_driver.pl +@@ -52,7 +52,7 @@ $tests_passed = 0; $test_passed = 1; # Timeout in seconds. If the test takes longer than this we'll fail it. diff --git a/make.changes b/make.changes index 72cae04..df2d510 100644 --- a/make.changes +++ b/make.changes @@ -1,3 +1,33 @@ +------------------------------------------------------------------- +Mon Jan 20 10:34:40 UTC 2020 - Andreas Schwab + +- Update to make 4.3 + * WARNING: Backward-incompatibility! + Number signs (#) appearing inside a macro reference or function + invocation no longer introduce comments and should not be escaped with + backslashes + * WARNING: Backward-incompatibility! + Previously appending using '+=' to an empty variable would result in a + value starting with a space + * NOTE: Deprecated behavior. + Contrary to the documentation, suffix rules with prerequisites are being + treated BOTH as simple targets AND as pattern rules + * New feature: Grouped explicit targets + * New feature: .EXTRA_PREREQS variable + * Makefiles can now specify the '-j' option in their MAKEFLAGS variable + and this will cause make to enable that parallelism mode + * Error messages printed when invoking non-existent commands have been + cleaned up and made consistent. + * A new option --no-silent has been added, that cancels the effect of + the -s/--silent/--quiet flag + * A new option -E has been added as a short alias for --eval + * All wildcard expansion within GNU make, including $(wildcard ...), + will sort the results + * Performance improvements provided by Paolo Bonzini + +- make-sorted-glob.patch, glob-lstat.patch, glob-interface.patch, + pselect-non-blocking.patch: Removed, upstreamed + ------------------------------------------------------------------- Fri Jul 27 07:42:02 UTC 2018 - jengelh@inai.de diff --git a/make.keyring b/make.keyring index c90d7ff4522d3e1fc98e3842b25125fb1d7dad6d95f6cf99051d22bf60deb755..7f7d3d9f9e72178f9e47e13321b13e4a94c515378111df416a8a12d5219b68ce 100644 GIT binary patch literal 9435 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 LKQ;XC&(Hq^b(h=^ literal 3240 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 -Date: Sat, 3 Jun 2017 16:20:51 -0400 -Subject: [PATCH] [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 e642d7f3bd..dbafa51f25 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 --- -2.18.0 - diff --git a/test-driver.patch b/test-driver.patch index 4c59e7b..1ddb151 100644 --- a/test-driver.patch +++ b/test-driver.patch @@ -1,22 +1,22 @@ -Index: make-4.2.1/Makefile.am +Index: make-4.3/Makefile.am =================================================================== ---- make-4.2.1.orig/Makefile.am -+++ make-4.2.1/Makefile.am -@@ -188,8 +188,8 @@ check-regression: tests/config-flags.pm +--- make-4.3.orig/Makefile.am ++++ make-4.3/Makefile.am +@@ -161,8 +161,8 @@ check-regression: tests/config-flags.pm rm -f tests/$$f; ln -s ../srctests/$$f tests; \ done; fi ;; \ esac; \ -- echo "cd tests && $(PERL) ./run_make_tests.pl -srcdir $(abs_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \ -- cd tests && $(PERL) ./run_make_tests.pl -srcdir '$(abs_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \ -+ echo "cd tests && $(PERL) -I. ./run_make_tests.pl -srcdir $(abs_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \ -+ cd tests && $(PERL) -I. ./run_make_tests.pl -srcdir '$(abs_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \ +- echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \ +- cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \ ++ echo "cd tests && $(PERL) $(PERLFLAGS) -I. ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \ ++ cd tests && $(PERL) $(PERLFLAGS) -I. ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \ else \ echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ fi; \ -Index: make-4.2.1/tests/run_make_tests +Index: make-4.3/tests/run_make_tests =================================================================== ---- make-4.2.1.orig/tests/run_make_tests -+++ make-4.2.1/tests/run_make_tests +--- make-4.3.orig/tests/run_make_tests ++++ make-4.3/tests/run_make_tests @@ -1,2 +1,2 @@ #!/bin/sh -exec perl $0.pl ${1+"$@"}