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 fb6065b..0000000 Binary files a/make-4.2.1.tar.bz2.sig and /dev/null differ diff --git a/make-4.3.tar.gz b/make-4.3.tar.gz new file mode 100644 index 0000000..4779b86 --- /dev/null +++ b/make-4.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19 +size 2317073 diff --git a/make-4.3.tar.gz.sig b/make-4.3.tar.gz.sig new file mode 100644 index 0000000..49a2d27 Binary files /dev/null and b/make-4.3.tar.gz.sig differ 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 c90d7ff..7f7d3d9 100644 Binary files a/make.keyring and b/make.keyring differ diff --git a/make.spec b/make.spec index fec7e79..19702ed 100644 --- a/make.spec +++ b/make.spec @@ -1,7 +1,7 @@ # # spec file for package make # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,28 +12,23 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: make -Version: 4.2.1 +Version: 4.3 Release: 0 Summary: GNU make License: GPL-2.0-or-later Group: Development/Tools/Building -Url: http://www.gnu.org/software/make/make.html -Source: http://ftp.gnu.org/gnu/make/make-%{version}.tar.bz2 -Source1: http://ftp.gnu.org/gnu/make/make-%{version}.tar.bz2.sig -# keyring downloaded from http://savannah.gnu.org/project/memberlist-gpgkeys.php?group=make +URL: http://www.gnu.org/software/make/make.html +Source: http://ftp.gnu.org/gnu/make/make-%{version}.tar.gz +Source1: http://ftp.gnu.org/gnu/make/make-%{version}.tar.gz.sig +# keyring downloaded from https://savannah.gnu.org/project/memberlist-gpgkeys.php?group=make&download=1 Source2: %{name}.keyring Patch1: make-testcases_timeout.diff -# PATCH-FEATURE-OPENSUSE sort glob https://savannah.gnu.org/bugs/index.php?52076 -Patch2: make-sorted-glob.patch -Patch3: glob-lstat.patch -Patch4: glob-interface.patch Patch5: test-driver.patch -Patch6: pselect-non-blocking.patch Patch64: make-library-search-path.diff BuildRequires: autoconf BuildRequires: automake @@ -51,11 +46,7 @@ The GNU make command with extensive documentation. %prep %setup -q %patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 %patch5 -p1 -%patch6 -p1 if [ %{_lib} = lib64 ]; then %patch64 -p1 fi diff --git a/pselect-non-blocking.patch b/pselect-non-blocking.patch deleted file mode 100644 index 8aff027..0000000 --- a/pselect-non-blocking.patch +++ /dev/null @@ -1,171 +0,0 @@ -From b552b05251980f693c729e251f93f5225b400714 Mon Sep 17 00:00:00 2001 -From: Paul Smith -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+"$@"}