summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsevan <sevan@pkgsrc.org>2020-06-12 14:48:38 +0000
committersevan <sevan@pkgsrc.org>2020-06-12 14:48:38 +0000
commite59c513b1602046e31f81936cd5af867092a6e49 (patch)
treea1864b205bc2187d8012463791a4f1687b58f7f4
parent7a65c424b993962d0ccda929c48b608d467a4442 (diff)
downloadpkgsrc-e59c513b1602046e31f81936cd5af867092a6e49.tar.gz
Update to make 4.3
Version 4.3 (19 Jan 2020) A complete list of bugs fixed in this version is available here: https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&set=custom * WARNING: Backward-incompatibility! Number signs (#) appearing inside a macro reference or function invocation no longer introduce comments and should not be escaped with backslashes: thus a call such as: foo := $(shell echo '#') is legal. Previously the number sign needed to be escaped, for example: foo := $(shell echo '\#') Now this latter will resolve to "\#". If you want to write makefiles portable to both versions, assign the number sign to a variable: H := \# foo := $(shell echo '$H') This was claimed to be fixed in 3.81, but wasn't, for some reason. To detect this change search for 'nocomment' in the .FEATURES variable. * WARNING: Backward-incompatibility! Previously appending using '+=' to an empty variable would result in a value starting with a space. Now the initial space is only added if the variable already contains some value. Similarly, appending an empty string does not add a trailing space. * WARNING: Backward-incompatibility! Previously using the .SILENT pseudo-target in a makefile would force all sub-makes to be invoked with the '-s' option, effectively making all sub-makes silent as well. In this release, .SILENT only has effect for the current invocation of make. As a side-effect of this, .SILENT no longer has a side-effect of enabling the --no-print-directory option, which using -s will do. * NOTE: Deprecated behavior. Contrary to the documentation, suffix rules with prerequisites are being treated BOTH as simple targets AND as pattern rules. Further, the prerequisites are ignored by the pattern rules. POSIX specifies that in order to be a suffix rule there can be no prerequisites defined. In this release if POSIX mode is enabled then rules with prerequisites cannot be suffix rules. If POSIX mode is not enabled then the previous behavior is preserved (a pattern rule with no extra prerequisites is created) AND a warning about this behavior is generated: warning: ignoring prerequisites on suffix rule definition The POSIX behavior will be adopted as the only behavior in a future release of GNU make so please resolve any warnings. * New feature: Grouped explicit targets Pattern rules have always had the ability to generate multiple targets with a single invocation of the recipe. It's now possible to declare that an explicit rule generates multiple targets with a single invocation. To use this, replace the ":" token with "&:" in the rule. To detect this feature search for 'grouped-target' in the .FEATURES special variable. Implementation contributed by Kaz Kylheku <kaz@kylheku.com> * New feature: .EXTRA_PREREQS variable Words in this variable are considered prerequisites of targets but they are not added to any of the automatic variable values when expanding the recipe. This variable can either be global (applies to all targets) or a target-specific variable. To detect this feature search for 'extra-prereqs' in the .FEATURES special variable. Implementation contributed by Christof Warlich <cwarlich@gmx.de> * Makefiles can now specify the '-j' option in their MAKEFLAGS variable and this will cause make to enable that parallelism mode. * GNU make will now use posix_spawn() on systems where it is available. If you prefer to use fork/exec even on systems where posix_spawn() is present, you can use the --disable-posix-spawn option to configure. Implementation contributed by Aron Barath <baratharon@caesar.elte.hu> * Error messages printed when invoking non-existent commands have been cleaned up and made consistent. * The previous limit of 63 jobs under -jN on MS-Windows is now increased to 4095. That limit includes the subprocess started by the $(shell) function. * 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. See https://savannah.gnu.org/bugs/index.php?52076 * Interoperate with newer GNU libc and musl C runtime libraries. * Performance improvements provided by Paolo Bonzini <pbonzini@redhat.com> GNU make Developer News * Import the GNU standard bootstrap script to replace the hand-rolled "make update" method for building code from a GNU make Git repository. * Rework the source distribution to move source files into the src/* subdirectory. This aligns with modern best practices in GNU. * Replace local portability code with Gnulib content. Unfortunately due to a problem with Gnulib support for getloadavg, this forces a requirement on Automake 1.16 or above in order to build from Git. See README.git.
-rw-r--r--devel/gmake/Makefile6
-rw-r--r--devel/gmake/distinfo17
-rw-r--r--devel/gmake/patches/patch-configure20
-rw-r--r--devel/gmake/patches/patch-configure.ac20
-rw-r--r--devel/gmake/patches/patch-dir.c51
-rw-r--r--devel/gmake/patches/patch-makeint.h17
-rw-r--r--devel/gmake/patches/patch-posixos.c162
-rw-r--r--devel/gmake/patches/patch-src_hash.c (renamed from devel/gmake/patches/patch-pa)8
8 files changed, 12 insertions, 289 deletions
diff --git a/devel/gmake/Makefile b/devel/gmake/Makefile
index 90397c00043..e9069639d76 100644
--- a/devel/gmake/Makefile
+++ b/devel/gmake/Makefile
@@ -1,11 +1,9 @@
-# $NetBSD: Makefile,v 1.109 2020/01/18 23:30:28 rillig Exp $
+# $NetBSD: Makefile,v 1.110 2020/06/12 14:48:38 sevan Exp $
-DISTNAME= make-4.2.1
+DISTNAME= make-4.3
PKGNAME= g${DISTNAME}
-PKGREVISION= 1
CATEGORIES= devel
MASTER_SITES= ${MASTER_SITE_GNU:=make/}
-EXTRACT_SUFX= .tar.bz2
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= https://www.gnu.org/software/make/make.html
diff --git a/devel/gmake/distinfo b/devel/gmake/distinfo
index d68606958e1..73f2f452577 100644
--- a/devel/gmake/distinfo
+++ b/devel/gmake/distinfo
@@ -1,13 +1,8 @@
-$NetBSD: distinfo,v 1.36 2018/07/04 14:09:07 bsiegert Exp $
+$NetBSD: distinfo,v 1.37 2020/06/12 14:48:38 sevan Exp $
-SHA1 (make-4.2.1.tar.bz2) = 7d9d11eb36cfb752da1fb11bb3e521d2a3cc8830
-RMD160 (make-4.2.1.tar.bz2) = 7cf74e2fd9764ffeb48f40a49077099874ad8a54
-SHA512 (make-4.2.1.tar.bz2) = 9cf00869a2f938492554f71d8cb288b5b009b3bd0489ef164f2c8f6532fc37db5c7e20af1dea288536e7c9710ee0bc6e1ddcdfc4928a8540e6e43661741825b8
-Size (make-4.2.1.tar.bz2) = 1407126 bytes
+SHA1 (make-4.3.tar.gz) = 3c40e5b49b893dbb14f1e2e1f8fe89b7298cc51d
+RMD160 (make-4.3.tar.gz) = 2f2d49f85200433a7a5119bd9d56758a3033c2c0
+SHA512 (make-4.3.tar.gz) = 9a1185cc468368f4ec06478b1cfa343bf90b5cd7c92c0536567db0315b0ee909af53ecce3d44cfd93dd137dbca1ed13af5713e8663590c4fdd21ea635d78496b
+Size (make-4.3.tar.gz) = 2317073 bytes
SHA1 (patch-af) = 8ff060ecba9d664044eabd98741253881d8c9bbe
-SHA1 (patch-configure) = e3122c5c1bbe59ec4c233f42feb6d7952a1e1215
-SHA1 (patch-configure.ac) = 7d22c8f5e5d349687885f55120fa2f7c1251e399
-SHA1 (patch-dir.c) = 1616d8e26c0761c8734063806fa581ae8884b4e8
-SHA1 (patch-makeint.h) = cb5f0889d84874a16fc10bc6f91e18c2277194cc
-SHA1 (patch-pa) = 2c0168db7afec3da98b30392290e5b9464ea7b5e
-SHA1 (patch-posixos.c) = 4c566b23442bcc87f776181be531957c254162de
+SHA1 (patch-src_hash.c) = 4820633cc6b5d0d42cd8aeea46bb1b3f5f6475bd
diff --git a/devel/gmake/patches/patch-configure b/devel/gmake/patches/patch-configure
deleted file mode 100644
index f08e92f3f3d..00000000000
--- a/devel/gmake/patches/patch-configure
+++ /dev/null
@@ -1,20 +0,0 @@
-$NetBSD: patch-configure,v 1.1 2018/04/28 06:59:41 minskim Exp $
-
-Support GLIBC glob interface version 2.
-
-http://git.savannah.gnu.org/cgit/make.git/commit/?id=48c8a116
-
---- configure.orig 2014-10-05 16:25:21.000000000 +0000
-+++ configure
-@@ -11060,10 +11060,9 @@ else
- #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/devel/gmake/patches/patch-configure.ac b/devel/gmake/patches/patch-configure.ac
deleted file mode 100644
index b2b8f038a96..00000000000
--- a/devel/gmake/patches/patch-configure.ac
+++ /dev/null
@@ -1,20 +0,0 @@
-$NetBSD: patch-configure.ac,v 1.1 2018/04/28 06:59:41 minskim Exp $
-
-Support GLIBC glob interface version 2.
-
-http://git.savannah.gnu.org/cgit/make.git/commit/?id=48c8a116
-
---- configure.ac.orig 2014-10-05 16:24:51.000000000 +0000
-+++ configure.ac
-@@ -401,10 +401,9 @@ AC_CACHE_CHECK([if system libc has GNU g
- #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/devel/gmake/patches/patch-dir.c b/devel/gmake/patches/patch-dir.c
deleted file mode 100644
index a3dfe8de9b9..00000000000
--- a/devel/gmake/patches/patch-dir.c
+++ /dev/null
@@ -1,51 +0,0 @@
-$NetBSD: patch-dir.c,v 1.1 2018/04/30 01:47:30 minskim Exp $
-
-Support GLIBC glob interface version 2.
-
-http://git.savannah.gnu.org/cgit/make.git/commit/?id=193f1e81
-
---- dir.c.orig 2014-10-05 16:24:51.000000000 +0000
-+++ dir.c
-@@ -1212,15 +1212,40 @@ local_stat (const char *path, struct sta
- }
- #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
diff --git a/devel/gmake/patches/patch-makeint.h b/devel/gmake/patches/patch-makeint.h
deleted file mode 100644
index 4b42e8290fe..00000000000
--- a/devel/gmake/patches/patch-makeint.h
+++ /dev/null
@@ -1,17 +0,0 @@
-$NetBSD: patch-makeint.h,v 1.8 2018/07/04 14:09:07 bsiegert Exp $
-
-* Do not override stack limits by default.
- It can dramatically increase the memory use of multi-threaded programs.
-
---- makeint.h.orig 2016-05-21 20:22:32.000000000 +0000
-+++ makeint.h
-@@ -442,9 +442,6 @@ extern int unixy_shell;
- #define NEXT_TOKEN(s) while (ISSPACE (*(s))) ++(s)
- #define END_OF_TOKEN(s) while (! STOP_SET (*(s), MAP_SPACE|MAP_NUL)) ++(s)
-
--#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
--# define SET_STACK_SIZE
--#endif
- #ifdef SET_STACK_SIZE
- # include <sys/resource.h>
- extern struct rlimit stack_limit;
diff --git a/devel/gmake/patches/patch-posixos.c b/devel/gmake/patches/patch-posixos.c
deleted file mode 100644
index dc3081c203f..00000000000
--- a/devel/gmake/patches/patch-posixos.c
+++ /dev/null
@@ -1,162 +0,0 @@
-$NetBSD: patch-posixos.c,v 1.1 2018/07/04 14:09:07 bsiegert Exp $
-
-http://git.savannah.gnu.org/cgit/make.git/commit/?id=b552b05251980f693c729e251f93f5225b400714
-
-[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.orig 2016-05-21 20:21:52.000000000 +0000
-+++ 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;
-+
-+ 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"));
-+ }
-
-- /* 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;
-+ /* read() should never return 0: only the master make can reap all the
-+ tokens and close the write side...?? */
-+ return r > 0;
-+ }
- }
-
- #else
diff --git a/devel/gmake/patches/patch-pa b/devel/gmake/patches/patch-src_hash.c
index 345fd4ef93f..ecd6df8aa4e 100644
--- a/devel/gmake/patches/patch-pa
+++ b/devel/gmake/patches/patch-src_hash.c
@@ -1,10 +1,10 @@
-$NetBSD: patch-pa,v 1.1 2009/10/30 18:20:04 ahoka Exp $
+$NetBSD: patch-src_hash.c,v 1.1 2020/06/12 14:48:38 sevan Exp $
PCC says: hash.c:326: error: Constant "4294967295" is out of range
---- hash.c.orig 2006-02-11 21:00:39.000000000 +0100
-+++ hash.c
-@@ -323,7 +323,7 @@ round_up_2 (unsigned long n)
+--- work/make-4.3/src/hash.c.orig 2020-06-12 14:40:24.838680043 +0000
++++ work/make-4.3/src/hash.c
+@@ -321,7 +321,7 @@ round_up_2 (unsigned long n)
n |= (n >> 8);
n |= (n >> 16);