commit
3f6007070b
@ -0,0 +1 @@
|
|||||||
|
SOURCES/make-4.2.1.tar.bz2
|
@ -0,0 +1 @@
|
|||||||
|
7d9d11eb36cfb752da1fb11bb3e521d2a3cc8830 SOURCES/make-4.2.1.tar.bz2
|
@ -0,0 +1,19 @@
|
|||||||
|
diff -Nrup a/job.c b/job.c
|
||||||
|
--- a/job.c 2014-02-03 18:23:45.936436714 -0500
|
||||||
|
+++ b/job.c 2014-02-04 00:17:53.232074893 -0500
|
||||||
|
@@ -3269,13 +3269,14 @@ construct_command_argv_internal (char *l
|
||||||
|
#endif
|
||||||
|
if (PRESERVE_BSNL)
|
||||||
|
{
|
||||||
|
- *(ap++) = '\\';
|
||||||
|
+ *(ap++) = '\'';
|
||||||
|
/* Only non-batch execution needs another backslash,
|
||||||
|
because it will be passed through a recursive
|
||||||
|
invocation of this function. */
|
||||||
|
if (!batch_mode_shell)
|
||||||
|
*(ap++) = '\\';
|
||||||
|
*(ap++) = '\n';
|
||||||
|
+ *(ap++) = '\'';
|
||||||
|
}
|
||||||
|
++p;
|
||||||
|
continue;
|
@ -0,0 +1,14 @@
|
|||||||
|
diff -up make-3.82/configure\~ make-3.82/configure
|
||||||
|
--- make-3.82/configure~ 2010-07-28 07:41:51.000000000 +0200
|
||||||
|
+++ make-3.82/configure 2010-08-11 15:07:50.000000000 +0200
|
||||||
|
@@ -7215,7 +7215,7 @@ return clock_gettime ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
-for ac_lib in '' rt posix4; do
|
||||||
|
+for ac_lib in '' posix4; do
|
||||||
|
if test -z "$ac_lib"; then
|
||||||
|
ac_res="none required"
|
||||||
|
else
|
||||||
|
|
||||||
|
Diff finished. Wed Aug 11 15:07:59 2010
|
@ -0,0 +1,16 @@
|
|||||||
|
diff -up make-3.82/job.c\~ make-3.82/job.c
|
||||||
|
--- make-3.82/job.c~ 2010-08-11 16:13:33.000000000 +0200
|
||||||
|
+++ make-3.82/job.c 2010-08-12 14:20:08.000000000 +0200
|
||||||
|
@@ -2442,7 +2442,11 @@ construct_command_argv_internal (char *l
|
||||||
|
|
||||||
|
/* See if it is safe to parse commands internally. */
|
||||||
|
if (shell == 0)
|
||||||
|
- shell = default_shell;
|
||||||
|
+ {
|
||||||
|
+ shell = default_shell;
|
||||||
|
+ if (shellflags == 0)
|
||||||
|
+ shellflags = "-c";
|
||||||
|
+ }
|
||||||
|
#ifdef WINDOWS32
|
||||||
|
else if (strcmp (shell, default_shell))
|
||||||
|
{
|
@ -0,0 +1,12 @@
|
|||||||
|
diff -Nrup a/makeint.h b/makeint.h
|
||||||
|
--- a/makeint.h 2016-05-21 16:22:32.000000000 -0400
|
||||||
|
+++ b/makeint.h 2016-09-22 16:12:38.606702160 -0400
|
||||||
|
@@ -596,7 +596,7 @@ long int lseek ();
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef HAVE_GETCWD
|
||||||
|
-# if !defined(VMS) && !defined(__DECC)
|
||||||
|
+# if !defined(VMS) && !defined(__DECC) && !defined(getcwd)
|
||||||
|
char *getcwd ();
|
||||||
|
# endif
|
||||||
|
# else
|
@ -0,0 +1,25 @@
|
|||||||
|
diff -Nrup a/main.c b/main.c
|
||||||
|
--- a/main.c 2016-05-31 03:17:26.000000000 -0400
|
||||||
|
+++ b/main.c 2016-09-22 16:18:52.283889265 -0400
|
||||||
|
@@ -2051,6 +2051,21 @@ main (int argc, char **argv, char **envp
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef PIPE_BUF
|
||||||
|
+ if (job_slots > PIPE_BUF)
|
||||||
|
+#elif defined _POSIX_PIPE_BUF
|
||||||
|
+ if (job_slots > _POSIX_PIPE_BUF)
|
||||||
|
+#else
|
||||||
|
+ if (job_slots > 512)
|
||||||
|
+#endif
|
||||||
|
+ {
|
||||||
|
+ O (error, NILF,
|
||||||
|
+ _("More parallel jobs (-jN) than this platform can handle requested."));
|
||||||
|
+ O (error, NILF, _("Resetting to single job (-j1) mode."));
|
||||||
|
+ job_slots = 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/* If we have >1 slot at this point, then we're a top-level make.
|
||||||
|
Set up the jobserver.
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
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: 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
|
||||||
|
--
|
||||||
|
cgit v1.0-41-gc330
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
diff -Nrup a/configure b/configure
|
||||||
|
--- a/configure 2018-03-18 23:53:43.991741060 -0400
|
||||||
|
+++ b/configure 2018-03-18 23:52:52.456028175 -0400
|
||||||
|
@@ -11481,10 +11481,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
|
@ -0,0 +1,28 @@
|
|||||||
|
From 48c8a116a914a325a0497721f5d8b58d5bba34d4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Smith <psmith@gnu.org>
|
||||||
|
Date: Sun, 19 Nov 2017 15:09:16 -0500
|
||||||
|
Subject: * configure.ac: Support GLIBC glob interface version 2
|
||||||
|
|
||||||
|
---
|
||||||
|
configure.ac | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 8c72568..4710832 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -404,10 +404,9 @@ AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob],
|
||||||
|
#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],
|
||||||
|
--
|
||||||
|
cgit v1.0-41-gc330
|
||||||
|
|
@ -0,0 +1,442 @@
|
|||||||
|
From 0c5a9f9b92af1634dc60fa21e9ac86ed50e5d595 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Smith <psmith@gnu.org>
|
||||||
|
Date: Mon, 30 Oct 2017 12:53:49 -0400
|
||||||
|
Subject: * main.c (main): [SV 48274] Allow -j in makefile MAKEFLAGS variable.
|
||||||
|
|
||||||
|
* tests/jhelp.pl: New file to allow testing parallelism without sleep.
|
||||||
|
* tests/scripts/features/parallelism: Test this.
|
||||||
|
* tests/scripts/features/jobserver: Update tests.
|
||||||
|
* tests/scripts/features/output-sync: Remove useless rm command.
|
||||||
|
---
|
||||||
|
main.c | 80 ++++++++++++++++++++++++++--------
|
||||||
|
tests/jhelp.pl | 63 +++++++++++++++++++++++++++
|
||||||
|
tests/scripts/features/jobserver | 6 +--
|
||||||
|
tests/scripts/features/output-sync | 2 +-
|
||||||
|
tests/scripts/features/parallelism | 89 +++++++++++++++++++++-----------------
|
||||||
|
5 files changed, 177 insertions(+), 63 deletions(-)
|
||||||
|
create mode 100755 tests/jhelp.pl
|
||||||
|
|
||||||
|
diff -rupN a/main.c b/main.c
|
||||||
|
--- a/main.c 2021-10-18 15:23:21.769274000 -0400
|
||||||
|
+++ b/main.c 2021-10-18 15:30:43.579608645 -0400
|
||||||
|
@@ -1482,7 +1482,7 @@ main (int argc, char **argv, char **envp
|
||||||
|
|| output_sync == OUTPUT_SYNC_TARGET);
|
||||||
|
OUTPUT_SET (&make_sync);
|
||||||
|
|
||||||
|
- /* Remember the job slots set through the environment vs. command line. */
|
||||||
|
+ /* Parse the command line options. Remember the job slots set this way. */
|
||||||
|
{
|
||||||
|
int env_slots = arg_job_slots;
|
||||||
|
arg_job_slots = INVALID_JOB_SLOTS;
|
||||||
|
@@ -1609,41 +1609,38 @@ main (int argc, char **argv, char **envp
|
||||||
|
/* We may move, but until we do, here we are. */
|
||||||
|
starting_directory = current_directory;
|
||||||
|
|
||||||
|
- /* Set up the job_slots value and the jobserver. This can't be usefully set
|
||||||
|
- in the makefile, and we want to verify the authorization is valid before
|
||||||
|
- make has a chance to start using it for something else. */
|
||||||
|
+ /* Validate the arg_job_slots configuration before we define MAKEFLAGS so
|
||||||
|
+ users get an accurate value in their makefiles.
|
||||||
|
+ At this point arg_job_slots is the argv setting, if there is one, else
|
||||||
|
+ the MAKEFLAGS env setting, if there is one. */
|
||||||
|
|
||||||
|
if (jobserver_auth)
|
||||||
|
{
|
||||||
|
+ /* We're a child in an existing jobserver group. */
|
||||||
|
if (argv_slots == INVALID_JOB_SLOTS)
|
||||||
|
{
|
||||||
|
+ /* There's no -j option on the command line: check authorization. */
|
||||||
|
if (jobserver_parse_auth (jobserver_auth))
|
||||||
|
{
|
||||||
|
/* Success! Use the jobserver. */
|
||||||
|
- job_slots = 0;
|
||||||
|
goto job_setup_complete;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Oops: we have jobserver-auth but it's invalid :(. */
|
||||||
|
O (error, NILF, _("warning: jobserver unavailable: using -j1. Add '+' to parent make rule."));
|
||||||
|
arg_job_slots = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* The user provided a -j setting on the command line: use it. */
|
||||||
|
+ /* The user provided a -j setting on the command line so use it: we're
|
||||||
|
+ the master make of a new jobserver group. */
|
||||||
|
else if (!restarts)
|
||||||
|
- /* If restarts is >0 we already printed this message. */
|
||||||
|
- O (error, NILF,
|
||||||
|
- _("warning: -jN forced in submake: disabling jobserver mode."));
|
||||||
|
+ ON (error, NILF,
|
||||||
|
+ _("warning: -j%d forced in submake: resetting jobserver mode."),
|
||||||
|
+ argv_slots);
|
||||||
|
|
||||||
|
- /* We failed to use our parent's jobserver. */
|
||||||
|
+ /* We can't use our parent's jobserver, so reset. */
|
||||||
|
reset_jobserver ();
|
||||||
|
- job_slots = (unsigned int)arg_job_slots;
|
||||||
|
}
|
||||||
|
- else if (arg_job_slots == INVALID_JOB_SLOTS)
|
||||||
|
- /* The default is one job at a time. */
|
||||||
|
- job_slots = 1;
|
||||||
|
- else
|
||||||
|
- /* Use whatever was provided. */
|
||||||
|
- job_slots = (unsigned int)arg_job_slots;
|
||||||
|
|
||||||
|
job_setup_complete:
|
||||||
|
|
||||||
|
@@ -1999,6 +1996,9 @@ main (int argc, char **argv, char **envp
|
||||||
|
{
|
||||||
|
int old_builtin_rules_flag = no_builtin_rules_flag;
|
||||||
|
int old_builtin_variables_flag = no_builtin_variables_flag;
|
||||||
|
+ int old_arg_job_slots = arg_job_slots;
|
||||||
|
+
|
||||||
|
+ arg_job_slots = INVALID_JOB_SLOTS;
|
||||||
|
|
||||||
|
/* Decode switches again, for variables set by the makefile. */
|
||||||
|
decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS"));
|
||||||
|
@@ -2011,6 +2011,24 @@ main (int argc, char **argv, char **envp
|
||||||
|
decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS"));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ /* If -j is not set in the makefile, or it was set on the command line,
|
||||||
|
+ reset to use the previous value. */
|
||||||
|
+ if (arg_job_slots == INVALID_JOB_SLOTS || argv_slots != INVALID_JOB_SLOTS)
|
||||||
|
+ arg_job_slots = old_arg_job_slots;
|
||||||
|
+
|
||||||
|
+ else if (jobserver_auth)
|
||||||
|
+ {
|
||||||
|
+ /* Makefile MAKEFLAGS set -j, but we already have a jobserver.
|
||||||
|
+ Make us the master of a new jobserver group. */
|
||||||
|
+ if (!restarts)
|
||||||
|
+ ON (error, NILF,
|
||||||
|
+ _("warning: -j%d forced in makefile: resetting jobserver mode."),
|
||||||
|
+ arg_job_slots);
|
||||||
|
+
|
||||||
|
+ /* We can't use our parent's jobserver, so reset. */
|
||||||
|
+ reset_jobserver ();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Reset in case the switches changed our mind. */
|
||||||
|
syncing = (output_sync == OUTPUT_SYNC_LINE
|
||||||
|
|| output_sync == OUTPUT_SYNC_TARGET);
|
||||||
|
@@ -2037,8 +2055,31 @@ main (int argc, char **argv, char **envp
|
||||||
|
undefine_default_variables ();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Final jobserver configuration.
|
||||||
|
+
|
||||||
|
+ If we have jobserver_auth then we are a client in an existing jobserver
|
||||||
|
+ group, that's already been verified OK above. If we don't have
|
||||||
|
+ jobserver_auth and jobserver is enabled, then start a new jobserver.
|
||||||
|
+
|
||||||
|
+ arg_job_slots = INVALID_JOB_SLOTS if we don't want -j in MAKEFLAGS
|
||||||
|
+
|
||||||
|
+ arg_job_slots = # of jobs of parallelism
|
||||||
|
+
|
||||||
|
+ job_slots = 0 for no limits on jobs, or when limiting via jobserver.
|
||||||
|
+
|
||||||
|
+ job_slots = 1 for standard non-parallel mode.
|
||||||
|
+
|
||||||
|
+ job_slots >1 for old-style parallelism without jobservers. */
|
||||||
|
+
|
||||||
|
+ if (jobserver_auth)
|
||||||
|
+ job_slots = 0;
|
||||||
|
+ else if (arg_job_slots == INVALID_JOB_SLOTS)
|
||||||
|
+ job_slots = 1;
|
||||||
|
+ else
|
||||||
|
+ job_slots = arg_job_slots;
|
||||||
|
+
|
||||||
|
#if defined (__MSDOS__) || defined (__EMX__) || defined (VMS)
|
||||||
|
- if (arg_job_slots != 1
|
||||||
|
+ if (job_slots != 1
|
||||||
|
# ifdef __EMX__
|
||||||
|
&& _osmode != OS2_MODE /* turn off -j if we are in DOS mode */
|
||||||
|
# endif
|
||||||
|
@@ -2047,7 +2088,8 @@ main (int argc, char **argv, char **envp
|
||||||
|
O (error, NILF,
|
||||||
|
_("Parallel jobs (-j) are not supported on this platform."));
|
||||||
|
O (error, NILF, _("Resetting to single job (-j1) mode."));
|
||||||
|
- arg_job_slots = job_slots = 1;
|
||||||
|
+ arg_job_slots = INVALID_JOB_SLOTS;
|
||||||
|
+ job_slots = 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
diff -rupN a/tests/jhelp.pl b/tests/jhelp.pl
|
||||||
|
--- a/tests/jhelp.pl 1969-12-31 19:00:00.000000000 -0500
|
||||||
|
+++ b/tests/jhelp.pl 2021-10-18 15:30:43.582608763 -0400
|
||||||
|
@@ -0,0 +1,63 @@
|
||||||
|
+#!/usr/bin/env perl
|
||||||
|
+# -*-perl-*-
|
||||||
|
+#
|
||||||
|
+# This script helps us test jobserver/parallelism without a lot of unreliable
|
||||||
|
+# (and slow) sleep calls. Written in Perl to get portable sub-second sleep.
|
||||||
|
+#
|
||||||
|
+# It can run the following steps based on arguments:
|
||||||
|
+# -t <secs> : maximum # of seconds the script can run; else we fail.
|
||||||
|
+# Default is 4 seconds.
|
||||||
|
+# -e <word> : echo <word> to stdout
|
||||||
|
+# -f <word> : echo <word> to stdout AND create an (empty) file named <word>
|
||||||
|
+# -w <word> : wait for a file named <word> to exist
|
||||||
|
+
|
||||||
|
+# Force flush
|
||||||
|
+$| = 1;
|
||||||
|
+
|
||||||
|
+my $timeout = 4;
|
||||||
|
+
|
||||||
|
+sub op {
|
||||||
|
+ my ($op, $nm) = @_;
|
||||||
|
+
|
||||||
|
+ defined $nm or die "Missing value for $op\n";
|
||||||
|
+
|
||||||
|
+ if ($op eq '-e') {
|
||||||
|
+ print "$nm\n";
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ($op eq '-f') {
|
||||||
|
+ print "$nm\n";
|
||||||
|
+ open(my $fh, '>', $nm) or die "$nm: open: $!\n";
|
||||||
|
+ close(my $fh);
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ($op eq '-w') {
|
||||||
|
+ if (-f $nm) {
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ select(undef, undef, undef, 0.1);
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ($op eq '-t') {
|
||||||
|
+ $timeout = $nm;
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ die("Invalid command: $op $nm\n");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+my $start = time();
|
||||||
|
+while (@ARGV) {
|
||||||
|
+ if (op($ARGV[0], $ARGV[1])) {
|
||||||
|
+ shift;
|
||||||
|
+ shift;
|
||||||
|
+ }
|
||||||
|
+ if ($start + $timeout < time()) {
|
||||||
|
+ die("Timeout after ".(time()-$start-1)." seconds\n");
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+exit(0);
|
||||||
|
diff -rupN a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver
|
||||||
|
--- a/tests/scripts/features/jobserver 2016-04-09 19:07:29.000000000 -0400
|
||||||
|
+++ b/tests/scripts/features/jobserver 2021-10-18 15:30:43.585608880 -0400
|
||||||
|
@@ -42,7 +42,7 @@ recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE
|
||||||
|
recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all
|
||||||
|
all:;@echo $@: "/$(SHOW)/"
|
||||||
|
!,
|
||||||
|
- "-j2 $np", "recurse: /-j2 --jobserver-auth=<auth> $np/\n#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nrecurse2: /-j3 --jobserver-auth=<auth> $np/\nall: /-j3 --jobserver-auth=<auth> $np/\n");
|
||||||
|
+ "-j2 $np", "recurse: /-j2 --jobserver-auth=<auth> $np/\n#MAKE#[1]: warning: -j3 forced in submake: resetting jobserver mode.\nrecurse2: /-j3 --jobserver-auth=<auth> $np/\nall: /-j3 --jobserver-auth=<auth> $np/\n");
|
||||||
|
delete $extraENV{MAKEFLAGS};
|
||||||
|
|
||||||
|
# Test override of -jN with -j
|
||||||
|
@@ -52,7 +52,7 @@ recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE
|
||||||
|
recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all
|
||||||
|
all:;@echo $@: "/$(SHOW)/"
|
||||||
|
!,
|
||||||
|
- "-j2 $np", "recurse: /-j2 --jobserver-auth=<auth> $np/\n#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nrecurse2: /-j $np/\nall: /-j $np/\n");
|
||||||
|
+ "-j2 $np", "recurse: /-j2 --jobserver-auth=<auth> $np/\n#MAKE#[1]: warning: -j0 forced in submake: resetting jobserver mode.\nrecurse2: /-j $np/\nall: /-j $np/\n");
|
||||||
|
|
||||||
|
# Don't put --jobserver-auth into a re-exec'd MAKEFLAGS.
|
||||||
|
# We can't test this directly because there's no way a makefile can
|
||||||
|
@@ -76,7 +76,7 @@ inc.mk:
|
||||||
|
# @echo 'MAKEFLAGS = $(MAKEFLAGS)'
|
||||||
|
@echo 'FOO = bar' > $@
|
||||||
|
!,
|
||||||
|
- "$np -j2", "#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nall\n");
|
||||||
|
+ "$np -j2", "#MAKE#[1]: warning: -j2 forced in submake: resetting jobserver mode.\nall\n");
|
||||||
|
|
||||||
|
unlink('inc.mk');
|
||||||
|
|
||||||
|
diff -rupN a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync
|
||||||
|
--- a/tests/scripts/features/output-sync 2016-04-23 10:09:35.000000000 -0400
|
||||||
|
+++ b/tests/scripts/features/output-sync 2021-10-18 15:31:40.903857757 -0400
|
||||||
|
@@ -45,7 +45,7 @@ sub output_sync_clean {
|
||||||
|
# reliable. If things are too fast, then sometimes a different job will steal
|
||||||
|
# the output sync lock and the output is mis-ordered from what we expect.
|
||||||
|
sub output_sync_wait {
|
||||||
|
- return "while [ ! -f ../mksync.$_[0] ]; do :; done; rm -f ../mksync.$_[0].wait; $sleep_command 1";
|
||||||
|
+ return "while [ ! -f ../mksync.$_[0] ]; do :; done; $sleep_command 1";
|
||||||
|
}
|
||||||
|
sub output_sync_set {
|
||||||
|
return "date > ../mksync.$_[0]";
|
||||||
|
diff -rupN a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism
|
||||||
|
--- a/tests/scripts/features/parallelism 2016-04-11 07:50:44.000000000 -0400
|
||||||
|
+++ b/tests/scripts/features/parallelism 2021-10-18 17:12:39.005009030 -0400
|
||||||
|
@@ -1,17 +1,7 @@
|
||||||
|
# -*-perl-*-
|
||||||
|
|
||||||
|
$description = "Test parallelism (-j) option.";
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-$details = "This test creates a makefile with two double-colon default
|
||||||
|
-rules. The first rule has a series of sleep and echo commands
|
||||||
|
-intended to run in series. The second and third have just an
|
||||||
|
-echo statement. When make is called in this test, it is given
|
||||||
|
-the -j option with a value of 4. This tells make that it may
|
||||||
|
-start up to four jobs simultaneously. In this case, since the
|
||||||
|
-first command is a sleep command, the output of the second
|
||||||
|
-and third commands will appear before the first if indeed
|
||||||
|
-make is running all of these commands in parallel.";
|
||||||
|
+$details = "";
|
||||||
|
|
||||||
|
if (!$parallel_jobs) {
|
||||||
|
return -1;
|
||||||
|
@@ -24,13 +14,36 @@ else {
|
||||||
|
$sleep_command = "sleep";
|
||||||
|
}
|
||||||
|
|
||||||
|
+rmfiles(qw(ONE TWO THREE FOUR));
|
||||||
|
|
||||||
|
run_make_test("
|
||||||
|
all : def_1 def_2 def_3
|
||||||
|
-def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO
|
||||||
|
-def_2 : ; \@$sleep_command 2 ; echo THREE
|
||||||
|
-def_3 : ; \@$sleep_command 1 ; echo FOUR",
|
||||||
|
+def_1 : ; \@#PERL# jhelp.pl -f ONE -w THREE -e TWO
|
||||||
|
+def_2 : ; \@#PERL# jhelp.pl -w FOUR -f THREE
|
||||||
|
+def_3 : ; \@#PERL# jhelp.pl -w ONE -f FOUR",
|
||||||
|
'-j4', "ONE\nFOUR\nTHREE\nTWO");
|
||||||
|
+rmfiles(qw(ONE TWO THREE FOUR));
|
||||||
|
+
|
||||||
|
+# Verify -j added to MAKEFLAGS in the makefile
|
||||||
|
+run_make_test("
|
||||||
|
+MAKEFLAGS += -j4
|
||||||
|
+all : def_1 def_2 def_3
|
||||||
|
+def_1 : ; \@#PERL# jhelp.pl -f ONE -w THREE -e TWO
|
||||||
|
+def_2 : ; \@#PERL# jhelp.pl -w FOUR -f THREE
|
||||||
|
+def_3 : ; \@#PERL# jhelp.pl -w ONE -f FOUR",
|
||||||
|
+ '', "ONE\nFOUR\nTHREE\nTWO");
|
||||||
|
+rmfiles(qw(ONE TWO THREE FOUR));
|
||||||
|
+
|
||||||
|
+# Command line should take precedence
|
||||||
|
+rmfiles(qw(ONE TWO THREE FOUR));
|
||||||
|
+run_make_test("
|
||||||
|
+MAKEFLAGS += -j2
|
||||||
|
+all : def_1 def_2 def_3
|
||||||
|
+def_1 : ; \@#PERL# jhelp.pl -f ONE -w THREE -e TWO
|
||||||
|
+def_2 : ; \@#PERL# jhelp.pl -w FOUR -f THREE
|
||||||
|
+def_3 : ; \@#PERL# jhelp.pl -w ONE -f FOUR",
|
||||||
|
+ '-j4', "ONE\nFOUR\nTHREE\nTWO");
|
||||||
|
+rmfiles(qw(ONE TWO THREE FOUR));
|
||||||
|
|
||||||
|
# Test parallelism with included files. Here we sleep/echo while
|
||||||
|
# building the included files, to test that they are being built in
|
||||||
|
@@ -38,12 +51,12 @@ def_3 : ; \@$sleep_command 1 ; echo FOUR
|
||||||
|
run_make_test("
|
||||||
|
all: 1 2; \@echo success
|
||||||
|
-include 1.inc 2.inc
|
||||||
|
-1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 2; echo TWO' > \$\@
|
||||||
|
-2.inc: ; \@$sleep_command 1; echo THREE.inc; echo '2: ; \@$sleep_command 1; echo THREE' > \$\@",
|
||||||
|
+1.inc: ; \@#PERL# jhelp.pl -f ONE.inc -w THREE.inc -f TWO.inc; echo '1: ; \@#PERL# jhelp.pl -f ONE -w THREE -f TWO' > \$\@
|
||||||
|
+2.inc: ; \@#PERL# jhelp.pl -w ONE.inc -f THREE.inc; echo '2: ; \@#PERL# jhelp.pl -w ONE -f THREE' > \$\@",
|
||||||
|
"-j4",
|
||||||
|
"ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n", 0, 7);
|
||||||
|
|
||||||
|
-rmfiles(qw(1.inc 2.inc));
|
||||||
|
+rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc));
|
||||||
|
|
||||||
|
|
||||||
|
# Test parallelism with included files--this time recurse first and make
|
||||||
|
@@ -57,12 +70,12 @@ ifeq (\$(INC),yes)
|
||||||
|
-include 1.inc 2.inc
|
||||||
|
endif
|
||||||
|
|
||||||
|
-1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 2; echo TWO' > \$\@
|
||||||
|
-2.inc: ; \@$sleep_command 1; echo THREE.inc; echo '2: ; \@$sleep_command 1; echo THREE' > \$\@",
|
||||||
|
+1.inc: ; \@#PERL# jhelp.pl -f ONE.inc -w THREE.inc -f TWO.inc; echo '1: ; \@#PERL# jhelp.pl -f ONE -w THREE -f TWO' > \$\@
|
||||||
|
+2.inc: ; \@#PERL# jhelp.pl -w ONE.inc -f THREE.inc; echo '2: ; \@#PERL# jhelp.pl -w ONE -f THREE' > \$\@",
|
||||||
|
"-j4",
|
||||||
|
"ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n", 0, 7);
|
||||||
|
|
||||||
|
-rmfiles(qw(1.inc 2.inc));
|
||||||
|
+rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc));
|
||||||
|
|
||||||
|
# Grant Taylor reports a problem where tokens can be lost (not written back
|
||||||
|
# to the pipe when they should be): this happened when there is a $(shell ...)
|
||||||
|
@@ -90,21 +103,23 @@ run_make_test("
|
||||||
|
.PHONY: all fail.1 fail.2 fail.3 ok
|
||||||
|
all: fail.1 ok fail.2 fail.3
|
||||||
|
|
||||||
|
+.RECIPEPREFIX := >
|
||||||
|
+
|
||||||
|
fail.1 fail.2 fail.3:
|
||||||
|
- \@$sleep_command \$(patsubst fail.%,%,\$\@)
|
||||||
|
- \@echo Fail
|
||||||
|
- \@exit 1
|
||||||
|
+> \@$sleep_command \$(patsubst fail.%,%,\$\@)
|
||||||
|
+> \@echo Fail
|
||||||
|
+> \@exit 1
|
||||||
|
|
||||||
|
ok:
|
||||||
|
- \@$sleep_command 4
|
||||||
|
- \@echo Ok done",
|
||||||
|
+> \@$sleep_command 4
|
||||||
|
+> \@echo Ok done",
|
||||||
|
'-rR -j5', "Fail
|
||||||
|
-#MAKE#: *** [#MAKEFILE#:8: fail.1] Error 1
|
||||||
|
+#MAKE#: *** [#MAKEFILE#:10: fail.1] Error 1
|
||||||
|
#MAKE#: *** Waiting for unfinished jobs....
|
||||||
|
Fail
|
||||||
|
-#MAKE#: *** [#MAKEFILE#:8: fail.2] Error 1
|
||||||
|
+#MAKE#: *** [#MAKEFILE#:10: fail.2] Error 1
|
||||||
|
Fail
|
||||||
|
-#MAKE#: *** [#MAKEFILE#:8: fail.3] Error 1
|
||||||
|
+#MAKE#: *** [#MAKEFILE#:10: fail.3] Error 1
|
||||||
|
Ok done",
|
||||||
|
512);
|
||||||
|
|
||||||
|
@@ -117,13 +132,11 @@ all:; @:
|
||||||
|
|
||||||
|
-include foo.d
|
||||||
|
|
||||||
|
-foo.d: comp
|
||||||
|
- @echo building $@
|
||||||
|
+foo.d: comp ; @echo building $@
|
||||||
|
|
||||||
|
comp: mod_a.o mod_b.o; @:
|
||||||
|
|
||||||
|
-mod_a.o mod_b.o:
|
||||||
|
- @exit 1
|
||||||
|
+mod_a.o mod_b.o: ; @exit 1
|
||||||
|
', '-j2', '');
|
||||||
|
|
||||||
|
|
||||||
|
@@ -148,15 +161,15 @@ $extraENV{MAKEFLAGS} = '-j4';
|
||||||
|
run_make_test(q!
|
||||||
|
things = thing1 thing2
|
||||||
|
all: $(things)
|
||||||
|
-thing1:; @sleep 1; echo '$@ start'; sleep 2; echo '$@ end'
|
||||||
|
-thing2:; @echo '$@ start'; sleep 2; echo '$@ end'
|
||||||
|
+thing1:; @#PERL# jhelp.pl -w thing2start -f $@start -w thing2end -e $@end
|
||||||
|
+thing2:; @#PERL# jhelp.pl -f $@start -w thing1start -f $@end
|
||||||
|
-include inc.mk
|
||||||
|
inc.mk: ; @touch $@
|
||||||
|
!,
|
||||||
|
- '', "thing2 start\nthing1 start\nthing2 end\nthing1 end\n");
|
||||||
|
+ '', "thing2start\nthing1start\nthing2end\nthing1end\n");
|
||||||
|
|
||||||
|
delete $extraENV{MAKEFLAGS};
|
||||||
|
-rmfiles('inc.mk');
|
||||||
|
+rmfiles(qw(inc.mk thing1start thing1end thing2start thing2end));
|
||||||
|
|
||||||
|
# Ensure intermediate/secondary files are not pruned incorrectly.
|
||||||
|
# See Savannah bug #30653
|
||||||
|
@@ -211,7 +224,3 @@ rmfiles('file1', 'file2', 'file3', 'file
|
||||||
|
# rmfiles(qw(dependfile output));
|
||||||
|
|
||||||
|
1;
|
||||||
|
-
|
||||||
|
-### Local Variables:
|
||||||
|
-### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
|
||||||
|
-### End:
|
@ -0,0 +1,164 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
|
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
|
@ -0,0 +1,27 @@
|
|||||||
|
diff -Nrup a/tests/run_make_tests.pl b/tests/run_make_tests.pl
|
||||||
|
--- a/tests/run_make_tests.pl 2016-04-04 01:38:37.000000000 -0400
|
||||||
|
+++ b/tests/run_make_tests.pl 2018-03-19 00:46:11.329131847 -0400
|
||||||
|
@@ -58,8 +58,8 @@ if ($^O eq 'VMS')
|
||||||
|
*CORE::GLOBAL::rmdir = \&vms_rmdir;
|
||||||
|
}
|
||||||
|
|
||||||
|
-require "test_driver.pl";
|
||||||
|
-require "config-flags.pm";
|
||||||
|
+require "./test_driver.pl";
|
||||||
|
+require "./config-flags.pm";
|
||||||
|
|
||||||
|
# Some target systems might not have the POSIX module...
|
||||||
|
$has_POSIX = eval { require "POSIX.pm" };
|
||||||
|
diff -Nrup a/tests/test_driver.pl b/tests/test_driver.pl
|
||||||
|
--- a/tests/test_driver.pl 2018-03-19 00:41:11.982406829 -0400
|
||||||
|
+++ b/tests/test_driver.pl 2018-03-19 00:54:12.484794671 -0400
|
||||||
|
@@ -165,7 +165,7 @@ sub toplevel
|
||||||
|
$detail = 0; # detailed verbosity
|
||||||
|
$keep = 0; # keep temp files around
|
||||||
|
$workdir = "work"; # The directory where the test will start running
|
||||||
|
- $scriptdir = "scripts"; # The directory where we find the test scripts
|
||||||
|
+ $scriptdir = "./scripts"; # The directory where we find the test scripts
|
||||||
|
$tmpfilesuffix = "t"; # the suffix used on tmpfiles
|
||||||
|
$default_output_stack_level = 0; # used by attach_default_output, etc.
|
||||||
|
$default_input_stack_level = 0; # used by attach_default_input, etc.
|
||||||
|
|
@ -0,0 +1,519 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
Summary: A GNU tool which simplifies the build process for users
|
||||||
|
Name: make
|
||||||
|
Epoch: 1
|
||||||
|
Version: 4.2.1
|
||||||
|
Release: 11%{?dist}
|
||||||
|
License: GPLv3+
|
||||||
|
Group: Development/Tools
|
||||||
|
URL: http://www.gnu.org/software/make/
|
||||||
|
Source: ftp://ftp.gnu.org/gnu/make/make-%{version}.tar.bz2
|
||||||
|
|
||||||
|
Patch0: make-4.2-getcwd.patch
|
||||||
|
Patch1: make-4.0-newlines.patch
|
||||||
|
|
||||||
|
# Assume we don't have clock_gettime in configure, so that
|
||||||
|
# make is not linked against -lpthread (and thus does not
|
||||||
|
# limit stack to 2MB).
|
||||||
|
Patch2: make-4.0-noclock_gettime.patch
|
||||||
|
|
||||||
|
# BZs #142691, #17374
|
||||||
|
Patch3: make-4.2-j8k.patch
|
||||||
|
|
||||||
|
# Upstream: https://savannah.gnu.org/bugs/?30748
|
||||||
|
# The default value of .SHELL_FLAGS is -c.
|
||||||
|
Patch4: make-4.0-weird-shell.patch
|
||||||
|
|
||||||
|
# Upstream patch: https://git.savannah.gnu.org/cgit/make.git/patch/?id=193f1e81edd6b1b56b0eb0ff8aa4b41c7b4257b4
|
||||||
|
# Fixes wrong assumptions of glibc's glob internals.
|
||||||
|
Patch5: make-4.2.1-glob-fix-2.patch
|
||||||
|
# Upstream patch: https://git.savannah.gnu.org/cgit/make.git/patch/?id=48c8a116a914a325a0497721f5d8b58d5bba34d4
|
||||||
|
# Fixes incorrect use of glibc 2.27 glob internals.
|
||||||
|
Patch6: make-4.2.1-glob-fix.patch
|
||||||
|
Patch7: make-4.2.1-glob-fix-3.patch
|
||||||
|
|
||||||
|
# Perl 5.26 is removed the implicit CWD in @INC.
|
||||||
|
# Provide relative path. Also provide better error for missing tests.
|
||||||
|
Patch8: make-4.2.1-test-driver.patch
|
||||||
|
|
||||||
|
# Upstream patch: https://git.savannah.gnu.org/cgit/make.git/commit/?id=b552b05251980f693c729e251f93f5225b400714
|
||||||
|
# Avoids hangs in parallel builds
|
||||||
|
Patch9: make-4.2.1-nonblocking-reads.patch
|
||||||
|
|
||||||
|
# Upstream patch: https://git.savannah.gnu.org/cgit/make.git/commit/?id=0c5a9f9b92af1634dc60fa21e9ac86ed50e5d595
|
||||||
|
# BZ 2004246 - allow setting -j within the Makefile
|
||||||
|
Patch10: make-4.2.1-jvar.patch
|
||||||
|
|
||||||
|
# Unfortunately the glob patches configure.ac, so:
|
||||||
|
BuildRequires: autoconf, automake
|
||||||
|
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
|
Requires(post): /sbin/install-info
|
||||||
|
Requires(preun): /sbin/install-info
|
||||||
|
BuildRequires: procps
|
||||||
|
BuildRequires: perl-interpreter
|
||||||
|
|
||||||
|
%description
|
||||||
|
A GNU tool for controlling the generation of executables and other
|
||||||
|
non-source files of a program from the program's source files. Make
|
||||||
|
allows users to build and install packages without any significant
|
||||||
|
knowledge about the details of the build process. The details about
|
||||||
|
how the program should be built are provided for make in the program's
|
||||||
|
makefile.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Header file for externally visible definitions
|
||||||
|
Group: Development/Libraries
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
The make-devel package contains gnumake.h.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1
|
||||||
|
|
||||||
|
rm -f tests/scripts/features/parallelism.orig
|
||||||
|
|
||||||
|
%build
|
||||||
|
# Since we made a change to configure.ac (and configure) touch
|
||||||
|
# the files to avoid rebuild problems with automake versioning.
|
||||||
|
# Specifically make expects 1.15 but some systems use 1.16.1.
|
||||||
|
touch `find . -name configure`
|
||||||
|
touch `find . -name aclocal.m4`
|
||||||
|
touch `find . -name Makefile.in`
|
||||||
|
|
||||||
|
%configure
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
%install
|
||||||
|
rm -rf ${RPM_BUILD_ROOT}
|
||||||
|
make DESTDIR=$RPM_BUILD_ROOT install
|
||||||
|
ln -sf make ${RPM_BUILD_ROOT}/%{_bindir}/gmake
|
||||||
|
ln -sf make.1 ${RPM_BUILD_ROOT}/%{_mandir}/man1/gmake.1
|
||||||
|
rm -f ${RPM_BUILD_ROOT}/%{_infodir}/dir
|
||||||
|
|
||||||
|
%find_lang %name
|
||||||
|
|
||||||
|
%check
|
||||||
|
echo ============TESTING===============
|
||||||
|
/usr/bin/env LANG=C make -k check && true
|
||||||
|
echo ============END TESTING===========
|
||||||
|
|
||||||
|
%clean
|
||||||
|
rm -rf ${RPM_BUILD_ROOT}
|
||||||
|
|
||||||
|
%post
|
||||||
|
if [ -f %{_infodir}/make.info.gz ]; then # for --excludedocs
|
||||||
|
/sbin/install-info %{_infodir}/make.info.gz %{_infodir}/dir --entry="* Make: (make). The GNU make utility." || :
|
||||||
|
fi
|
||||||
|
|
||||||
|
%preun
|
||||||
|
if [ $1 = 0 ]; then
|
||||||
|
if [ -f %{_infodir}/make.info.gz ]; then # for --excludedocs
|
||||||
|
/sbin/install-info --delete %{_infodir}/make.info.gz %{_infodir}/dir --entry="* Make: (make). The GNU make utility." || :
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
%files -f %{name}.lang
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%license COPYING
|
||||||
|
%doc NEWS README AUTHORS
|
||||||
|
%{_bindir}/*
|
||||||
|
%{_mandir}/man*/*
|
||||||
|
%{_infodir}/*.info*
|
||||||
|
%{_includedir}/gnumake.h
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_includedir}/gnumake.h
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon Oct 18 2021 DJ Delorie <dj@redhat.com> - 1:4.2.1-11
|
||||||
|
- Allow -j in MAKEFLAGS. BZ #2004246
|
||||||
|
|
||||||
|
* Fri Dec 20 2019 DJ Delorie <dj@redhat.com> - 1:4.2.1-10
|
||||||
|
- Use a non-blocking read with pselect to avoid hangs. BZ #1774790
|
||||||
|
|
||||||
|
* Fri Sep 28 2018 Patsy Griffin Franklin <pfrankli@redhat.com> 1:4.2.1-9
|
||||||
|
- Add -k to make check to insure that all tests are run even if failures
|
||||||
|
occur.
|
||||||
|
|
||||||
|
* Fri Jul 20 2018 Patsy Griffin Franklin <pfrankli@redhat.com> 1:4.2.1-8
|
||||||
|
- Do not enable Guile support. (#1569105)
|
||||||
|
|
||||||
|
* Mon Jun 11 2018 Patsy Griffin Franklin <pfrankli@redhat.com> 1:4.2.1-7
|
||||||
|
- Fix build failure caused by automake versioning differences related
|
||||||
|
to the glob changes. (#1589769)
|
||||||
|
- Fix testing failure due to Perl changes related to expanding paths.
|
||||||
|
|
||||||
|
* Fri Feb 02 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1:4.2.1-6
|
||||||
|
- Fix wrong assumptions of glibc's glob internals
|
||||||
|
|
||||||
|
* Thu Feb 01 2018 Richard W.M. Jones <rjones@redhat.com> - 1:4.2.1-5
|
||||||
|
- Add upstream patch to fix incorrect use of glibc 2.27 glob internals.
|
||||||
|
|
||||||
|
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.2.1-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.2.1-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Feb 01 2017 Stephen Gallagher <sgallagh@redhat.com> - 4.2.1-2
|
||||||
|
- Add missing %%license macro
|
||||||
|
|
||||||
|
* Sun Sep 25 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.2.1-1
|
||||||
|
- Rebase to make-4.2.1. Remove obsolete patches. BZ #1338558
|
||||||
|
|
||||||
|
* Sun Sep 25 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.1-6
|
||||||
|
- Make test suite requires Perl to run.
|
||||||
|
|
||||||
|
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.1-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Nov 4 2015 Patsy Franklin <pfrankli@redhat.com> 1:4.1-4
|
||||||
|
- Handle NULL returns from ttyname() Upstream Bug 43434.
|
||||||
|
Resolves: #1277968
|
||||||
|
|
||||||
|
* Thu Oct 29 2015 Patsy Franklin <pfrankli@redhat.com> 1:4.1-3
|
||||||
|
- Enable Guile support.
|
||||||
|
|
||||||
|
* Thu Oct 29 2015 Patsy Franklin <pfrankli@redhat.com> 1:4.1-2
|
||||||
|
- Include patches dropped in last update as they fix reported bugs and
|
||||||
|
update the spec file to include more info on the patches.
|
||||||
|
|
||||||
|
* Sat Oct 24 2015 Zbigniew Jędrzejewski-Szmek <zbyszek@laptop> - 1:4.1-1
|
||||||
|
- Update to latest version
|
||||||
|
|
||||||
|
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:4.0-5.1
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 1:4.0-4.1
|
||||||
|
- Rebuilt for Fedora 23 Change
|
||||||
|
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
|
||||||
|
|
||||||
|
* Wed Sep 03 2014 Kyle McMartin <kyle@fedoraproject.org> - 1:4.0-3.1
|
||||||
|
- Pass the test-suite unconditionally until I fix the tests to cope with
|
||||||
|
deterministic ar archives (which result in expected rebuilds not occuring)
|
||||||
|
|
||||||
|
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:4.0-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:4.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Apr 30 2014 Patsy Franklin <pfrankli@redhat.com> 1:4.0-1
|
||||||
|
- Rebase to make-4.0
|
||||||
|
- Created make-devel sub-package to handle new dependency on gnumake.h.
|
||||||
|
|
||||||
|
* Thu Aug 22 2013 Petr Machata <pmachata@redhat.com> - 1:3.82-19
|
||||||
|
- make now restores rlimit to its original values before launching
|
||||||
|
subprocess via $(shell) (make-3.82-func_shell-rlimit.patch)
|
||||||
|
- Determinize one test (make-3.82-tests-SECONDARY.patch)
|
||||||
|
|
||||||
|
* Fri Jul 26 2013 Petr Machata <pmachata@redhat.com> - 1:3.82-18
|
||||||
|
- Backport upstream patch that adds wildcard expansion to pattern
|
||||||
|
rules. (make-3.82-stem_glob.patch)
|
||||||
|
|
||||||
|
* Wed Jun 19 2013 Petr Machata <pmachata@redhat.com> - 1:3.82-17
|
||||||
|
- Add another fix for upstream bug 30612
|
||||||
|
|
||||||
|
* Thu Apr 4 2013 Petr Machata <pmachata@redhat.com> - 1:3.82-16
|
||||||
|
- Update config.sub and config.guess to support aarch64
|
||||||
|
|
||||||
|
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.82-15
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Nov 29 2012 Petr Machata <pmachata@redhat.com> - 1:3.82-14
|
||||||
|
- Drop patch5, which hasn't been applied for years
|
||||||
|
|
||||||
|
* Mon Sep 10 2012 Petr Machata <pmachata@redhat.com> - 1:3.82-13
|
||||||
|
- Add fix for upstream bug 30653
|
||||||
|
- Resolves: #835424
|
||||||
|
|
||||||
|
* Fri Jul 27 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.82-12
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Mar 13 2012 Petr Machata <pmachata@redhat.com> - 1:3.82-11
|
||||||
|
- Add a patch for avoiding glob if possible by Michael Meeks
|
||||||
|
|
||||||
|
* Mon Mar 12 2012 Petr Machata <pmachata@redhat.com> - 1:3.82-10
|
||||||
|
- Apply the following patches, proposed upstream by Norbert Thiebaud:
|
||||||
|
- A patch for warning on call of undefined function
|
||||||
|
- A patch for tracing calls to "eval" and "call"
|
||||||
|
|
||||||
|
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.82-9
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Nov 3 2011 Petr Machata <pmachata@redhat.com> - 1:3.82-8
|
||||||
|
- Add a patch for preserving -j across Makefile rebuild
|
||||||
|
- Resolves: #698702
|
||||||
|
|
||||||
|
* Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.82-7
|
||||||
|
- Rebuilt for glibc bug#747377
|
||||||
|
|
||||||
|
* Thu May 12 2011 Lubomir Rintel <lkundrak@v3.sk> - 1:3.82-6
|
||||||
|
- Fix free-after-use with nested assignments (#703104)
|
||||||
|
|
||||||
|
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.82-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Oct 27 2010 Petr Machata <pmachata@redhat.com> - 1:3.82-4
|
||||||
|
- Fix a discrepancy between behavior of find_next_token and
|
||||||
|
pre-allocation of token memory in func_sort.
|
||||||
|
- Resolves: #643359
|
||||||
|
|
||||||
|
* Wed Sep 29 2010 jkeating - 1:3.82-3
|
||||||
|
- Rebuilt for gcc bug 634757
|
||||||
|
|
||||||
|
* Mon Sep 13 2010 Petr Machata <pmachata@redhat.com> - 1:3.82-2
|
||||||
|
- Add upstream fixes for upstream bugs 30612 and 30723
|
||||||
|
- Resolves: #631552
|
||||||
|
|
||||||
|
* Wed Aug 11 2010 Petr Machata <pmachata@redhat.com> - 1:3.82-1
|
||||||
|
- Upstream 3.82:
|
||||||
|
- Drop rlimit, fdleak, strcpy-overlap, recursion-test, double-free
|
||||||
|
patches, make supports this functionality now
|
||||||
|
- Disable the memory patch for the time being
|
||||||
|
- Port remaining patches
|
||||||
|
- Add weird-shell patch, upstream bug 30748
|
||||||
|
- Resolves: #618998
|
||||||
|
|
||||||
|
* Wed Aug 11 2010 Petr Machata <pmachata@redhat.com> - 1:3.81-21
|
||||||
|
- Add BR procps
|
||||||
|
- Resolves: #616813
|
||||||
|
|
||||||
|
* Thu Jul 1 2010 Petr Machata <pmachata@redhat.com> - 1:3.81-20
|
||||||
|
- Add a patch by Steve Kemp @debian that might fix the double free
|
||||||
|
problem.
|
||||||
|
- Related: #609806
|
||||||
|
|
||||||
|
* Fri Jun 4 2010 Petr Machata <pmachata@redhat.com> - 1:3.81-19
|
||||||
|
- Fix testsuite on F13
|
||||||
|
- Resolves: #600004
|
||||||
|
|
||||||
|
* Tue Aug 11 2009 Petr Machata <pmachata@redhat.com> - 1:3.81-18
|
||||||
|
- Fix installation with --excludedocs
|
||||||
|
- Resolves: #515917
|
||||||
|
|
||||||
|
* Fri Jul 31 2009 Petr Machata <pmachata@redhat.com> - 1:3.81-17
|
||||||
|
- Replace the use of strcpy on overlapping areas with memmove
|
||||||
|
- Resolves: #514721
|
||||||
|
|
||||||
|
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.81-16
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.81-15
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Sep 22 2008 Petr Machata <pmachata@redhat.com> - 1:3.81-14
|
||||||
|
- Fix patches to apply cleanly with fuzz=0
|
||||||
|
|
||||||
|
* Tue Sep 16 2008 Petr Machata <pmachata@redhat.com> - 1:3.81-13
|
||||||
|
- Mark opened files as cloexec to prevent their leaking through fork
|
||||||
|
- Resolves: #462090
|
||||||
|
|
||||||
|
* Tue Mar 25 2008 Petr Machata <pmachata@redhat.com> - 1:3.81-12
|
||||||
|
- Fix the rlimit patch. The success flag is kept in memory shared
|
||||||
|
with parent process after vfork, and so cannot be reset.
|
||||||
|
- Related: #214033
|
||||||
|
|
||||||
|
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1:3.81-11
|
||||||
|
- Autorebuild for GCC 4.3
|
||||||
|
|
||||||
|
* Thu Oct 4 2007 Petr Machata <pmachata@redhat.com> - 1:3.81-10
|
||||||
|
- Fix parallel builds with reexec.
|
||||||
|
- Related: #212111, #211290
|
||||||
|
|
||||||
|
* Thu Oct 4 2007 Petr Machata <pmachata@redhat.com> - 1:3.81-8
|
||||||
|
- Cleaned up per merge review.
|
||||||
|
- Related: #226120
|
||||||
|
|
||||||
|
* Thu Aug 16 2007 Petr Machata <pmachata@redhat.com> - 1:3.81-7
|
||||||
|
- Fix licensing tag.
|
||||||
|
|
||||||
|
* Fri Mar 16 2007 Petr Machata <pmachata@redhat.com> - 1:3.81-6
|
||||||
|
- Always run testsuite with C locale.
|
||||||
|
- Resolves: #232607
|
||||||
|
|
||||||
|
* Thu Feb 22 2007 Petr Machata <pmachata@redhat.com> - 1:3.81-5
|
||||||
|
- Fix newline handling for quoted SHELL.
|
||||||
|
- Resolves: #219409
|
||||||
|
|
||||||
|
* Fri Feb 2 2007 Petr Machata <pmachata@redhat.com> - 1:3.81-4
|
||||||
|
- Tidy up the specfile per rpmlint comments
|
||||||
|
- Use utf-8 and fix national characters in contributor's names
|
||||||
|
|
||||||
|
* Thu Jan 25 2007 Petr Machata <pmachata@redhat.com> - 1:3.81-3
|
||||||
|
- Ville Skyttä: patch for non-failing %%post, %%preun
|
||||||
|
- Resolves: #223709
|
||||||
|
|
||||||
|
* Thu Jan 25 2007 Petr Machata <pmachata@redhat.com> - 1:3.81-2
|
||||||
|
- make now restores rlimit to its original values before launching
|
||||||
|
subprocess (#214033)
|
||||||
|
|
||||||
|
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 1:3.81-1.1
|
||||||
|
- rebuild
|
||||||
|
|
||||||
|
* Tue May 23 2006 Petr Machata <pmachata@redhat.com> - 1:3.81-1
|
||||||
|
- Upstream 3.81:
|
||||||
|
- Contains several backwards incompatible changes. See NEWS inside
|
||||||
|
the source package to find out more.
|
||||||
|
- memory patch and error reporting patch were ported to this version.
|
||||||
|
|
||||||
|
* Wed Mar 15 2006 Petr Machata <pmachata@redhat.com> 1:3.80-11
|
||||||
|
- Applied (five years old) patch from Jonathan Kamens to allow make to
|
||||||
|
handle several pattern-specific variables (#52962).
|
||||||
|
|
||||||
|
The patch was changed so that it forces make to process pattern
|
||||||
|
specific variables in the same order as they appear in file.
|
||||||
|
(Upstream make behaves this way, too.) This is change from old make
|
||||||
|
behavior, which processed the variables in reverse order. In case
|
||||||
|
you used only x=a assignments, this had the effect of using the
|
||||||
|
first pattern specific variable that matched. For x+=a this just
|
||||||
|
doesn't work, and it produces absolutely nonintuitive results.
|
||||||
|
|
||||||
|
- (It would be great if make's target-specific variables were handled
|
||||||
|
the same way as pattern-specific ones, just without the pattern
|
||||||
|
component. However current handling is documented and considered a
|
||||||
|
feature.)
|
||||||
|
|
||||||
|
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 1:3.80-10.2
|
||||||
|
- bump again for double-long bug on ppc(64)
|
||||||
|
|
||||||
|
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 1:3.80-10.1
|
||||||
|
- rebuilt for new gcc4.1 snapshot and glibc changes
|
||||||
|
|
||||||
|
* Thu Feb 02 2006 Petr Machata <pmachata@redhat.com> 3.80-10
|
||||||
|
- H.J. Lu caught a typo in the patch and provided a new one. (#175376)
|
||||||
|
|
||||||
|
* Mon Jan 09 2006 Petr Machata <pmachata@redhat.com> 3.80-9
|
||||||
|
- Applied patch from H.J. Lu. Somehow reduces make's enormous memory
|
||||||
|
consumption. (#175376)
|
||||||
|
|
||||||
|
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Mon Aug 22 2005 Jakub Jelinek <jakub@redhat.com> 3.80-8
|
||||||
|
- make sure errno for error reporting is not lost accross _() calls
|
||||||
|
- report EOF on read pipe differently from read returning < 0 reporting
|
||||||
|
|
||||||
|
* Mon Mar 7 2005 Jakub Jelinek <jakub@redhat.com> 3.80-7
|
||||||
|
- rebuilt with GCC 4
|
||||||
|
|
||||||
|
* Mon Dec 13 2004 Jakub Jelinek <jakub@redhat.com> 3.80-6
|
||||||
|
- refuse -jN where N is bigger than PIPE_BUF (#142691, #17374)
|
||||||
|
|
||||||
|
* Thu Oct 7 2004 Jakub Jelinek <jakub@redhat.com> 3.80-5
|
||||||
|
- add URL rpm tag (#134799)
|
||||||
|
|
||||||
|
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Tue Dec 02 2003 Florian La Roche <Florian.LaRoche@redhat.de>
|
||||||
|
- add important bug-fixes from make home-page
|
||||||
|
|
||||||
|
* Sun Nov 30 2003 Florian La Roche <Florian.LaRoche@redhat.de>
|
||||||
|
- update to 3.80
|
||||||
|
|
||||||
|
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Sun Dec 29 2002 Tim Powers <timp@redhat.com>
|
||||||
|
- fix references to %%install in the changelog so that the package will build
|
||||||
|
|
||||||
|
* Tue Dec 03 2002 Elliot Lee <sopwith@redhat.com> 3.79.1-15
|
||||||
|
- _smp_mflags
|
||||||
|
- Fix ppc build (sys_siglist issues in patch2)
|
||||||
|
|
||||||
|
* Fri Jun 21 2002 Tim Powers <timp@redhat.com>
|
||||||
|
- automated rebuild
|
||||||
|
|
||||||
|
* Thu May 23 2002 Tim Powers <timp@redhat.com>
|
||||||
|
- automated rebuild
|
||||||
|
|
||||||
|
* Thu May 23 2002 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
- Run make check during build
|
||||||
|
|
||||||
|
* Thu May 23 2002 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||||
|
- Fix build with current auto* tools
|
||||||
|
|
||||||
|
* Fri Jan 25 2002 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
- rebuilt with gcc 3.1
|
||||||
|
|
||||||
|
* Fri Jul 6 2001 Trond Eivind Glomsrød <teg@redhat.com>
|
||||||
|
- s/Copyright/License/
|
||||||
|
- langify
|
||||||
|
- Make sure it isn't setgid if built as root
|
||||||
|
|
||||||
|
* Sun Jun 24 2001 Elliot Lee <sopwith@redhat.com>
|
||||||
|
- Bump release + rebuild.
|
||||||
|
|
||||||
|
* Mon Aug 7 2000 Tim Waugh <twaugh@redhat.com>
|
||||||
|
- change info-dir entry so that 'info make' works (#15029).
|
||||||
|
|
||||||
|
* Tue Aug 1 2000 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
- assume we don't have clock_gettime in configure, so that
|
||||||
|
make is not linked against -lpthread (and thus does not
|
||||||
|
limit stack to 2MB).
|
||||||
|
|
||||||
|
* Sat Jul 22 2000 Jeff Johnson <jbj@redhat.com>
|
||||||
|
- add locale files (#14362).
|
||||||
|
|
||||||
|
* Wed Jul 12 2000 Prospector <bugzilla@redhat.com>
|
||||||
|
- automatic rebuild
|
||||||
|
|
||||||
|
* Sat Jun 24 2000 Preston Brown <pbrown@redhat.com>
|
||||||
|
- 3.79.1 bugfix release
|
||||||
|
|
||||||
|
* Mon Jun 5 2000 Jeff Johnson <jbj@redhat.com>
|
||||||
|
- FHS packaging.
|
||||||
|
|
||||||
|
* Sun May 7 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||||
|
- Fix build for some odd situations, such as
|
||||||
|
- previously installed make != GNU make
|
||||||
|
- /bin/sh != bash
|
||||||
|
|
||||||
|
* Mon Apr 17 2000 Florian La Roche <Florian.LaRoche@redhat.com>
|
||||||
|
- update to 3.79
|
||||||
|
|
||||||
|
* Thu Feb 24 2000 Cristian Gafton <gafton@redhat.com>
|
||||||
|
- add patch from Andreas Jaeger to fix dtype lookups (for glibc 2.1.3
|
||||||
|
builds)
|
||||||
|
|
||||||
|
* Mon Feb 7 2000 Jeff Johnson <jbj@redhat.com>
|
||||||
|
- compress man page.
|
||||||
|
|
||||||
|
* Fri Jan 21 2000 Cristian Gafton <gafton@redhat.com>
|
||||||
|
- apply patch to fix a /tmp race condition from Thomas Biege
|
||||||
|
- simplify %%install
|
||||||
|
|
||||||
|
* Sat Nov 27 1999 Jeff Johnson <jbj@redhat.com>
|
||||||
|
- update to 3.78.1.
|
||||||
|
|
||||||
|
* Thu Apr 15 1999 Bill Nottingham <notting@redhat.com>
|
||||||
|
- added a serial tag so it upgrades right
|
||||||
|
|
||||||
|
* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com>
|
||||||
|
- auto rebuild in the new build environment (release 5)
|
||||||
|
|
||||||
|
* Wed Sep 16 1998 Cristian Gafton <gafton@redhat.com>
|
||||||
|
- added a patch for large file support in glob
|
||||||
|
|
||||||
|
* Tue Aug 18 1998 Jeff Johnson <jbj@redhat.com>
|
||||||
|
- update to 3.77
|
||||||
|
|
||||||
|
* Mon Apr 27 1998 Prospector System <bugs@redhat.com>
|
||||||
|
- translations modified for de, fr, tr
|
||||||
|
|
||||||
|
* Thu Oct 16 1997 Donnie Barnes <djb@redhat.com>
|
||||||
|
- udpated from 3.75 to 3.76
|
||||||
|
- various spec file cleanups
|
||||||
|
- added install-info support
|
||||||
|
|
||||||
|
* Mon Jun 02 1997 Erik Troan <ewt@redhat.com>
|
||||||
|
- built against glibc
|
Loading…
Reference in new issue