summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cowgill <jcowgill@debian.org>2017-01-31 08:31:57 -0800
committerJames Cowgill <jcowgill@debian.org>2017-01-31 08:31:57 -0800
commit7e887c1d0926b9a7e24be734689715fc7f0a0673 (patch)
treedb65956f6e602b48ddd9dfaf5c1ece17c8bef910
parent103b17157918aca4ae5145892703aa5b0541ebcc (diff)
make-dfsg (4.1-9.1) unstable; urgency=medium
* Non-maintainer upload. * Ensure the stack limit is reset when make re-execs itself. (Closes: #853213) [dgit import package make-dfsg 4.1-9.1]
-rw-r--r--Makefile.am2
-rw-r--r--ar.c33
-rw-r--r--commands.c5
-rw-r--r--configure.ac3
-rw-r--r--debian/Explanations204
-rw-r--r--debian/NEWS.Debian185
-rw-r--r--debian/README.Debian-Source6
-rw-r--r--debian/changelog1175
-rw-r--r--debian/clean52
-rw-r--r--debian/compat1
-rw-r--r--debian/control50
-rw-r--r--debian/copyright45
-rw-r--r--debian/make-first-existing-target205
-rw-r--r--debian/make-first-existing-target.1178
-rw-r--r--debian/make-guile.docs8
-rw-r--r--debian/make-guile.install1
-rw-r--r--debian/make-guile.manpages2
-rw-r--r--debian/make.docs8
-rw-r--r--debian/make.install1
-rw-r--r--debian/make.manpages2
-rwxr-xr-xdebian/rules64
-rw-r--r--debian/source/format1
-rw-r--r--debian/upstream/signing-key.asc172
-rw-r--r--debian/watch5
-rw-r--r--dir.c7
-rw-r--r--job.c73
-rw-r--r--job.h1
-rw-r--r--main.c20
-rw-r--r--make.181
-rw-r--r--makeint.h5
-rw-r--r--remake.c32
-rw-r--r--tests/scripts/features/archives14
-rw-r--r--tests/scripts/misc/fopen-fail2
-rw-r--r--tests/scripts/options/dash-q9
-rw-r--r--tests/scripts/targets/POSIX2
-rw-r--r--tests/test_driver.pl18
36 files changed, 2627 insertions, 45 deletions
diff --git a/Makefile.am b/Makefile.am
index 3d0c321e..eeb4d25e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -59,7 +59,7 @@ endif
man_MANS = make.1
-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" @DEFS@
+DEFS = -DLOCALEDIR=\"$(localedir)\" -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" -DMULTIARCH_DIRS="$(MULTIARCH_DIRS)" @DEFS@
AM_CPPFLAGS = $(GLOBINC)
AM_CFLAGS = $(GUILE_CFLAGS)
diff --git a/ar.c b/ar.c
index 675572a1..d10a8dfa 100644
--- a/ar.c
+++ b/ar.c
@@ -68,25 +68,39 @@ ar_parse_name (const char *name, char **arname_p, char **memname_p)
/* This function is called by 'ar_scan' to find which member to look at. */
+struct member_date_lookup
+{
+ const char *name;
+ time_t *member_date;
+};
+
/* ARGSUSED */
static long int
ar_member_date_1 (int desc UNUSED, const char *mem, int truncated,
long int hdrpos UNUSED, long int datapos UNUSED,
long int size UNUSED, long int date,
int uid UNUSED, int gid UNUSED, int mode UNUSED,
- const void *name)
+ const void *data)
{
- return ar_name_equal (name, mem, truncated) ? date : 0;
+ const struct member_date_lookup *lookup_data = data;
+ if (ar_name_equal (lookup_data->name, mem, truncated))
+ {
+ *lookup_data->member_date = date;
+ return 1;
+ }
+ return 0;
}
-/* Return the modtime of NAME. */
+/* Read the modtime of NAME in MEMBER_DATE.
+ Returns 1 if NAME exists, 0 otherwise. */
-time_t
-ar_member_date (const char *name)
+int
+ar_member_date (const char *name, time_t *member_date)
{
char *arname;
char *memname;
- long int val;
+ int found;
+ struct member_date_lookup lookup_data;
ar_parse_name (name, &arname, &memname);
@@ -107,11 +121,14 @@ ar_member_date (const char *name)
(void) f_mtime (arfile, 0);
}
- val = ar_scan (arname, ar_member_date_1, memname);
+ lookup_data.name = memname;
+ lookup_data.member_date = member_date;
+ found = ar_scan (arname, ar_member_date_1, &lookup_data);
free (arname);
- return (val <= 0 ? (time_t) -1 : (time_t) val);
+ /* return 0 (not found) if the archive does not exist or has invalid format. */
+ return (found == 1) ? 1 : 0;
}
/* Set the archive-member NAME's modtime to now. */
diff --git a/commands.c b/commands.c
index 7123021f..029f18e5 100644
--- a/commands.c
+++ b/commands.c
@@ -622,7 +622,10 @@ delete_target (struct file *file, const char *on_behalf_of)
time_t file_date = (file->last_mtime == NONEXISTENT_MTIME
? (time_t) -1
: (time_t) FILE_TIMESTAMP_S (file->last_mtime));
- if (ar_member_date (file->name) != file_date)
+ time_t member_date = NONEXISTENT_MTIME;
+ int found;
+ found = ar_member_date (file->name, &member_date);
+ if (found && member_date != file_date)
{
if (on_behalf_of)
OSS (error, NILF,
diff --git a/configure.ac b/configure.ac
index 1f8aa299..aa55615f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -68,7 +68,8 @@ AC_HEADER_DIRENT
AC_HEADER_STAT
AC_HEADER_TIME
AC_CHECK_HEADERS([stdlib.h locale.h unistd.h limits.h fcntl.h string.h \
- memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h])
+ memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h \
+ sys/user.h linux/binfmts.h])
AM_PROG_CC_C_O
AC_C_CONST
diff --git a/debian/Explanations b/debian/Explanations
new file mode 100644
index 00000000..090974ec
--- /dev/null
+++ b/debian/Explanations
@@ -0,0 +1,204 @@
+ This file is a presentation of explanations of make's behaviour that
+ users have found puzzling over time, along with explanations of the
+ behaviour by make's author.
+
+######################################################################
+######################################################################
+######################################################################
+
+ Case 1:
+
+> I have always thought that a normal (non-pattern) rule with multiple
+> targets gets run multiple times, once per each target that is out of
+> date. At least, that's what the manual says. Sometimes one would
+> like a different behavior, namely to update all the targets at once
+> with one run, but as long as it's documented and established I am
+> willing to live with it. But there seems to be more to it.
+
+==============================================================================
+ MODULES := \
+ Blah \
+ Bleh \
+
+ SOURCES := $(addsuffix .sml,$(MODULES))
+
+ TEX := $(addsuffix .tex,$(MODULES))
+
+ modules.tex : $(TEX)
+ cat $(TEX) > modules.tex
+
+ $(TEX) : $(SOURCES)
+ ./bin/plit $(SOURCES)
+==============================================================================
+
+> I have files Blah.sml and Bleh.sml.
+> Surprise #1: make modules.tex runs the last rule _once_ (which
+> happens to be which happens in this case).
+
+That's because of the way make processes the makefile. First, it builds
+Blah.tex, but that command also updates Bleh.tex. So, when make comes
+around looking to decide if Bleh.tex needs to be updated, it doesn't
+have to be because it's already up to date, so make doesn't run the rule
+again.
+
+The best way to see this problem is to try a parallel build: in that
+case often make will try to invoke the script once for each target, in
+parallel.
+
+> Surprise #2: add a flag to the command, so now the last rule is
+> $(TEX) : $(SOURCES)
+> ./bin/plit -n $(SOURCES)
+> touch one of the .sml files, make modules.tex again. Now plit runs twice!
+
+I don't know what the -n flag does so I can't say: I can't find any docs
+for "plit" via Google or on my system. Maybe it doesn't actually update
+the files with -n?
+
+Needless to say I can't reproduce this behavior with a simplified
+makefile that doesn't invoke plit but rather just uses touch, etc. to
+try to mimic its behavior.
+
+>
+> Surprise #3: refactor like this
+> $(TEX) : junk
+> junk: $(SOURCES)
+> ./bin/plit -n $(SOURCES)
+> touch Blah.sml. Now make modules.tex runs the last rule (once), but
+> not the first rule (for modules.tex itself), even though it clearly
+> is out of date!
+
+I can only assume that you created a file "junk" by hand in this
+directory during your testing: no other explanation fits the facts as
+you describe them.
+
+This makefile is broken, because you never have any command that updates
+the file "junk".
+
+If that file "junk" doesn't exist already then make will always run the
+plit script every time, regardless of the relative timestamps of the
+.sml files, and then it will always update modules.tex.
+
+If that file "junk" does exist, then it will re-run "plit" if any of the
+.sml files is newer than the file "junk". But since the script doesn't
+update "junk" itself, make doesn't consider the two .tex files out of
+date (they are still newer than their prerequisite, "junk") so it
+doesn't rebuild modules.tex.
+
+If you change your rule so that it updates "junk", all will work as you
+expect:
+
+ $(TEX): junk
+
+ junk: $(SOURCES)
+ ./bin/plit -n $(SOURCES)
+ @touch $@
+
+######################################################################
+######################################################################
+######################################################################
+
+ Case 2
+
+> In some cases, GNU make ignores some double-colon rules when dry-run.
+======================================================================
+ all: foo.1 foo.2
+ foo.1:
+ touch foo.1
+ foo.2:
+ touch foo.2
+
+ install.man:: foo.1
+ @echo install foo.1
+
+ install.man:: foo.2
+ @echo install foo.2
+
+ install.man::
+ @echo install done
+======================================================================
+> I've got the following results
+
+> % make
+> touch foo.1
+> touch foo.2
+> % make -n install.man
+> echo install foo.1
+> echo install done
+
+> I expect "echo install foo.2", but make dry-run shows not to
+> run "install foo.2". However, if I run make actually
+
+> % make install.man
+> install foo.1
+> install foo.2
+> install done
+
+> "install foo.2" is executed. Is this an intentional behavior or a
+> bug of GNU make?
+
+It is intentional behavior. When GNU make runs with -n it must assume
+that your command script does what you say it will do: since it doesn't
+run the script itself it can't know what the script _really_ does.
+
+For a rule like this:
+
+ install.man:: foo.1
+ <some script>
+
+GNU make _must_ assume that <some script> updates the target
+"install.man"... how can it know that it really doesn't?
+
+So, when you run with -n it assumes that the target is now updated,
+which automatically makes it newer than "foo.2", so the rule depending
+on "foo.2" does not get run.
+
+The last install.man rule is run because there is a special condition
+for double-colon rules, that if they have no prerequisites the command
+is run even if the target exists (see the section "Double-Colon Rules"
+in the GNU make manual).
+
+However, double-colon rules that _DO_ have prerequisites are only
+invoked if the prerequisites are newer than the target, just as with
+normal rules.
+
+You can see the behavior "make -n" is emulating without using -n if you
+have your scripts actually create the target your makefile says it will:
+
+ install.man:: foo.1
+ @echo install foo.1
+ touch $@
+ install.man:: foo.2
+ @echo install foo.2
+ touch $@
+ install.man::
+ @echo install done
+ touch $@
+
+
+ $ make -n
+ install foo.1
+ install done
+
+ $ make
+ install foo.1
+ install done
+
+ ms> Note that pmake run as I expected
+
+ ms> % pmake -n install.man
+ ms> echo install foo.1
+ ms> echo install foo.2
+ ms> echo install done
+
+Most likely pmake behaves differently; it may always run all
+double-colon scripts, even if there's a satisfied prerequisite
+relationship.
+
+Try the above makefile with the touch lines in it: does it run all three
+rules even though the touch lines exist?
+
+######################################################################
+######################################################################
+######################################################################
+
+arch-tag: b9738368-cd5f-43ad-aed0-6853f020811f
diff --git a/debian/NEWS.Debian b/debian/NEWS.Debian
new file mode 100644
index 00000000..08f01cca
--- /dev/null
+++ b/debian/NEWS.Debian
@@ -0,0 +1,185 @@
+make-dfsg (4.1-2) unstable; urgency=low
+
+ WARNING: Backward-incompatibility!
+
+ The ar program in the binutils package in Debian is now configured
+ with --enable-deterministic-archives. This change makes the archives
+ reproducible, by setting the UID, GID, and timestamp to 0. However,
+ when dealing with archives created with the libxx(*.o) style rules,
+ make needs the timestamp of the file in order to decide to update it
+ or not. With the current deterministic behavior of ar, the time stamp
+ is always 0. This has consequences, since make will fall back to always
+ adding each member to the archive, whether or not it is required. This
+ is a change in behaviour, and, for instance, it makes make fail to
+ build, failing 7 out of 10 archive tests.
+ .
+ Since binutils will create archive with time stamps set to 0 when
+ running in "deterministic" mode, make will always try to update such
+ members. When this is detected, make will emit a warning.
+ .
+ There is some online discussion:
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798804
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798913
+ https://bugzilla.redhat.com/show_bug.cgi?id=1195883
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 18 Jan 2016 16:09:19 -0800
+
+make-dfsg (4.0-1) experimental; urgency=low
+
+ WARNING: Backward-incompatibility!
+ If .POSIX is specified, then make adheres to the POSIX backslash/newline
+ handling requirements, which introduces the following changes to the
+ standard backslash/newline handling in non-recipe lines:
+ * Any trailing space before the backslash is preserved
+ * Each backslash/newline (plus subsequent whitespace) is converted to a
+ single space
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 12 Apr 2014 23:56:34 -0700
+
+make-dfsg (3.82-1) experimental; urgency=low
+
+ * New upstream release. A complete list of bugs fixed in this version is
+ available here: http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
+ * WARNING: Future backward-incompatibility!
+ Wildcards are not documented as returning sorted values, but up to and
+ including this release the results have been sorted and some makefiles
+ are apparently depending on that. In the next release of GNU make,
+ for performance reasons, we may remove that sorting. If your
+ makefiles require sorted results from wildcard expansions, use the
+ $(sort ...) function to request it explicitly.
+ * WARNING: Backward-incompatibility!
+ The POSIX standard for make was changed in the 2008 version in a
+ fundamentally incompatible way: make is required to invoke the shell
+ as if the '-e' flag were provided. Because this would break many
+ makefiles that have been written to conform to the original text of
+ the standard, the default behavior of GNU make remains to invoke the
+ shell with simply '-c'. However, any makefile specifying the .POSIX
+ special target will follow the new POSIX standard and pass '-e' to the
+ shell. See also .SHELLFLAGS below.
+ * WARNING: Backward-incompatibility!
+ The '$?' variable now contains all prerequisites that caused the
+ target to be considered out of date, even if they do not exist
+ (previously only existing targets were provided in $?).
+ * WARNING: Backward-incompatibility!
+ As a result of parser enhancements, three backward-compatibility
+ issues exist: first, a prerequisite containing an "=" cannot be
+ escaped with a backslash any longer. You must create a variable
+ containing an "=" and use that variable in the prerequisite. Second,
+ variable names can no longer contain whitespace, unless you put the
+ whitespace in a variable and use the variable. Third, in previous
+ versions of make it was sometimes not flagged as an error for explicit
+ and pattern targets to appear in the same rule. Now this is always
+ reported as an error.
+ * WARNING: Backward-incompatibility!
+ The pattern-specific variables and pattern rules are now applied in
+ the shortest stem first order instead of the definition order
+ (variables and rules with the same stem length are still applied in
+ the definition order). This produces the usually-desired behavior
+ where more specific patterns are preferred. To detect this feature
+ search for 'shortest-stem' in the .FEATURES special variable.
+ * WARNING: Backward-incompatibility!
+ The library search behavior has changed to be compatible with the
+ standard linker behavior. Prior to this version for prerequisites
+ specified using the -lfoo syntax make first searched for libfoo.so in
+ the current directory, vpath directories, and system directories. If
+ that didn't yield a match, make then searched for libfoo.a in these
+ directories. Starting with this version make searches first for
+ libfoo.so and then for libfoo.a in each of these directories in order.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 18 Jul 2011 00:38:04 -0700
+
+make (3.80+3.81.b3.1-1) unstable; urgency=low
+
+ * WARNING: Backward-incompatibility! (this may help CDBS users)
+ GNU make now implements a generic "second expansion" feature on the
+ prerequisites of both explicit and implicit (pattern) rules. In order
+ to enable this feature, the special target '.SECONDEXPANSION' must be
+ defined before the first target which takes advantage of it. If this
+ feature is enabled then after all rules have been parsed the
+ prerequisites are expanded again, this time with all the automatic
+ variables in scope. This means that in addition to using standard
+ SysV $$@ in prerequisites lists, you can also use complex functions
+ such as $$(notdir $$@) etc. This behavior applies to implicit rules,
+ as well, where the second expansion occurs when the rule is matched.
+ However, this means that you need to double-quote any "$" in your
+ filenames; instead of "foo: boo$$bar" you now must write "foo:
+ foo$$$$bar". Note that the SysV $$@ etc. feature, which used to be
+ available by default, is now ONLY available when the .SECONDEXPANSION
+ target is defined. If your makefiles take advantage of this SysV
+ feature you will need to update them.
+ * New special variables available in this release:
+ - .INCLUDE_DIRS: Expands to a list of directories that make searches
+ for included makefiles.
+ * New functions available in this release:
+ - $(info ...) prints its arguments to stdout. No makefile name or
+ line number info, etc. is printed.
+ - $(flavor ...) returns the flavor of a variable.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 12 Dec 2005 13:38:47 -0600
+
+make (3.80+3.81.b3-1) unstable; urgency=low
+
+ * WARNING: Backward-incompatibility!
+ GNU make now implements a generic "second expansion" feature on the
+ prerequisites of both explicit and implicit (pattern) rules. After
+ all rules have been parsed the prerequisites are expanded again, this
+ time with all the automatic variables in scope. This means that in
+ addition to using standard SysV $$@ in prerequisites lists, you can
+ also use complex functions such as $$(notdir $$@) etc. This behavior
+ applies to implicit rules, as well, where the second expansion occurs
+ after the rule is matched. However, this means that you need to
+ double-quote any "$" in your filenames; instead of "foo: boo$$bar" you
+ now must write "foo: foo$$$$bar".
+ * WARNING: Backward-incompatibility!
+ In order to comply with POSIX, the way in which GNU make processes
+ backslash-newline sequences in command strings has changed. See the
+ GNU make manual section "Command Execution" for details.
+ * New command-line option: -L (--check-symlink-times). On systems that
+ support symbolic links, if this option is given then GNU make will use
+ the most recent modification time of any symbolic links that are used
+ to resolve target files. The default behavior remains as it always
+ has: use the modification time of the actual target file only.
+ * The "else" conditional line can now be followed by any other legal
+ conditional on the same line: this does not increase the depth of the
+ conditional nesting, so only one "endif" is required to close the
+ conditional.
+ * All pattern-specific variables that match a given target are now used
+ (previously only the first match was used).
+ * Target-specific variables can be marked as exportable using the
+ "export" keyword.
+ * In a recursive $(call ...) context, any extra arguments from the outer
+ call are now masked in the context of the inner call.
+ * Implemented a solution for the "thundering herd" problem with "-j -l".
+ This version of GNU make uses an algorithm suggested by Thomas Riedl
+ <thomas.riedl@siemens.com> to track the number of jobs started in the
+ last second and artificially adjust GNU make's view of the system's
+ load average accordingly.
+ * New special variables available in this release:
+ - .FEATURES: Contains a list of special features available in this
+ version of GNU make.
+ - .DEFAULT_GOAL: Set the name of the default goal make will
+ use if no goals are provided on the command line.
+ - MAKE_RESTARTS: If set, then this is the number of times this
+ instance of make has been restarted (see "How Makefiles Are Remade"
+ in the manual).
+ - New automatic variable: $| (added in 3.80, actually): contains all
+ the order-only prerequisites defined for the target.
+ * New functions available in this release:
+ - $(lastword ...) returns the last word in the list. This gives
+ identical results as $(word $(words ...) ...), but is much faster.
+ - $(abspath ...) returns the absolute path (all "." and ".."
+ directories resolved, and any duplicate "/" characters removed) for
+ each path provided.
+ - $(realpath ...) returns the canonical pathname for each path
+ provided. The canonical pathname is the absolute pathname, with
+ all symbolic links resolved as well.
+ - $(info ...) prints informative messages to stdout. No makefile
+ name or line number info, etc. is printed, just the message.
+ * Changes made for POSIX compatibility:
+ - Only touch targets (under -t) if they have at least one command.
+ - Setting the SHELL make variable does NOT change the value of the
+ SHELL environment variable given to programs invoked by make. As
+ an enhancement to POSIX, if you export the make variable SHELL then
+ it will be set in the environment, just as before.
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 9 Dec 2005 21:28:14 -0600
diff --git a/debian/README.Debian-Source b/debian/README.Debian-Source
new file mode 100644
index 00000000..30928214
--- /dev/null
+++ b/debian/README.Debian-Source
@@ -0,0 +1,6 @@
+
+ This source package has been pared down to remove the documentation
+ (which has a license that does not pass DFSG muster), and the build
+ system has been adjusted accordingly. The sources of the binary make
+ program are in the source package make-dfsg. The full unredacted
+ sources can be had from non-free in make-doc-non-dfsg.
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 00000000..cca09781
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,1175 @@
+make-dfsg (4.1-9.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * Ensure the stack limit is reset when make re-execs itself.
+ (Closes: #853213)
+
+ -- James Cowgill <jcowgill@debian.org> Tue, 31 Jan 2017 16:31:57 +0000
+
+make-dfsg (4.1-9) unstable; urgency=low
+
+ * Reword the manual page. While the wording included in the manual page
+ was not verbatim copying from the source material, it was perhaps not
+ distinct enough. The manual page is not a copy/edit of the source
+ material anymore, being rewritten using different words and flow.
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 11 Mar 2016 17:31:03 -0800
+
+make-dfsg (4.1-8) unstable; urgency=low
+
+ * Bug fix: "manpage should document --jobserver-fds and the jobserver
+ pipe", thanks to Josh Triplett. Updated the manual page, and forwarded
+ this bug to upstream bug reporting system.(Closes: #781416).
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 11 Mar 2016 14:16:58 -0800
+
+make-dfsg (4.1-7) unstable; urgency=low
+
+ * Updated standards version to 3.9.7. No changes needed.
+ * Bug fix: "-q fails for recursive makes", thanks to David Bremner
+ (Closes: #766140).
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 09 Mar 2016 16:10:46 -0800
+
+make-dfsg (4.1-6) unstable; urgency=low
+
+ * Satsifiable cross build dependencies: libbsd-resource-perl is only needed
+ for running tests. Helmut Grohne <helmut@subdivi.de>
+ * Bug fix: "make-dfsg has unsatisfiable cross build dependendencies in a
+ bootstrap setting: libbsd-resource-perl", thanks to Helmut Grohne
+ (Closes: #812725).
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 14 Feb 2016 21:15:11 -0800
+
+make-dfsg (4.1-5) unstable; urgency=low
+
+ * While increasing the timeout is a solution, it still did not work for
+ the slower architectures. Reducing the maximum open file descriptor
+ limits (only while testing) to try and get the the time under
+ control.
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 23 Jan 2016 16:10:23 -0800
+
+make-dfsg (4.1-4) unstable; urgency=low
+
+ * Try to fix this bug. The problem is due to the fopen fail test, where
+ we fopen as many files as we can recursively before we run out of file
+ descriptors, and ensure that we exit with a failure message. The tests
+ times out on some machines. On abel, doubling the timeout was not
+ enough, but increasing it to 1200 seconds worked.
+ * Bug fix: "make 4.1 ftbfs on armel, armhf, mips, mipsel, powerpc, s390x
+ (test regressions)", thanks to Matthias Klose (Closes: #811408).
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 22 Jan 2016 01:55:04 -0800
+
+make-dfsg (4.1-3) unstable; urgency=low
+
+ * Handle NULL return from ttyname
+ * Bug fix: "`make` always segfaults inside `strlen`", thanks to Tomasz
+ Melcer (Closes: #812244).
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 22 Jan 2016 00:37:32 -0800
+
+make-dfsg (4.1-2) unstable; urgency=low
+
+ * Update the handling of the changed behaviour of ar. The fix in the
+ previous version has been rolled back. The new strategy is to narrowly
+ change running the test suite to pass in the U modifier to ar, and
+ change make to detect and warn the user of they are using the archive
+ rule like libxx(*.o) to generate archives, and the archives do not
+ contain time stamps. The warning advises the user to explicitly pass
+ in the modifier U in the environment variable ARFLAGS, which is
+ essentially what we did for the test suite.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 18 Jan 2016 15:57:45 -0800
+
+make-dfsg (4.1-1) unstable; urgency=low
+
+ * New upstream release
+ * Updated Standards version to 3.9.6. No changes needed.
+ * Updated the VCS-Git field of the control file to use HTTPS transport
+ * Updated the copyright file to DEP-5 format.
+ * Reverted to source format 1.0 , and use dgit
+ * Bug fix: "Typos in manpage", thanks to Josh Triplett
+ (Closes: #763147).
+ * Bug fix: "[make] make version 4.1 available", thanks to LeJacq, Jean
+ Pierre (Closes: #766383).
+ * Demote make to priority optional, along with gcc and such. And bump
+ make-guile to extra.
+ * Bug fix: "Neither make nor make-guile should be standard", thanks to
+ Josh Triplett (Closes: #761301).
+ * Bug fix: "make instead of make-guile should be standard", thanks to
+ Joey Hess (Closes: #762017).
+ * Make make and make-guile be Multi-Arch: Allowed packages, since it
+ might not be feasible to make make architecture agnostic.
+ * Bug fix: "Please add U flag in the default ARFLAGS", thanks to
+ Celelibi. I tend to agree, this was a backwards incompatible
+ change. Make needs the timestamps to knpow when to update archie
+ members, so nuking the timestamps changes behaviour, and remake things
+ that need not be remade. This fails the principle of least surprise. I
+ added a default -U to the flags make passes to arl (Closes: #798804).
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 16 Jan 2016 22:37:08 -0800
+
+make-dfsg (4.0-8) unstable; urgency=high
+
+ * Update the timeout for the fopen fail test to 300 seconds, since the
+ test was taking longer than the default 5 seconds to run. The root
+ cause was discovered by Víctor M. Jáquez L. (Closes: #748657)
+ * Bug fix #748657: "make-dfsg failed to run test: work/misc/fopen-fail.mk",
+ thanks to Yunqiang Su.
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 13 Jun 2014 15:54:27 -0700
+
+make-dfsg (4.0-7) unstable; urgency=low
+
+ * There is an issue involving UTF-8 characters and the function
+ find_char_unquote (read.c). The problem in the macro STOP_SET
+ (makeint.h) where a character is converted to an int. Conversion to
+ int is not correct. Characters with codes greater than 0x7f ( in
+ particular in Cyrillic UTF- 8 ) into a large negative number. Thnks to
+ the analysis from Юрий Матронов <ymuser@mail.ru>. This bug was
+ independently reported and fixed upstream, so cherry picking that
+ commit from upstream (which also comes with a test).
+ (Closes: #747764).
+ * added a script that, given a list of targets, will build the first
+ target that actually exists. Script created by Joey Hess.
+ (Closes: #598534).
+ * Bug fix #747764: "make 4.0-5 bug", thanks to Юрий Матронов
+ * Bug fix #598534: "add make-first-existing-target", thanks to Joey Hess
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 13 May 2014 18:22:39 -0700
+
+make-dfsg (4.0-6) unstable; urgency=medium
+
+ * Also create a new binary package, make-guile, which is identical to
+ the make package, but has built in support for Guile a a programming
+ langiage, and adds run time dependencies outside of libc.
+ (Closes: #747615, #747674).
+ * Bug fix #747615: "Please provide a version with Guile support
+ enabled", thanks to Jose Antonio Ortega Ruiz
+ * Bug fix #747674: "undeterministic build due to missing configure
+ arguments/build-conflicts", thanks to Bernhard R. Link
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 11 May 2014 20:51:24 -0700
+
+make-dfsg (4.0-5) unstable; urgency=low
+
+ * When presented with a very very long command line (e.g. WebKit's linking
+ of libWebCore.la in current git), make fails to execute the command as
+ it doesn't split the command line to fit within the limits. There is a
+ patch used by people to solve this (gentoo, etc). Adam Conrad has
+ provided a patch to fix this. (Closes: #688601).
+ * Pre-4.0 make had an memory corruption issue that caused repeated
+ execution of a specific makefile to display the cirruption. Running
+ with make 4.0 does not show the issue. (Closes: #682895).
+ * recently, the Multi-Arch: foreign tag was added toth make binary
+ package. Jakub Wilk pointed out that this is not correct, some of the
+ make interfaces are actually architecture-dependent. Reverting that
+ change.
+ * Bug fix #688601: "fails to execute extraordinarily long command
+ lines", thanks to Daniel Stone
+ * Bug fix #682895: "incorrect variable handling and corruption", thanks
+ to Tim Spriggs
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 04 May 2014 18:13:40 -0700
+
+make-dfsg (4.0-4) unstable; urgency=low
+
+ * Movint this version of make to unstable, All known problems exposed in
+ the archive rebuild have been fixed. There is no change in this
+ version apart from the ditribution change
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 02 May 2014 18:32:32 -0700
+
+make-dfsg (4.0-3) experimental; urgency=medium
+
+ * Cherry pick upstream patch to Propagate correct rule status results.
+ * Bug fix: "New make behaviour confuses dpkg-buildpackages&#39; test for
+ make targets". Fixed by above. (Closes: #746443).
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 01 May 2014 22:09:08 -0700
+
+make-dfsg (4.0-2) experimental; urgency=medium
+
+ * Pull back some patches from upstream git that fix bugs. One of these
+ converts the mixed implicit and explicit rule error into a warning,
+ and that should give us a grace period to fix the Makefiles,
+ * Bug fix: "FTBFS with make 3.82 from experimental", thanks to Daniel
+ Schepler. This package was not reported broken in the archive rebuild:
+ see http://aws-logs.debian.net/ftbfs-logs/results-make4/ (Closes: #720686).
+ * Bug fix: "make 3.82: with -j tries to run receipes without
+ prerequisites yet done", thanks to Bernhard R. Link. This was not seen
+ in the archive rebuild, and the upstream report has ben closed a being
+ fixed in 4.0 (Closes: #722520).
+ * Bug fix: "run dh-autoreconf to update config.{sub,guess} and
+ {libtool,aclocal}.m4", thanks to Wookey. We now do indeed run
+ autoreconf. (Closes: #689626).
+ * Bug fix: "spurious circular dependency", thanks to Frank Heckenbach
+ Bug fixed in new version. (Closes: #669968).
+ * Bug fix: "make 3.82: fails to parse archive syntax", thanks to Andrew
+ Shadura (Closes: #675612).
+ * Bug fix: "binary package make lacks &quot;Multi-Arch: foreign&quot;
+ declaration", thanks to Helmut Grohne (Closes: #693926).
+ * Bug fix: "make 3.82 breaks kernel module build: &#39;mixed implicit
+ and normal rules&#39; in linux-headers-*", thanks to Dean Loros
+ (Closes: #635317).
+ * Bug fix: "please package upstream version 4.0", thanks to Andrew
+ Shadura (Closes: #734387).
+ * Bug fix: "optionally echo all commands, even if preceded with @",
+ thanks to Vincent Lefevre (Closes: #451092).
+ * Bug fix: "&quot;Make is a HUGE memory hog&quot;", thanks to Matthias
+ Klose (Closes: #342726).
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 28 Apr 2014 23:57:19 -0700
+
+make-dfsg (4.0-1) experimental; urgency=low
+
+ * New upstream release
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 12 Apr 2014 18:49:59 -0700
+
+make-dfsg (3.82-1) experimental; urgency=low
+
+ * New upstream release. A complete list of bugs fixed in this version is
+ available here:
+ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
+ * Bug fix: "parallel (-j2) make with $(eval) construct segfaults",
+ thanks to Bjoern Michaelsen.The fix has been included in the new
+ version. (Closes: #622644).
+ * Bug fix: "improving the package description (again)", thanks to Justin
+ B Rye (Closes: #612195).
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 18 Jul 2011 01:05:46 -0700
+
+make-dfsg (3.81-8.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * remake.c, configure.in: prepend multiarch paths to the library path in
+ library_search() when we have a target dependency of '-lfoo', so that
+ this still works when all our libraries are moving to multiarch library
+ directories. Closes: #618840, LP: #737641.
+
+ -- Steve Langasek <vorlon@debian.org> Sat, 09 Apr 2011 19:51:46 +0000
+
+make-dfsg (3.81-8) unstable; urgency=low
+
+ * New bug fixing release.
+ * [a6f53b8]: [topic--overlap-strcpy-fix]: make corrupts commands with
+ latest eglibc make uses strcpy() on overlapping strings, recent
+ (e)glibc doesn't tolerate this. strcpy is not defined to work on
+ overlapping regions. This is upstream bug
+ https://savannah.gnu.org/bugs/index.php?29253 The fix comes thanks
+ to Roderich Schupp and Max Bowsher.
+ Bug fix: "make corrupts commands with latest eglibc (strcpy of
+ overlapping strings)", thanks to Roderich Schupp (Closes: #568665).
+ * Bug fix: "make package built from source missing libc6 dependency",
+ thanks to Daniel Schepler (Closes: #569924).
+ * Bug fix: "Please build-depend on autopoint", thanks to Santiago Vila
+ (Closes: #572474).
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 21 Mar 2010 12:42:55 -0700
+
+make-dfsg (3.81-7) unstable; urgency=low
+
+ * Checked against latest policy. Added few minor tweaks to fix problems
+ pointed out b lintian, and removed a false positive lintian check.
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 01 Nov 2009 20:28:51 -0600
+
+make-dfsg (3.81-6) unstable; urgency=low
+
+ * [debian:8ea2843]: [make-dfsg]: Update package description
+ Update and trim the package description.
+ Bug fix: "improving the package description", thanks to Justin B Rye
+ (Closes: #508456).
+ * [debian:586087b]: [make-dfsg]: Use autoreconf to refresh the build system.
+ Bug fix: "FTBFS: Outdated config.{sub,guess}", thanks to Bradley Smith
+ (Closes: #533681).
+ * [4ae7fd6]: [topic--override-fix]: Fix override behaviour discrepancies
+ target specific override appears to be ignored completely if the
+ variable is passed on the command line. Closes: 524378
+ Bug fix: "corner cases in &#39;override&#39; logic for variables",
+ thanks to Ron (Closes: #524378).
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 21 Jun 2009 11:40:43 -0500
+
+make-dfsg (3.81-5) unstable; urgency=low
+
+ * Record the fact that this package has moved to a new git repository.
+ * Move to the new, make -j friendly targets in debian/rules.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 02 Jun 2008 09:37:36 -0500
+
+make-dfsg (3.81-4) unstable; urgency=low
+
+ * NMU ack. double free or corruption bug on file globbing, 419190.
+ * Bug fix: "make: Directory Search for Link Libraries does not look in
+ /usr/local/lib", thanks to Daniel Barlow. In the Debian binaries,
+ PREFIX is /usr and thus this searches /lib, /usr/lib and /usr/lib
+ again and therefore misses any libraries that are not packaged and
+ were installed by the site admin. The ideal behaviour would be to
+ have the search path set by a Makefile variable (other than the VPATH
+ blunt object) but even absent that, it would be more useful if it
+ looked in /usr/local/lib even though make itself hasn't been installed
+ in the /usr/local tree. Closes: Bug#288592
+ * Bug fix: "make: make should suggest make-doc not make-doc-non-dfsg
+ which is a source package", thanks to lukpank@o2.pl (Łukasz Pankowski)
+ Closes: Bug#473759
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 03 Apr 2008 02:04:02 -0500
+
+make-dfsg (3.81-3.1) unstable; urgency=low
+
+ * NMU with permission.
+ * Bug fix: Avoid double-free on file globbing. (Closes: #419190).
+ * Misc: Updated standards version to 3.7.3 (no changes)
+
+ -- Steve Kemp <skx@debian.org> Thu, 13 Mar 2008 19:50:10 +0000
+
+make-dfsg (3.81-3) unstable; urgency=low
+
+ * Bug fix: "typo in make.1", thanks to LI Daobing (Closes: #375984).
+ * Bug fix: "Please suggest make-doc", thanks to Moritz Muehlenhoff
+ (Closes: #362297).
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 11 Sep 2006 15:10:59 -0500
+
+make-dfsg (3.81-2) unstable; urgency=low
+
+ * Bug fix: "Please suggest make-doc", thanks to Moritz Muehlenhoff
+ (Closes: #362297).
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 3 May 2006 21:49:55 -0500
+
+make-dfsg (3.81-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 10 Apr 2006 17:24:57 -0500
+
+make-dfsg (3.80+3.81.rc2-1) unstable; urgency=low
+
+ * New upstream release candidate.
+ * Bug fix: "Make always recompiles everything in the Linux Kernel.",
+ thanks to Neil Brown. This is really a bug in the kernel build system,
+ not make. However, this release defers the change so as not to trigger
+ the bug. (Closes: #356552, #356630).
+
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 20 Mar 2006 15:37:15 -0600
+
+make (3.80+3.81.rc1-1) unstable; urgency=low
+
+ * New upstream release candidate.
+ * Bug fix: "make: the '-W <file>' option used with VPATH does not work
+ correctly", thanks to Jeff Sheinberg (Closes: #107624).
+ * Bug fix: "make shows incorrect line number in error report", thanks to
+ Nikita V. Youshchenko (Closes: #274840).
+ * Bug fix: "make: [doc] Implicit Rules: C++", thanks to LI Daobing
+ (Closes: #335044).
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 24 Feb 2006 16:56:54 -0600
+
+make (3.80+3.81.b4-1) unstable; urgency=low
+
+ * New upstream pre release
+ * Bug fix: "FTBFS due to timestamp skews", thanks to Loïc Minier
+ Use MAINTAINER_MODE instead. (Closes: #343069).
+ * Bug fix: "make: Missing information about backward-incompatibility",
+ thanks to Vincent Lefevre. As Ken Bloom pointed out, the correct
+ section is command execution. (Closes: #343088).
+ * Since there is a new texinfo.tex we use now, no longer remove it,
+ since autoreconf shall fail if that file is missing.
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 13 Dec 2005 22:43:19 -0600
+
+make (3.80+3.81.b3.1-1) unstable; urgency=low
+
+ * New upstream CVS HEAD (we are in a pre-release mode.
+ * Bug fix: "make: new version breaks cdbs", thanks to Aurelien Jarno
+ (Closes: #342879).
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 12 Dec 2005 13:38:47 -0600
+
+make (3.80+3.81.b3-1) unstable; urgency=low
+
+ * New upstream pre-release.
+ * Bug fix: "make: continued command lines are not passed to the shell
+ correctly", thanks to Jeff Sheinberg. This has been fixed in this release.
+ (http://savannah.gnu.org/bugs/?func=detailitem&item_id=1332) (Closes: #59311).
+ * Bug fix: "make: bogus output of make -np", thanks to P�sztorSzil�rd I
+ believe this bug is the result of a known, rare, and already-fixed
+ problem with the parser that occurs if a line is exactly the right
+ length. (Closes: #117566).
+ * Bug fix: "make segfault with -t", thanks to Philipp Meier
+ (https://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=1418)
+ (Closes: #279900).
+ * Bug fix: "make -f '' dumps core", thanks to Peter Maydell (Closes: #164165).
+ * Bug fix: "make: documentation of VPATH does not match behavior",
+ thanks to Matthew Swift (Closes: #176639).
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 9 Dec 2005 21:28:14 -0600
+
+make (3.80-12) unstable; urgency=low
+
+ * Bug fix: "FTBFS: DVI file cannot be opened", thanks to Matt Kraai. It
+ seemed odd to me that the buildd's do not seem to have a problem. On
+ investigation, if one does an apt-get source make,
+ ./config/texinfo.tex is still there: merely removing it from my
+ working tree does not remove it from the unpacked, patched source
+ tree, since diff merely ignores file deletions. I worked for me, since
+ the file was actually gone from my working dir; it worked on buildd's,
+ since they never remake the arch independent parts. So, now we
+ aggressively delete ./config/texinfo.tex all through the build and
+ clean process. (Closes: #334953).
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 6 Dec 2005 11:19:45 -0600
+
+make (3.80-11) unstable; urgency=low
+
+ * Bug fix: "make: FTBFS with teTeX-3.0", thanks to Frank Küster. Remove
+ the offending file (though not just in the clean target) (Closes: #322353).
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 10 Aug 2005 14:09:28 -0500
+
+make (3.80-10) unstable; urgency=low
+
+ * Bug fix: "FTBFS: Cannot find HTML documentation", thanks to Matt Kraai
+ (Closes: #317859).
+ * Bug fix: "make: [INTL:de] German PO file corrections", thanks to Jens
+ Seidel (Closes: #313988).
+ * Bug fix: "make: broken reference in info documentation", thanks to
+ Jason McCarty (Closes: #286766).
+ * Bug fix: "make: eval function within 'ifeq... else... endif' causes
+ error", thanks to François Duranleau (Closes: #296482).
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 7 Aug 2005 08:23:35 -0500
+
+make (3.80-9) unstable; urgency=low
+
+ * Bug fix: "make: reads uninitialized memory", thanks to Steinar
+ H. Gunderson (Closes: #260468).
+ * Bug fix: "XSI:ism in debian-scripts", thanks to David Weinehall
+ (Closes: #257578).
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 22 Jul 2004 13:01:45 -0500
+
+make (3.80-8) unstable; urgency=low
+
+ * Bug fix: "make: Explanations file cut off on right", thanks to Ross
+ Boylan (Closes: #253357).
+ * Removed the old dwww/menu entry. Now we use the preferred doc-base
+ registration method.
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 23 Jun 2004 00:19:49 -0500
+
+make (3.80-7) unstable; urgency=low
+
+ * Bug fix: "make: some options missing from manpage", thanks to Martin
+ Pool. This also was previously raised in #233474. I added a note to
+ the man page stating that the list of options is a partial list, and
+ pointed to the info docs for an authoritative list. (Closes: #243845).
+ * Bug fix: "make: German l10n: Updating po/de.po", thanks to Florian
+ Ernst (Closes: #244119).
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 20 Apr 2004 16:32:07 -0500
+
+make (3.80-6) unstable; urgency=low
+
+ * make_3.80-5(ia64/unstable): FTBFS: missing build-depends?, Actually,
+ no. I got bitten by the non support of build-deps-indep again. I have
+ now duplicated the indep dependencies into build depends, so this
+ should now work.
+ * Added an explanation for the behaviour of make, which demonstrates
+ that the dry-run of double colon rules and the behaviour of multi
+ target rules is expected behaviour.
+ * Bug fix: "make: strange behavior with multi-target rules", thanks to
+ Ian Zimmerman. Not a bug, as documented in the explanations file
+ referred to above. (Closes: #218367).
+ * Bug fix: "dry-run of double-colon rules?", thanks to Fumitoshi UKAI
+ Not a bug, as documented in the explanations file referred to above.
+ (Closes: #214592).
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 21 Feb 2004 17:14:51 -0600
+
+make (3.80-5) unstable; urgency=low
+
+ * Moved to the new build system, and arch.
+ * Updated to the latest policy version
+ * Bug fix: "make uses a way old Polish translation", thanks to Michał
+ Politowski. I actually updated a whole set of .po files from the
+ translation project. (Closes: #229620).
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 16 Feb 2004 17:09:47 -0600
+
+make (3.80-4) unstable; urgency=low
+
+ * Add AM_MAINTAINER_MODE to config.in, and regenerate all autoconf
+ related files.
+ * Mention that the documentation is distributed under the GFDL.
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 24 Sep 2003 03:39:12 -0500
+
+make (3.80-3) unstable; urgency=low
+
+ * Fixed usage of chown root.root in the rules files.
+ * Updates all the auto* files with the latest version of the tool
+ chain. It should now work with the newest versions. Removed automake
+ as build a dependency. Thanks to Santiago Vila <sanvila@unex.es> for
+ noticing this, and providing a patch, though the patch was not used
+ for this version. closes: Bug#210881
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 14 Sep 2003 14:32:15 -0500
+
+make (3.80-2) unstable; urgency=low
+
+ * "*** virtual memory exhausted" fixed in mainline CVS. Backported
+ thanks to Samium Gromoff. The fix involves saving and restoring
+ varible buffer contexts around eval'd code. closes: Bug#197886
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 5 Jul 2003 15:38:10 -0500
+
+make (3.80-1) unstable; urgency=low
+
+ * New upstream version with various bugs fixed.
+ * This bug was forwarded back to make, but make had already been
+ fixed. In the new version, this has been fixed for real, as opposed to
+ just having a workaround. closes: Bug#160174
+ * depend on coreutils rather than the deprecated fileutils closes: Bug#161449
+ * The new release also fixes this bug. closes: Bug#144306, Bug#80783
+
+ * A new feature exists: order-only prerequisites. These prerequisites
+ affect the order in which targets are built, but they do not impact
+ the rebuild/no-rebuild decision of their dependents. That is to say,
+ they allow you to require target B be built before target A, without
+ requiring that target A will always be rebuilt if target B is updated.
+ Patch for this feature provided by Greg McGary <greg@mcgary.org>.
+
+ * For compatibility with SysV make, GNU make now supports the peculiar
+ syntax $$@, $$(@D), and $$(@F) in the prerequisites list of a rule.
+ This syntax is only valid within explicit and static pattern rules: it
+ cannot be used in implicit (suffix or pattern) rules. Edouard
+ G. Parmelan <egp@free.fr> provided a patch implementing this
+ feature; however, I decided to implement it in a different way.
+
+ * The argument to the "ifdef" conditional is now expanded before it's
+ tested, so it can be a constructed variable name.
+
+ Similarly, the arguments to "export" (when not used in a variable
+ definition context) and "unexport" are also now expanded.
+
+ * A new function is defined: $(value ...). The argument to this
+ function is the _name_ of a variable. The result of the function is
+ the value of the variable, without having been expanded.
+
+ * A new function is defined: $(eval ...). The arguments to this
+ function should expand to makefile commands, which will then be
+ evaluated as if they had appeared in the makefile. In combination
+ with define/endef multiline variable definitions this is an extremely
+ powerful capability. The $(value ...) function is also sometimes
+ useful here.
+
+ * A new built-in variable is defined, $(MAKEFILE_LIST). It contains a
+ list of each makefile GNU make has read, or started to read, in the
+ order in which they were encountered. So, the last filename in the
+ list when a makefile is just being read (before any includes) is the
+ name of the current makefile.
+
+ * A new built-in variable is defined: $(.VARIABLES). When it is
+ expanded it returns a complete list of variable names defined by all
+ makefiles at that moment.
+
+ * A new command-line option is defined, -B or --always-make. If
+ specified GNU make will consider all targets out-of-date even if they
+ would otherwise not be.
+
+ * The arguments to $(call ...) functions were being stored in $1, $2,
+ etc. as recursive variables, even though they are fully expanded
+ before assignment. This means that escaped dollar signs ($$ etc.)
+ were not behaving properly. Now the arguments are stored as simple
+ variables. This may mean that if you added extra escaping to your
+ $(call ...) function arguments you will need to undo it now.
+
+ * The variable invoked by $(call ...) can now be recursive: unlike other
+ variables it can reference itself and this will not produce an error
+ when it is used as the first argument to $(call ...) (but only then).
+
+ * New pseudo-target .LOW_RESOLUTION_TIME, superseding the configure
+ option --disable-nsec-timestamps. You might need this if your build
+ process depends on tools like "cp -p" preserving time stamps, since
+ "cp -p" (right now) doesn't preserve the subsecond portion of a time
+ stamp.
+
+ * Updated translations for French, Galician, German, Japanese, Korean,
+ and Russian. New translations for Croatian, Danish, Hebrew, and
+ Turkish.
+
+ * Updated internationalization support to Gettext 0.11.5.
+ GNU make now uses Gettext's "external" feature, and does not include
+ any internationalization code itself. Configure will search your
+ system for an existing implementation of GNU Gettext (only GNU Gettext
+ is acceptable) and use it if it exists. If not, NLS will be disabled.
+ See ABOUT-NLS for more information.
+
+ * Updated to autoconf 2.54 and automake 1.7. Users should not be impacted.
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 25 Oct 2002 15:34:16 -0500
+
+make (3.79.1-15) unstable; urgency=low
+
+ * use which instead of command -v
+ * Removed the /usr/doc symlinks. Moved to the new cflag and optimization
+ rules. Bumped the standards version
+ * Hack Makefile.in not to run the automake/aclocal.autoheader/autoconf
+ junk, since they suddenly changed the interface.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 9 Sep 2002 02:02:36 -0500
+
+make (3.79.1-14) unstable; urgency=medium
+
+ * Include all the docs in the make-doc package closes: Bug#144195
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 23 Apr 2002 09:02:17 -0500
+
+make (3.79.1-13) unstable; urgency=low
+
+ * Incorporate a patch from "Paul D. Smith" <psmith@gnu.org> that fixes
+ the problem in expansion of target specific variables. closes: Bug#132646
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 22 Feb 2002 10:50:43 -0600
+
+make (3.79.1-12) unstable; urgency=low
+
+ * Fixed lintian warnings.
+ * added upstream location to the description.
+ * The upstream author has clarified that the behaviour described is not
+ a bug, but a consciously chosen tone. Theere is a workaround to this
+ problem: (put the "include b.mak" _inside_ of the a.mak file, so that
+ GNU make won't see it until after it includes a.mak, whereupon it will
+ also know how to build b.mak). closes: Bug#62051
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 26 Jan 2002 00:01:26 -0600
+
+make (3.79.1-11) unstable; urgency=low
+
+ * Add a build dependency on texinfo, without which info files were not
+ being provided on all architectures. closes: Bug#124165
+ * When make gets ready to build a target, it evaluates all commands
+ needed to build that target at once, before the first line is
+ invoked. Thus the behaviour displayed is not a bug closes: Bug#119663
+ * All variable and function expansion for targets and prerequisite lists
+ occurs when the makefile is read in, well before any sort of pattern
+ expansion occurs; so these functions are operating on the static
+ string "%", not the string it will expand to after pattern matching.
+ closes: Bug#110728
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 6 Jan 2002 01:45:51 -0600
+
+make (3.79.1-10) unstable; urgency=low
+
+ * Acknowledgement of NMU's closes: Bug#107943, Bug#107944, Bug#108632
+ * Don't drag in librt and libpthread unless we need to. closes: Bug#107704
+ * Make sure the documentation is included in the package. closes: Bug#109080
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 19 Aug 2001 23:44:55 -0500
+
+make (3.79.1-9.2) unstable; urgency=low
+
+ * NMU
+ * Move gettext to Build-Depends (instead of -Indep). Closes: #108632.
+
+ -- LaMont Jones <lamont@debian.org> Mon, 13 Aug 2001 20:55:04 -0600
+
+make (3.79.1-9.1) unstable; urgency=low
+
+ * Non maintainer upload on behalf of Manoj.
+ * Added gettext to duild-depends.
+
+ -- Roland Mas <lolando@debian.org> Mon, 13 Aug 2001 10:21:00 +0200
+
+make (3.79.1-9) unstable; urgency=low
+
+ * The french translation of this application translates 'free software'
+ into 'logiciel gratuit' instead of 'logiciel libre'. closes: Bug#106720
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 31 Jul 2001 01:20:57 -0500
+
+make (3.79.1-8) unstable; urgency=low
+
+ * s/#@/$@@/ in the texinfo file. closes: Bug#104130
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 17 Jul 2001 21:49:58 -0500
+
+make (3.79.1-7) unstable; urgency=low
+
+ * Updated config.sub/config.gues from a recent version. This
+ closes: Bug#99122
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 4 Jul 2001 20:36:22 -0500
+
+make (3.79.1-6) unstable; urgency=low
+
+ * Added a fix from "Paul D. Smith" <psmith@gnu.org> that fixes a problem
+ with make not echoing commands correctly. closes: Bug#72802
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 10 May 2001 09:19:58 -0500
+
+make (3.79.1-5) unstable; urgency=low
+
+ * fixed command execution in make. closes: Bug#89310
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 25 Apr 2001 02:52:38 -0500
+
+make (3.79.1-4) unstable; urgency=medium
+
+ * GNgngngng. The last upload is broken, thanks to the autoconf
+ breakage. This also breaks fakeroot, since make tries to add/drop seteuid
+ priviledges when it shouldn't. closes: #84201
+ closes: Bug#84184, Bug#84182, Bug#84185, Bug#84179, Bug#84198
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 30 Jan 2001 19:45:58 -0600
+
+make (3.79.1-3) unstable; urgency=medium
+
+ * A bug in autoconf made make setgid kmem. That opens up /dev/kmem and
+ /dev/mem to make processes in a mistaken assumption that one needs to
+ be setgid kmem to read loadaverages on linux. This version has been
+ built with a modified autoconf not to do that, and as a precaution
+ does not install make setgid kmem.
+ * Make sure the binary is stripped as per lintian requirements.
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 30 Jan 2001 15:16:49 -0600
+
+make (3.79.1-2) unstable; urgency=low
+
+ * Added a CRLF patch that is already in make CVS, and has recieved
+ extensive testing, and fixes an issue with reading files.
+ * Added the patch that fixes a polish grammar issue with the
+ informational messages make emits. (an alternate solution is in
+ upstream). closes: Bug#72414
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 30 Jan 2001 11:25:08 -0600
+
+make (3.79.1-1.potato.1) stable; urgency=low
+
+ * This is an update for potato. There are no changes made since the
+ update for woody 45 days ago. The old make did not honour the
+ MAKEFILES variable, this closes: Bug#71261
+ * I have heard rimours that the old make did not correctly build libc
+ either, and one needs this version. I can't say for sure, since no bug
+ was ever filed.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 11 Sep 2000 14:04:10 -0500
+
+make (3.79.1-1) unstable; urgency=low
+
+ * New upstream release. closes: Bug#67862
+ * .SECONDARY with no prerequisites now prevents any target from being
+ removed because make thinks it's an intermediate file, not just those
+ listed in the makefile.
+ * New configure option --disable-nsec-timestamps will keep make from
+ using sub-second timestamps on systems which support it. If your
+ build process depends on proper timestamp-preserving behavior of tools
+ like "cp -p" you might need this option, since "cp -p" (right now)
+ doesn't preserve the sub-second portion of the timestamp.
+ * Folded Adam Heath's fix for $(shell). closes: #67568
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 28 Jul 2000 16:15:10 -0500
+
+make (3.79-2.1) unstable; urgency=low
+
+ * Set the first byte of buffer to 0, in func_shell. Closes: #67568.
+
+ -- Adam Heath <doogie@debian.org> Fri, 21 Jul 2000 18:43:17 -0500
+
+make (3.79-2) unstable; urgency=low
+
+ * Hmm. Setting the install prefix to a relative value does not work; the
+ locale files were not installed in debian/tmp/usr/share/locale, but
+ locallyinto i18n/debian/tmp/usr/share/locale. This has been fixed
+ now. closes: Bug#66237
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 12 Jul 2000 10:05:53 -0500
+
+make (3.79-1) unstable; urgency=low
+
+ * New upstream release, adds fixes already present in Debian. This
+ closes: Bug#62619
+ changes are:
+ * GNU make optionally supports internationalization and locales via
+ the GNU gettext (or local gettext if suitable) package. See the
+ ABOUT-NLS file for more information on configuring GNU make for
+ NLS.
+ * Previously, GNU make quoted variables such as MAKEFLAGS and
+ MAKEOVERRIDES for proper parsing by the shell. This allowed them to
+ be used within make build scripts. However, using them there is not
+ proper behavior: they are meant to be passed to subshells via the
+ environment. Unfortunately the values were not quoted properly to be
+ passed through the environment. This meant that make didn't properly
+ pass some types of command line values to submakes.
+
+ With this version we change that behavior: now these variables are
+ quoted properly for passing through the environment, which is the
+ correct way to do it. If you previously used these variables
+ explicitly within a make rule you may need to re-examine your use for
+ correctness given this change.
+ * A new psuedo-target .NOTPARALLEL is available. If defined, the
+ current makefile is run serially regardless of the value of -j.
+ However, submakes are still eligible for parallel execution.
+ * The --debug option has changed: it now allows optional flags
+ controlling the amount and type of debugging output. By default only
+ a minimal amount information is generated, displaying the names of
+ "normal" targets (not makefiles) were deemed out of date and in need
+ of being rebuilt.
+
+ Note that the -d option behaves as before: it takes no arguments and
+ all debugging information is generated.
+ * The `-p' (print database) output now includes filename and linenumber
+ information for variable definitions, to help debugging.
+ * The wordlist function no longer reverses its arguments if the "start"
+ value is greater than the "end" value. If that's true, nothing is
+ returned.
+ * Hartmut Becker provided many updates for the VMS port of GNU make.
+ See the readme.vms file for more details.
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 28 Apr 2000 17:37:53 -0500
+
+make (3.78.1-8) frozen unstable; urgency=low
+
+ * Use absolute links when related links would not work, for the
+ /usr/doc/ symlink.
+ * Added a dependency on fileutiles >=4.0, since the package would fail
+ to install with older fileutils.
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 28 Mar 2000 01:58:05 -0600
+
+make (3.78.1-7) frozen unstable; urgency=low
+
+ * Fixed security fix to match upstream changes. Fixed an upgrade bug when
+ /usr/doc happens to be a symlink, and does not point to
+ /usr/share/doc. A couple of people were bitten by this.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 28 Feb 2000 22:27:05 -0600
+
+make (3.78.1-6) frozen unstable; urgency=high
+
+ * Use mkstemp where available. This fixes a security bug in make.
+ The bug report does not seem to have made its way into the bts yet.
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 11 Feb 2000 18:07:20 -0600
+
+make (3.78.1-5) frozen unstable; urgency=low
+
+ * The postinst was vulnerable to being affected by symlinks (if, for
+ some reason, the prerm failed). This has happended for latex2html; and
+ created a grave bug.
+ * There was a bug in the postinst in a case statement, that caused
+ installation to fail for certain situations.
+ * Also fixed an lintian warning
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 8 Feb 2000 15:46:36 -0600
+
+make (3.78.1-4) frozen unstable; urgency=low
+
+ * Added a glibc fix to dir.c (the bug expressed itself as a wildards
+ bug). Thaks go to Richard B. Kreckel for spotting the bug, and to
+ Andreas Jaeger and Joel Klecker for the solution. Forwarded fix upstream.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 7 Feb 2000 01:18:30 -0600
+
+make (3.78.1-3) unstable; urgency=low
+
+ * Release to fold in NMU fixed bugs. closes: Bug#47686, #47362, #49137, #49381
+ * Changed the root check to look for uid 0, not the username root (think
+ sashroot or toor)
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 3 Feb 2000 02:06:06 -0600
+
+Old Changelog:
+
+make (3.78.1-1.1) unstable; urgency=low
+
+ * Non maintainer upload.
+ * Changed debian/docentry to point to /usr/share/doc instead of
+ /usr/doc (closes: #47686, #47362, #49137, #49381).
+
+ -- Torsten Landschoff <torsten@debian.org> Sun, 21 Nov 1999 01:30:56 +0100
+
+make (3.78.1-2) unstable; urgency=low
+
+ * Updated to the latest version. closes: Bug#46902
+ * New upstream deleted mention of where to find info files (/usr/info/
+ or /usr/share/info). closes: Bug#49886
+ * Fix location where the man page is installed. closes: Bug#47736
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 1 Dec 1999 11:34:17 -0600
+
+make (3.78.1-1.1) unstable; urgency=low
+
+ * Non maintainer upload.
+ * Changed debian/docentry to point to /usr/share/doc instead of
+ /usr/doc (closes: #47686, #47362, #49137, #49381).
+
+ -- Torsten Landschoff <torsten@debian.org> Sun, 21 Nov 1999 01:30:56 +0100
+
+make (3.78.1-1) unstable; urgency=low
+
+ * New upstream release, which fixes a number of problems.
+ * Moved to the FHS
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 11 Oct 1999 22:11:03 -0500
+
+make (3.77-7) unstable; urgency=low
+
+ * Added patch from the author to correct ?= behaviour. closes: 37526
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 13 May 1999 23:21:59 -0500
+
+make (3.77-6) unstable; urgency=low
+
+ * Added support fro doc base. closes: Bug#31184
+ * Upgraded all maintainer scripts to my latest standards
+ * Upgraded to the latest standards version (no changes were required)
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 27 Feb 1999 22:39:29 -0600
+
+make (3.77-5) unstable; urgency=low
+
+ * Fixed a minor typo in documentation. fixes: BUG#31506
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 25 Jan 1999 16:55:00 -0600
+
+make (3.77-4) frozen unstable; urgency=medium
+
+ * Somehow, aclocal.m4 got unpatched, and created a dependency on
+ libelf. Reapplied patch. This should now not create a spurious
+ dependency on libelfg0 even if the gremlins cause automake to be run
+ to recreate configure. closes: BUG#29135
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 7 Nov 1998 23:29:40 -0600
+
+make (3.77-3) frozen unstable; urgency=high
+
+ * Appled more patches to fix the glob problem with the new glibc. patch
+ provided by Christopher C Chimelis <chris@classnet.med.miami.edu>.
+ closes: BUG#28723, BUG#28724
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 3 Nov 1998 17:47:55 -0600
+
+make (3.77-2) unstable; urgency=low
+
+ * Applied patch to correct glob problems that make has with glibc
+ 2.0.9x. I had to additionally patch aclocal.m4 in ./glob/ in order to
+ compile. Seems to work OK on i386. closes: BUG#26785
+ * Removed icon=none from the menuentry for the documentation. This
+ saitsfies lintian.
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 23 Sep 1998 14:32:08 -0500
+
+make (3.77-1) unstable; urgency=low
+
+ * New upstream version. Excerpted changes:
+ * Implement BSD make's "?=" variable assignment operator. The variable
+ is assigned the specified value only if that variable is not already
+ defined.
+ * Make defines a new variable, "CURDIR", to contain the current working
+ directory (after the -C option, if any, has been processed).
+ Modifying this variable has no effect on the operation of make.
+ * Make defines a new default RCS rule, for new-style master file
+ storage: ``% :: RCS/%'' (note no ``,v'' suffix).
+
+ Make defines new default rules for DOS-style C++ file naming
+ conventions, with ``.cpp'' suffixes. All the same rules as for
+ ``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and
+ COMPILE.cpp macros (which default to the same value as LINK.cc and
+ COMPILE.cc). Note CPPFLAGS is still C preprocessor flags! You should
+ use CXXFLAGS to change C++ compiler flags.
+ * A new feature, "target-specific variable values", has been added.
+ This is a large change so please see the appropriate sections of the
+ manual for full details. Briefly, syntax like this:
+
+ TARGET: VARIABLE = VALUE
+
+ defines VARIABLE as VALUE within the context of TARGET. This is
+ similar to SunOS make's "TARGET := VARIABLE = VALUE" feature. Note
+ that the assignment may be of any type, not just recursive, and that
+ the override keyword is available.
+
+ COMPATIBILITY: This new syntax means that if you have any rules where
+ the first or second dependency has an equal sign (=) in its name,
+ you'll have to escape them with a backslash: "foo : bar\=baz".
+ Further, if you have any dependencies which already contain "\=",
+ you'll have to escape both of them: "foo : bar\\\=baz".
+ * A new appendix listing the most common error and warning messages
+ generated by GNU make, with some explanation, has been added to the
+ GNU make User's Manual.
+ * Updates to the GNU make Customs library support (see README.customs).
+ * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
+ and to the DOS port from Eli Zaretski (see README.DOS).
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 31 Jul 1998 10:30:43 -0500
+
+make (3.76.1-8) unstable; urgency=low
+
+ * Move info page removal to prerm as per policy.
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 25 Feb 1998 17:38:10 -0600
+
+make (3.76.1-7) unstable; urgency=low
+
+ * Mentioned the fact that the GPL is available on the filesystem in the
+ copyright file.
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 13 Feb 1998 13:16:58 -0600
+
+make (3.76.1-6) unstable; urgency=low
+
+ * Fixed the old fsf version in the copyright file.
+ * Read the new policy document. I think make complies with 2.4.0.0, so
+ it has been upgraded.
+ * That fixes all the problems reported by lintian.
+
+ -- Manoj Srivastava <srivasta@debian.org> Mon, 9 Feb 1998 13:07:56 -0600
+
+make (3.76.1-5) unstable; urgency=low
+
+ * Give a changed info dir descriotion, so that a simple "info make" does
+ the right thing. closes:Bug#14879.
+
+ -- Manoj Srivastava <srivasta@debian.org> Sun, 16 Nov 1997 00:50:22 -0600
+
+make (3.76.1-4) unstable; urgency=low
+
+ * Make sure the copyright file is not compressed.
+ closes:Bug#14426,Bug#14427
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 5 Nov 1997 11:53:03 -0600
+
+make (3.76.1-3) unstable; urgency=low
+
+ * With Stellar help from Stephen Zander <srz@mckesson.com>, changed the
+ aclocal.m4 file (already present in the upstream sources) to override
+ the function that checks for libelf. This should now not create a
+ spurious dependency on libelfg0 even if the gremlins cause automake to
+ be run to recreate configure.
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 29 Oct 1997 14:22:37 -0600
+
+make (3.76.1-2) unstable; urgency=low
+
+ * Removed dependency on libelf by convincinf configure that unlike
+ Solaris, Linux does not need an explicit -lelf (again).
+
+ -- Manoj Srivastava <srivasta@debian.org> Sat, 25 Oct 1997 02:24:13 -0500
+
+make (3.76.1-1) unstable; urgency=low
+
+ * Small (but serious) bug fix. main.c (main): Arg count should be int,
+ not char! Major braino.
+ * changes to upstream Makefiles
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 3 Oct 1997 11:53:45 -0500
+
+make (3.76-1) unstable; urgency=low
+
+ * New upstream update. Changes:
+ * GNU make now uses automake to control Makefile.in generation. This
+ should make it more consistent with the GNU standards.
+ * VPATH functionality has been changed to incorporate the VPATH+ patch,
+ previously maintained by Paul Smith <psmith@baynetworks.com>. See the
+ manual.
+ * Make defines a new variable, `MAKECMDGOALS', to contain the goals that
+ were specified on the command line, if any. Modifying this variable
+ has no effect on the operation of make.
+ * A new function, `$(wordlist S,E,TEXT)', is available: it returns a
+ list of words from number S to number E (inclusive) of TEXT.
+ * Instead of an error, detection of future modification times gives a
+ warning and continues. The warning is repeated just before GNU make
+ exits, so it is less likely to be lost.
+ * Fix the $(basename) and $(suffix) functions so they only operate on
+ the last filename, not the entire string:
+ Command Old Result New Result
+ ------- ---------- ----------
+ $(basename a.b) a a
+ $(basename a.b/c) a a.b/c
+ $(suffix a.b) b b
+ $(suffix a.b/c) b/c <empty>
+ * The $(strip) function now removes newlines as well as TABs and spaces.
+ * The $(shell) function now changes CRLF (\r\n) pairs to a space as well
+ as newlines (\n).
+ * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32).
+ * Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS
+ and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler
+ and utilities. See README.DOS for details, and direct all questions
+ concerning this port to Eli Zaretskii <eliz@is.elta.co.il> or DJ
+ Delorie <dj@delorie.com>.
+ * John W. Eaton has updated the VMS port to support libraries and VPATH.
+ * Make sure that the manual pages are installed.
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 16 Sep 1997 23:23:27 -0500
+
+make (3.75-6) unstable; urgency=low
+
+ * Built with libc6
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 16 May 1997 11:07:17 -0500
+
+make (3.75-5) unstable; urgency=low
+
+ * Improved postinst/postrm scripts
+ * Added menu entry for the HTML files provided by make-doc
+ * Added documentation package make-doc
+
+ -- Manoj Srivastava <srivasta@debian.org> Wed, 7 May 1997 18:17:47 -0501
+
+make (3.75-4) unstable; urgency=low
+
+ * Removed HTML files because of size considerations. This fixes Bug#7867.
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 6 Mar 1997 14:34:00 -0600
+
+make (3.75-3) unstable; urgency=low
+
+ * Added more documents to the /usr/doc/make directory.
+ * Added dww index
+ * Added HTML documentation to /usr/doc/make
+ * Removed dependency on libelf by convincinf configure that unlike
+ Solaris, Linux does not need an explicit -lelf. This fixes Bug#7807
+
+ -- Manoj Srivastava <srivasta@debian.org> Tue, 4 Mar 1997 10:36:14 -0600
+
+make (3.75-2) unstable; urgency=low
+
+ * Moved to standards version 2.1.2.2
+ * Removed extra root checks
+ * Added error messages to failed root check
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 13 Feb 1997 14:52:36 -0600
+
+make (3.75-1) unstable; urgency=low
+
+ * Use dpkg-shlibdep instead of hardcoding the dependency in the control
+ file.
+
+ -- Manoj Srivastava <srivasta@debian.org> Fri, 8 Nov 1996 14:42:11 -0600
+
+make (3.75-0) unstable; urgency=low
+
+ * Changed to the new format.
+ * New upstream version
+
+ -- Manoj Srivastava <srivasta@debian.org> Thu, 7 Nov 1996 17:42:34 -0600
+
+make (3.74-12) unstable; urgency=low
+ * Added patch to job.c to allow make to exec scripts which do not
+ have the #! magic as the first line. This fixed Bug#1149
+ * Added architecture header in control
+ * added section header
+ * merged the package revision header into the revision header.
+ * cleaned up the debian.rules.
+ * added the Changelog.
+ * Fixed the description field not to include multiple contiguous
+ spaces
+
+ -- Manoj Srivastava <srivasta@debian.org>
diff --git a/debian/clean b/debian/clean
new file mode 100644
index 00000000..e490acca
--- /dev/null
+++ b/debian/clean
@@ -0,0 +1,52 @@
+INSTALL
+Makefile
+build.sh
+config.h
+config.h.in
+config.log
+config.status
+config/Makefile
+config/codeset.m4
+config/compile
+config/config.guess
+config/config.sub
+config/depcomp
+config/fcntl-o.m4
+config/glibc2.m4
+config/glibc21.m4
+config/install-sh
+config/intdiv0.m4
+config/intl.m4
+config/intldir.m4
+config/intmax.m4
+config/inttypes-pri.m4
+config/inttypes_h.m4
+config/lcmessage.m4
+config/lock.m4
+config/longlong.m4
+config/missing
+config/printf-posix.m4
+config/size_max.m4
+config/stdint_h.m4
+config/threadlib.m4
+config/uintmax_t.m4
+config/visibility.m4
+config/wchar_t.m4
+config/wint_t.m4
+config/xsize.m4
+debian/autoreconf.after
+debian/autoreconf.before
+debian/build-make-guile/
+debian/build-make/
+debian/files
+debian/make.debhelper.log
+debian/make.substvars
+debian/make/
+glob/Makefile
+loadavg
+make
+po/Makefile
+po/Makevars.template
+po/POTFILES
+stamp-h1
+w32/Makefile
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 00000000..ec635144
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 00000000..b4cd992a
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,50 @@
+Source: make-dfsg
+VCS-Git: https://anonscm.debian.org/git/users/srivasta/debian/make-dfsg.git
+VCS-Browser: http://anonscm.debian.org/gitweb/?p=users/srivasta/debian/make-dfsg.git
+Section: devel
+Priority: optional
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Standards-Version: 3.9.7
+Homepage: http://www.gnu.org/software/make/
+Build-Depends: gettext, po-debconf, debhelper (>= 9.0.0), dh-autoreconf,
+ autoconf, automake | automaken, autopoint, file, pkg-config,
+ guile-2.0-dev, procps, libbsd-resource-perl <!nocheck>
+
+Package: make
+Suggests: make-doc
+Conflicts: make-guile
+Architecture: any
+Priority: optional
+Replaces: make-guile
+Multi-Arch: allowed
+Description: utility for directing compilation
+ GNU Make is a utility which controls the generation of executables
+ and other target files of a program from the program's source
+ files. It determines automatically which pieces of a large program
+ need to be (re)created, and issues the commands to (re)create
+ them. Make can be used to organize any task in which targets (files)
+ are to be automatically updated based on input files whenever the
+ corresponding input is newer --- it is not limited to building
+ computer programs. Indeed, Make is a general purpose dependency
+ solver.
+Depends: ${shlibs:Depends}, ${misc:Depends}
+
+Package: make-guile
+Suggests: make-doc
+Priority: extra
+Conflicts: make
+Provides: make
+Replaces: make
+Architecture: any
+Multi-Arch: allowed
+Description: utility for directing compilation with guile support
+ GNU Make is a utility which controls the generation of executables
+ and other target files of a program from the program's source
+ files. It determines automatically which pieces of a large program
+ need to be (re)created, and issues the commands to (re)create
+ them. Make can be used to organize any task in which targets (files)
+ are to be automatically updated based on input files whenever the
+ corresponding input is newer --- it is not limited to building
+ computer programs. Indeed, Make is a general purpose dependency
+ solver. This variant has built in guile support
+Depends: ${shlibs:Depends}, ${misc:Depends}
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 00000000..9cca08d9
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,45 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: make
+Upstream-Contact: help-make@gnu.org
+Sources: git://git.savannah.gnu.org/make.git
+Comment: This is the Debian GNU/Linux prepackaged version of GNU Make. GNU Make
+ was written by Richard Stallman and Roland McGrath. This package was put
+ together by Ian Murdock <imurdock@debian.org>
+ Changes:
+ * added Debian GNU/Linux package maintenance system files
+ * Pared down the package to just the documentation bits, and some
+ build infrastructure.
+ Parts of the GNU Make build structure remain in this package.
+
+Files: *
+Copyright: 1988-2014 Free Software Foundation, Inc.
+ GNU Make is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3 of the License, or (at your option) any later
+ version.
+ .
+ GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+License: GPL-3+
+
+Files: debian/*
+Copyright: 1997-2009, 2014-2016 Manoj Srivastava <srivasta@debian.org>
+License: GPL-3+
+
+License: GPL-3+
+ This package is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License can be found in "/usr/share/common-licenses/GPL-3".
diff --git a/debian/make-first-existing-target b/debian/make-first-existing-target
new file mode 100644
index 00000000..f061cf4d
--- /dev/null
+++ b/debian/make-first-existing-target
@@ -0,0 +1,205 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Getopt::Long;
+use IPC::Open3;
+use Carp;
+
+our $VERSION = 1.0;
+
+sub usage {
+ print STDERR 'usage: make-first-existing-target [-c cmd] '
+ . "target1 [target2 ...] -- [make-options]\n"
+ or croak "Could not print: $!";
+ exit 1;
+} ## end sub usage
+
+my ( @targets, @makeopts );
+my $makecmd = 'make';
+
+getopt();
+
+# Observe make's stderr on a non-existing target.
+my $dummy_target = 'make-first-existing-target-dummy-nonexistant-target';
+my $dummy_result = observe_dummy();
+
+foreach my $target (@targets) {
+ make( $target, $dummy_result );
+}
+error("*** No rules to make targets: @targets");
+
+sub make {
+
+ # Runs make on a target, passing stdout, and observing stderr
+ # to see if it is similar to that observed when running the dummy
+ # target.
+ # Only returns if the target appears not to exist.
+ my $target = shift;
+
+ # make's stderr will vary from dummy by target name
+ my @dummy = map { s/$dummy_target/$target/msxg; $_ } split /\n/msx, shift;
+
+ my $same = 1;
+ my @stderr_buf;
+ my $code = make_stderr(
+ $target,
+ sub {
+ chomp;
+ if ( @dummy && $_ eq $dummy[0] ) {
+ push @stderr_buf, "$_\n";
+ shift @dummy;
+ }
+ else {
+ print STDERR @stderr_buf or croak "Could not print: $!";
+ print STDERR "$_\n" or croak "Could not print: $!";
+ $same = 0;
+ @stderr_buf = @dummy = ();
+ } ## end else [ if ( @dummy && $_ eq $dummy...)]
+ }
+ );
+
+ if ( !$same || @dummy ) {
+ print @stderr_buf or croak "Could not print: $!";
+ exit exitcode();
+ }
+} ## end sub make
+
+sub observe_dummy {
+ my $stderr = q{};
+ my $code = make_stderr( $dummy_target, sub { $stderr .= shift }, 1 );
+
+ if ( $code != 2 || !length $stderr ) {
+
+ # Could loop and try another target, but in the unlikely
+ # case the dummpy target exists, we don't know what it did,
+ # so best to treat this as a failure.
+ error("unexpected result running $dummy_target: $stderr");
+ } ## end if ( $code != 2 || !length...)
+
+ return $stderr;
+} ## end sub observe_dummy
+
+sub make_stderr {
+
+ # Runs make on a target, passing each line of stderr to a callback
+ # function. Returns make's exit code.
+ my $target = shift;
+ my $callback = shift;
+ my $silent = shift;
+
+ # Normally open3 will close the stdin filehandle when done.
+ # But we want to call it repeatedly until one target successfully
+ # runs; and that target should be able to read from stdin.
+ # So, make a dup filehandle, in order to leave stdin open.
+ open( MAKEIN, "<&STDIN" ) || die "$!";
+
+ if ( !$silent ) {
+ open( MAKEOUT, ">&STDOUT" ) || die "$!";
+ }
+ else {
+ open( MAKEOUT, ">/dev/null" ) || die "$!";
+ }
+
+ my $pid = open3( '<&MAKEIN', '>&MAKEOUT', \*MAKEERR,
+ $makecmd, @makeopts, $target );
+ while (<MAKEERR>) {
+ $callback->($_);
+ }
+ waitpid( $pid, 0 );
+ close MAKEIN;
+ close MAKEOUT;
+ return exitcode();
+} ## end sub make_stderr
+
+sub exitcode {
+ my $code = $? >> 8;
+ if ( !$code && $? ) {
+ $code = $?;
+ }
+ return $code;
+} ## end sub exitcode
+
+sub error {
+ print STDERR "make-first-existing-target: @_\n";
+ exit 2;
+}
+
+sub getopt {
+ GetOptions(
+ "h|help" => \&usage,
+ "c=s" => \$makecmd,
+ ) || usage();
+
+ # remainder are targets, possibly followed by makeopts
+ my $end = 0;
+ foreach my $a (@ARGV) {
+ if ( $end || $a =~ /^-/ ) {
+ $end = 1;
+ push @makeopts, $a;
+ }
+ else {
+ push @targets, $a;
+ }
+ } ## end foreach my $a (@ARGV)
+
+ @targets || usage();
+} ## end sub getopt
+
+__END__
+
+=head1 NAME
+
+make-first-existing-target - runs make on one of several targets
+
+=head1 SYNOPSIS
+
+make-first-existing-target [-c cmd] target1 [target2 ...] -- [make-options]
+
+=cut
+
+=head1 DESCRIPTION
+
+The design of L<make(1)> causes difficulty when you know that a Makefile
+probably has one of several standardized target names, and want build
+machinery to run exactly one of them, propagating any errors. L<make(1)>
+will exit 2 if a target does not exist, but an existing target may also
+exit 2 due to some other failure. Makefiles cannot be reliably parsed
+to find targets by anything less turing complete than make; and make itself
+does not provide a way to enumerate the targets in a Makefile. It may not
+even be possible to enumerate the targets in a Makefile without executing
+part of it. (Proof of this is left as an exercise for the reader.)
+
+This program avoids the problems described above, by attempting to call
+each specified target in turn, until it observes make actually doing
+something for one of them.
+
+=head1 OPTIONS
+
+=over 4
+
+=item -c cmd
+
+This can be used to specify the make command to run. Default is "make".
+
+=back
+
+=cut
+
+=head1 EXIT STATUS
+
+The exit status is 0 if at least one target existed and was successfully
+run, and nonzero otherwise.
+
+=head1 AUTHOR
+
+Joey Hess <joey@kitenet.net>
+
+=head1 LICENSE
+
+Same as GNU make.
+
+=head1 SEE ALSO
+
+L<make(1)>
+
+=cut
diff --git a/debian/make-first-existing-target.1 b/debian/make-first-existing-target.1
new file mode 100644
index 00000000..60505410
--- /dev/null
+++ b/debian/make-first-existing-target.1
@@ -0,0 +1,178 @@
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+. if \nF \{
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "MAKE-FIRST-EXISTING-TARGET 1"
+.TH MAKE-FIRST-EXISTING-TARGET 1 "2014-05-13" "perl v5.18.2" "User Contributed Perl Documentation"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+make\-first\-existing\-target \- runs make on one of several targets
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+make-first-existing-target [\-c cmd] target1 [target2 ...] \*(-- [make\-options]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The design of \fImake\fR\|(1) causes difficulty when you know that a Makefile
+probably has one of several standardized target names, and want build
+machinery to run exactly one of them, propagating any errors. \fImake\fR\|(1)
+will exit 2 if a target does not exist, but an existing target may also
+exit 2 due to some other failure. Makefiles cannot be reliably parsed
+to find targets by anything less Turing-complete than make, and make itself
+does not provide a way to enumerate the targets in a Makefile. It may not
+even be possible to enumerate the targets in a Makefile without executing
+part of it. (Proof of this is left as an exercise for the reader.)
+.PP
+This program avoids the problems described above, by attempting to call
+each specified target in turn, until it observes make actually doing
+something for one of them.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\-c cmd" 4
+.IX Item "-c cmd"
+This can be used to specify the make command to run. Default is \*(L"make\*(R".
+.SH "EXIT STATUS"
+.IX Header "EXIT STATUS"
+The exit status is 0 if at least one target existed and was successfully
+run, and nonzero otherwise.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Joey Hess <joey@kitenet.net>
+.SH "LICENSE"
+.IX Header "LICENSE"
+Same as \s-1GNU\s0 make.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fImake\fR\|(1)
diff --git a/debian/make-guile.docs b/debian/make-guile.docs
new file mode 100644
index 00000000..e8597cea
--- /dev/null
+++ b/debian/make-guile.docs
@@ -0,0 +1,8 @@
+README
+README.customs
+NEWS
+ABOUT-NLS
+AUTHORS
+debian/Explanations
+debian/NEWS.Debian
+debian/README.Debian-Source
diff --git a/debian/make-guile.install b/debian/make-guile.install
new file mode 100644
index 00000000..9d496ea9
--- /dev/null
+++ b/debian/make-guile.install
@@ -0,0 +1 @@
+debian/make-first-existing-target /usr/bin
diff --git a/debian/make-guile.manpages b/debian/make-guile.manpages
new file mode 100644
index 00000000..5c3be8d3
--- /dev/null
+++ b/debian/make-guile.manpages
@@ -0,0 +1,2 @@
+make.1
+debian/make-first-existing-target.1
diff --git a/debian/make.docs b/debian/make.docs
new file mode 100644
index 00000000..e8597cea
--- /dev/null
+++ b/debian/make.docs
@@ -0,0 +1,8 @@
+README
+README.customs
+NEWS
+ABOUT-NLS
+AUTHORS
+debian/Explanations
+debian/NEWS.Debian
+debian/README.Debian-Source
diff --git a/debian/make.install b/debian/make.install
new file mode 100644
index 00000000..9d496ea9
--- /dev/null
+++ b/debian/make.install
@@ -0,0 +1 @@
+debian/make-first-existing-target /usr/bin
diff --git a/debian/make.manpages b/debian/make.manpages
new file mode 100644
index 00000000..5c3be8d3
--- /dev/null
+++ b/debian/make.manpages
@@ -0,0 +1,2 @@
+make.1
+debian/make-first-existing-target.1
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000..9361af4c
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,64 @@
+#!/usr/bin/make -f
+# Uncomment this to turn on verbose mode.
+# export DH_VERBOSE=1
+package:=make
+SRCTOP:= $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
+INSTALL = install
+ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
+ INSTALL_PROGRAM += -s
+endif
+install_file = $(INSTALL) -p -o root -g root -m 644
+install_program = $(INSTALL) -p -o root -g root -m 755
+install_script = $(INSTALL) -p -o root -g root -m 755
+make_directory = $(INSTALL) -p -d -o root -g root -m 755
+PREFIX=/usr
+BUILDDIR_NORMAL = $(SRCTOP)/debian/build-make
+BUILDDIR_GUILE = $(SRCTOP)/debian/build-make-guile
+
+DPKG_ARCH := dpkg-architecture
+export DEB_HOST_MULTIARCH := $(shell $(DPKG_ARCH) $(ha) -qDEB_HOST_MULTIARCH)
+
+%:
+ dh $@ --parallel --with autoreconf
+
+override_dh_auto_configure:
+ifneq (,$(filter make-guile, $(shell dh_listpackages)))
+ mkdir -p $(BUILDDIR_GUILE)
+ ac_cv_lib_util_getloadavg=no dh_auto_configure --parallel \
+ -B$(BUILDDIR_GUILE) -- --prefix=$(PREFIX) $(confflags) \
+ --with-guile
+endif
+ifneq (,$(filter make, $(shell dh_listpackages)))
+ mkdir -p $(BUILDDIR_NORMAL)
+ ac_cv_lib_util_getloadavg=no dh_auto_configure --parallel \
+ -B$(BUILDDIR_NORMAL) -- --prefix=$(PREFIX) $(confflags) \
+ --with-guile=no
+endif
+
+override_dh_auto_build:
+ifneq (,$(filter make-guile, $(shell dh_listpackages)))
+ dh_auto_build --parallel -B$(BUILDDIR_GUILE)
+endif
+ifneq (,$(filter make, $(shell dh_listpackages)))
+ dh_auto_build --parallel -B$(BUILDDIR_NORMAL)
+endif
+
+override_dh_auto_test:
+ifneq (,$(filter make-guile, $(shell dh_listpackages)))
+ dh_auto_test --parallel -B$(BUILDDIR_GUILE)
+endif
+ifneq (,$(filter make, $(shell dh_listpackages)))
+ dh_auto_test --parallel -B$(BUILDDIR_NORMAL)
+endif
+
+override_dh_auto_install:
+ifneq (,$(filter make-guile, $(shell dh_listpackages)))
+ dh_auto_install -B$(BUILDDIR_GUILE) --destdir=debian/make-guile
+endif
+ifneq (,$(filter make, $(shell dh_listpackages)))
+ dh_auto_install -B$(BUILDDIR_NORMAL) --destdir=debian/make
+endif
+
+#Local variables:
+#mode: makefile
+#End:
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 00000000..d3827e75
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+1.0
diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc
new file mode 100644
index 00000000..7ffc8b88
--- /dev/null
+++ b/debian/upstream/signing-key.asc
@@ -0,0 +1,172 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+=FHHY
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 00000000..80046dd4
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,5 @@
+# format version number, currently 3; this line is compulsory!
+version=3
+
+opts=pgpsigurlmangle=s/$/.sig/ \
+ ftp://ftp.gnu.org/pub/gnu/make/make-(.*)\.tar\.gz
diff --git a/dir.c b/dir.c
index 7e00b8f7..6b8881f1 100644
--- a/dir.c
+++ b/dir.c
@@ -748,8 +748,11 @@ file_exists_p (const char *name)
const char *slash;
#ifndef NO_ARCHIVES
- if (ar_name (name))
- return ar_member_date (name) != (time_t) -1;
+ {
+ time_t member_date;
+ if (ar_name (name))
+ return ar_member_date (name, &member_date);
+ }
#endif
#ifdef VMS
diff --git a/job.c b/job.c
index 29892490..39966f67 100644
--- a/job.c
+++ b/job.c
@@ -27,6 +27,14 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include <string.h>
+#if defined (HAVE_LINUX_BINFMTS_H) && defined (HAVE_SYS_USER_H)
+#include <sys/user.h>
+#include <linux/binfmts.h>
+#endif
+#ifndef PAGE_SIZE
+# define PAGE_SIZE (sysconf(_SC_PAGESIZE))
+#endif
+
/* Default shell to use. */
#ifdef WINDOWS32
#include <windows.h>
@@ -824,8 +832,6 @@ reap_children (int block, int err)
break;
}
- child_failed = exit_sig != 0 || exit_code != 0;
-
/* Search for a child matching the deceased one. */
lastc = 0;
for (c = children; c != 0; lastc = c, c = c->next)
@@ -837,6 +843,15 @@ reap_children (int block, int err)
Ignore it; it was inherited from our invoker. */
continue;
+ /* Determine the failure status: 0 for success, 1 for updating target in
+ question mode, 2 for anything else. */
+ if (exit_sig == 0 && exit_code == 0)
+ child_failed = MAKE_SUCCESS;
+ else if (exit_sig == 0 && exit_code == 1 && question_flag && c->recursive)
+ child_failed = MAKE_TROUBLE;
+ else
+ child_failed = MAKE_FAILURE;
+
DB (DB_JOBS, (child_failed
? _("Reaping losing child %p PID %s %s\n")
: _("Reaping winning child %p PID %s %s\n"),
@@ -872,10 +887,10 @@ reap_children (int block, int err)
delete non-precious targets, and abort. */
static int delete_on_error = -1;
- if (!dontcare)
+ if (!dontcare && child_failed == MAKE_FAILURE)
child_error (c, exit_code, exit_sig, coredump, 0);
- c->file->update_status = us_failed;
+ c->file->update_status = child_failed == MAKE_FAILURE ? us_failed : us_question;
if (delete_on_error == -1)
{
struct file *f = lookup_file (".DELETE_ON_ERROR");
@@ -987,7 +1002,7 @@ reap_children (int block, int err)
if (!err && child_failed && !dontcare && !keep_going_flag &&
/* fatal_error_signal will die with the right signal. */
!handling_fatal_signal)
- die (MAKE_FAILURE);
+ die (child_failed);
/* Only block for one child. */
block = 0;
@@ -1189,14 +1204,15 @@ start_job_command (struct child *child)
++p;
}
+ child->recursive = ((flags & COMMANDS_RECURSE) != 0);
+
/* Update the file's command flags with any new ones we found. We only
keep the COMMANDS_RECURSE setting. Even this isn't 100% correct; we are
now marking more commands recursive than should be in the case of
multiline define/endef scripts where only one line is marked "+". In
order to really fix this, we'll have to keep a lines_flags for every
actual line, after expansion. */
- child->file->cmds->lines_flags[child->command_line - 1]
- |= flags & COMMANDS_RECURSE;
+ child->file->cmds->lines_flags[child->command_line - 1] |= flags & COMMANDS_RECURSE;
/* POSIX requires that a recipe prefix after a backslash-newline should
be ignored. Remove it now so the output is correct. */
@@ -3115,6 +3131,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
#ifdef WINDOWS32
char *command_ptr = NULL; /* used for batch_mode_shell mode */
#endif
+ char *args_ptr;
# ifdef __EMX__ /* is this necessary? */
if (!unixy_shell && shellflags)
@@ -3280,8 +3297,17 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
return new_argv;
}
+#ifdef MAX_ARG_STRLEN
+ static char eval_line[] = "eval\\ \\\"set\\ x\\;\\ shift\\;\\ ";
+#define ARG_NUMBER_DIGITS 5
+#define EVAL_LEN (sizeof(eval_line)-1 + shell_len + 4 \
+ + (7 + ARG_NUMBER_DIGITS) * 2 * line_len / (MAX_ARG_STRLEN - 2))
+#else
+#define EVAL_LEN 0
+#endif
+
new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1
- + (line_len*2) + 1);
+ + (line_len*2) + 1 + EVAL_LEN);
ap = new_line;
/* Copy SHELL, escaping any characters special to the shell. If
we don't escape them, construct_command_argv_internal will
@@ -3301,6 +3327,30 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
#ifdef WINDOWS32
command_ptr = ap;
#endif
+
+#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN)
+ if (unixy_shell && line_len > MAX_ARG_STRLEN)
+ {
+ unsigned j;
+ memcpy (ap, eval_line, sizeof (eval_line) - 1);
+ ap += sizeof (eval_line) - 1;
+ for (j = 1; j <= 2 * line_len / (MAX_ARG_STRLEN - 2); j++)
+ ap += sprintf (ap, "\\$\\{%u\\}", j);
+ *ap++ = '\\';
+ *ap++ = '"';
+ *ap++ = ' ';
+ /* Copy only the first word of SHELL to $0. */
+ for (p = shell; *p != '\0'; ++p)
+ {
+ if (isspace ((unsigned char)*p))
+ break;
+ *ap++ = *p;
+ }
+ *ap++ = ' ';
+ }
+#endif
+ args_ptr = ap;
+
for (p = line; *p != '\0'; ++p)
{
if (restp != NULL && *p == '\n')
@@ -3348,6 +3398,13 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
}
#endif
*ap++ = *p;
+#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN)
+ if (unixy_shell && line_len > MAX_ARG_STRLEN && (ap - args_ptr > MAX_ARG_STRLEN - 2))
+ {
+ *ap++ = ' ';
+ args_ptr = ap;
+ }
+#endif
}
if (ap == new_line + shell_len + sflags_len + 2)
{
diff --git a/job.h b/job.h
index 3c921bae..efd94e9b 100644
--- a/job.h
+++ b/job.h
@@ -108,6 +108,7 @@ struct child
unsigned int noerror:1; /* Nonzero if commands contained a '-'. */
unsigned int good_stdin:1; /* Nonzero if this child has a good stdin. */
unsigned int deleted:1; /* Nonzero if targets have been deleted. */
+ unsigned int recursive:1; /* Nonzero for recursive command ('+' etc.) */
unsigned int dontcare:1; /* Saved dontcare flag. */
};
diff --git a/main.c b/main.c
index 7f14cba5..897bb191 100644
--- a/main.c
+++ b/main.c
@@ -1401,13 +1401,18 @@ main (int argc, char **argv, char **envp)
#ifdef HAVE_ISATTY
if (isatty (fileno (stdout)))
if (! lookup_variable (STRING_SIZE_TUPLE ("MAKE_TERMOUT")))
- define_variable_cname ("MAKE_TERMOUT", TTYNAME (fileno (stdout)),
- o_default, 0)->export = v_export;
-
+ {
+ const char *tty = TTYNAME (fileno (stdout));
+ define_variable_cname ("MAKE_TERMOUT", tty ? tty : DEFAULT_TTYNAME,
+ o_default, 0)->export = v_export;
+ }
if (isatty (fileno (stderr)))
if (! lookup_variable (STRING_SIZE_TUPLE ("MAKE_TERMERR")))
- define_variable_cname ("MAKE_TERMERR", TTYNAME (fileno (stderr)),
- o_default, 0)->export = v_export;
+ {
+ const char *tty = TTYNAME (fileno (stderr));
+ define_variable_cname ("MAKE_TERMERR", tty ? tty : DEFAULT_TTYNAME,
+ o_default, 0)->export = v_export;
+ }
#endif
/* Reset in case the switches changed our minds. */
@@ -2418,6 +2423,11 @@ main (int argc, char **argv, char **envp)
exit (WIFEXITED(r) ? WEXITSTATUS(r) : EXIT_FAILURE);
}
#else
+#ifdef SET_STACK_SIZE
+ /* Reset limits, if necessary. */
+ if (stack_limit.rlim_cur)
+ setrlimit (RLIMIT_STACK, &stack_limit);
+#endif
exec_command ((char **)nargv, environ);
#endif
free (aargv);
diff --git a/make.1 b/make.1
index ed04db90..4192f247 100644
--- a/make.1
+++ b/make.1
@@ -192,7 +192,24 @@ If the
.B \-j
option is given without an argument,
.BR make
-will not limit the number of jobs that can run simultaneously.
+will not limit the number of jobs that can run simultaneously. When
+.BR make
+invokes a
+.BR sub-make,
+all instances of make will coordinate to run the specified number of
+jobs at a time; see the section
+.B PARALLEL MAKE AND THE JOBSERVER
+for details.
+.TP 0.5i
+\fB\--jobserver-fds\fR [\fIR,W\fR]
+Internal option
+.BR make
+uses to pass the jobserver pipe read and write file descriptor numbers
+to
+.BR sub-makes;
+see the section
+.B PARALLEL MAKE AND THE JOBSERVER
+for details
.TP 0.5i
\fB\-k\fR, \fB\-\-keep\-going\fR
Continue as much as possible after an error.
@@ -355,6 +372,68 @@ programs are properly installed at your site, the command
.B info make
.PP
should give you access to the complete manual.
+.SH "PARALLEL MAKE AND THE JOBSERVER"
+Using the
+.I -j
+option, the user can instruct
+.BR make
+to execute tasks in parallel. By specifying a numeric argument to
+.I -j
+the user may specify an upper limit of the number of parallel tasks to
+be run.
+.PP
+When the build environment is such that a top level
+.BR make
+invokes
+.BR sub-makes
+(for instance, a style in which each sub-directory contains its own
+.I Makefile
+), no individual instance of
+.BR make
+knows how many tasks are running in parallel, so keeping the number of
+tasks under the upper limit would be impossible without communication
+between all the
+.BR make
+instances running. While solutions like having the top level
+.BR make
+serve as a central controller are feasible, or using other
+synchronization mechanisms like shared memory or sockets can be
+created, the current implementation uses a simple shared pipe.
+.PP
+This pipe is created by the top-level
+.BR make
+process, and passed on to all the
+.BR sub-makes.
+The top level
+.BR make process writes
+.B N-1
+one-byte tokens into the pipe (The top level
+.BR make
+is assumed to reserve one token for itself). Whenever any of the
+.BR make
+processes (including the top-level
+.BR make
+) needs to run a new task, it reads a byte from the shared pipe. If
+there are no tokens left, it must wait for a token to be written back
+to the pipe. Once the task is completed, the
+.BR make
+process writes a token back to the pipe (and thus, if the tokens had
+been exhausted, unblocking the first
+.BR make
+process that was waiting to read a token). Since only
+.B N-1
+tokens were written into the pipe, no more than
+.B N
+tasks can be running at any given time.
+.PP
+If the job to be run is not a
+.BR sub-make
+then
+.BR make
+will close the jobserver pipe file descriptors before invoking the
+commands, so that the command can not interfere with the
+.I jobserver,
+and the command does not find any unusual file descriptors.
.SH BUGS
See the chapter ``Problems and Bugs'' in
.IR "The GNU Make Manual" .
diff --git a/makeint.h b/makeint.h
index fdcae75b..6e936a8d 100644
--- a/makeint.h
+++ b/makeint.h
@@ -424,10 +424,11 @@ extern struct rlimit stack_limit;
/* The number of bytes needed to represent the largest integer as a string. */
#define INTSTR_LENGTH CSTRLEN ("18446744073709551616")
+#define DEFAULT_TTYNAME "true"
#ifdef HAVE_TTYNAME
# define TTYNAME(_f) ttyname (_f)
#else
-# define TTYNAME(_f) "true"
+# define TTYNAME(_f) DEFAULT_TTYNAME
#endif
@@ -478,7 +479,7 @@ const char *find_percent_cached (const char **);
int ar_name (const char *);
void ar_parse_name (const char *, char **, char **);
int ar_touch (const char *);
-time_t ar_member_date (const char *);
+int ar_member_date (const char *, time_t *);
typedef long int (*ar_member_func_t) (int desc, const char *mem, int truncated,
long int hdrpos, long int datapos,
diff --git a/remake.c b/remake.c
index 299a2aaf..123a2604 100644
--- a/remake.c
+++ b/remake.c
@@ -1259,6 +1259,7 @@ f_mtime (struct file *file, int search)
char *arname, *memname;
struct file *arfile;
+ int found;
time_t member_date;
/* Find the archive's name. */
@@ -1306,10 +1307,15 @@ f_mtime (struct file *file, int search)
/* The archive doesn't exist, so its members don't exist either. */
return NONEXISTENT_MTIME;
- member_date = ar_member_date (file->hname);
- mtime = (member_date == (time_t) -1
- ? NONEXISTENT_MTIME
- : file_timestamp_cons (file->hname, member_date, 0));
+ found = ar_member_date (file->hname, &member_date);
+ if (found && member_date == (time_t) 0)
+ {
+ OSS (error, NILF,
+ _("Warning: Archive '%s' seems to have been created in deterministic mode. '%s' will always be updated. Please consider passing the U flag to ar to avoid the problem."),
+ arfile->name, memname);
+
+ }
+ mtime = found ? file_timestamp_cons (file->hname, member_date, 0) : NONEXISTENT_MTIME;
}
else
#endif
@@ -1548,9 +1554,11 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
{
static const char *dirs[] =
{
+#ifdef MULTIARCH_DIRS
+ MULTIARCH_DIRS
+#endif
#ifndef _AMIGA
"/lib",
- "/usr/lib",
#endif
#if defined(WINDOWS32) && !defined(LIBDIR)
/*
@@ -1559,7 +1567,19 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
*/
#define LIBDIR "."
#endif
- LIBDIR, /* Defined by configuration. */
+ LIBDIR, /* Defined by configuration. */
+#ifndef _AMIGA
+/*
+ * In the Debian binaries, PREFIX is /usr and thus this searches /lib,
+ * /usr/lib and /usr/lib again and therefore misses any libraries that
+ * are not packaged and were installed by the site admin. The ideal
+ * behaviour would be to have the search path set by a Makefile
+ * variable (other than the VPATH blunt object) but even absent that,
+ * it would be more useful if it looked in /usr/local/lib even though
+ * make itself hasn't been installed in the /usr/local tree -- manoj
+ */
+ "/usr/local/lib",
+#endif
0
};
diff --git a/tests/scripts/features/archives b/tests/scripts/features/archives
index b0acfecb..cb799e7c 100644
--- a/tests/scripts/features/archives
+++ b/tests/scripts/features/archives
@@ -28,17 +28,17 @@ unlink('libxx.a');
# Very simple
run_make_test('all: libxx.a(a1.o)',
- '', "$ar rv libxx.a a1.o\n$created");
+ '', "$ar rvU libxx.a a1.o\n$created");
# Multiple .o's. Add a new one to the existing library
($_ = $add) =~ s/#OBJECT#/a2.o/g;
run_make_test('all: libxx.a(a1.o a2.o)',
- '', "$ar rv libxx.a a2.o\n$_");
+ '', "$ar rvU libxx.a a2.o\n$_");
# Touch one of the .o's so it's rebuilt
utouch(-40, 'a1.o');
($_ = $repl) =~ s/#OBJECT#/a1.o/g;
-run_make_test(undef, '', "$ar rv libxx.a a1.o\n$_");
+run_make_test(undef, '', "$ar rvU libxx.a a1.o\n$_");
# Use wildcards
run_make_test('all: libxx.a(*.o)',
@@ -47,21 +47,21 @@ run_make_test('all: libxx.a(*.o)',
# Touch one of the .o's so it's rebuilt
utouch(-30, 'a1.o');
($_ = $repl) =~ s/#OBJECT#/a1.o/g;
-run_make_test(undef, '', "$ar rv libxx.a a1.o\n$_");
+run_make_test(undef, '', "$ar rvU libxx.a a1.o\n$_");
# Use both wildcards and simple names
utouch(-50, 'a2.o');
($_ = $add) =~ s/#OBJECT#/a3.o/g;
-$_ .= "$ar rv libxx.a a2.o\n";
+$_ .= "$ar rvU libxx.a a2.o\n";
($_ .= $repl) =~ s/#OBJECT#/a2.o/g;
run_make_test('all: libxx.a(a3.o *.o)', '',
- "$ar rv libxx.a a3.o\n$_");
+ "$ar rvU libxx.a a3.o\n$_");
# Check whitespace handling
utouch(-40, 'a2.o');
($_ = $repl) =~ s/#OBJECT#/a2.o/g;
run_make_test('all: libxx.a( a3.o *.o )', '',
- "$ar rv libxx.a a2.o\n$_");
+ "$ar rvU libxx.a a2.o\n$_");
rmfiles(qw(a1.o a2.o a3.o libxx.a));
diff --git a/tests/scripts/misc/fopen-fail b/tests/scripts/misc/fopen-fail
index 6580e519..5f9c779f 100644
--- a/tests/scripts/misc/fopen-fail
+++ b/tests/scripts/misc/fopen-fail
@@ -10,6 +10,6 @@ $description = "Make sure make exits with an error if fopen fails.";
run_make_test(q!
include $(lastword $(MAKEFILE_LIST))
!,
- '', undef, 512);
+ '', undef, 512, 300);
1;
diff --git a/tests/scripts/options/dash-q b/tests/scripts/options/dash-q
index 194588d9..e67b55d4 100644
--- a/tests/scripts/options/dash-q
+++ b/tests/scripts/options/dash-q
@@ -74,4 +74,13 @@ build-y: build-x
',
'-q build-y', "#MAKE#: *** No rule to make target 'build-stamp-2', needed by 'build-arch'. Stop.\n", 512);
+# TEST 9 : Savannah bug # 47151
+# Make sure we exit with 1 when invoking a recursive make
+run_make_test('
+foo: bar ; echo foo
+bar: ; @$(MAKE) -f #MAKEFILE# baz
+baz: ; echo baz
+',
+ '-q foo', '', 256);
+
1;
diff --git a/tests/scripts/targets/POSIX b/tests/scripts/targets/POSIX
index a24e3bcf..1576dec9 100644
--- a/tests/scripts/targets/POSIX
+++ b/tests/scripts/targets/POSIX
@@ -31,7 +31,7 @@ all: ; \@$script
'', $out);
# Test the default value of various POSIX-specific variables
-my %POSIX = (AR => 'ar', ARFLAGS => '-rv',
+my %POSIX = (AR => 'ar', ARFLAGS => 'rvU',
YACC => 'yacc', YFLAGS => '',
LEX => 'lex', LFLAGS => '',
LDFLAGS => '',
diff --git a/tests/test_driver.pl b/tests/test_driver.pl
index 91141eb4..38c1e74a 100644
--- a/tests/test_driver.pl
+++ b/tests/test_driver.pl
@@ -30,6 +30,7 @@
# $Id$
+use BSD::Resource;
# The number of test categories we've run
$categories_run = 0;
@@ -151,6 +152,11 @@ sub toplevel
$makeENV{LC_ALL} = 'C';
+ # HACK. On Debian, ar is now compiled with determinism, which makes
+ # make tests fail. Pass in the U modifier to revert that behaviour change
+ # If ar has not been changed, this should be a no-op.
+ $makeENV{ARFLAGS} = 'rvU';
+
# Replace the environment with the new one
#
%origENV = %ENV unless $^O eq 'VMS';
@@ -542,9 +548,19 @@ sub run_all_tests
$tests_run = 0;
$tests_passed = 0;
-
+ ($nowsoft, $nowhard) = getrlimit(RLIMIT_NOFILE);
+ if ( $testname =~ m{misc/fopen-fail}msx ) {
+ $test_timeout = 300;
+ # do a best effort bit to redice the number of fds
+ $success = setrlimit( RLIMIT_NOFILE, 1024, 2048 );
+ }
# Run the test!
$code = do $perl_testname;
+ if ( $testname =~ m{misc/fopen-fail}msx ) {
+ $test_timeout = $save_timeout;
+ # do a best effort bit to redice the number of fds
+ $success = setrlimit( RLIMIT_NOFILE, $nowsoft, $nowhard );
+ }
++$categories_run;
$total_tests_run += $tests_run;