--- make-dfsg-4.2.1.orig/Makefile.am +++ make-dfsg-4.2.1/Makefile.am @@ -62,7 +62,7 @@ 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) @@ -184,7 +184,7 @@ *) test -d tests || mkdir tests; \ rm -f srctests; \ if ln -s '$(srcdir)/tests' srctests; then \ - for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \ + for f in run_make_tests run_make_tests.pl test_driver.pl scripts jhelp.pl; do \ rm -f tests/$$f; ln -s ../srctests/$$f tests; \ done; fi ;; \ esac; \ --- make-dfsg-4.2.1.orig/arscan.c +++ make-dfsg-4.2.1/arscan.c @@ -414,19 +414,18 @@ # endif #endif char *namemap = 0; + int namemap_size = 0; int desc = open (archive, O_RDONLY, 0); if (desc < 0) return -1; + #ifdef SARMAG { char buf[SARMAG]; int nread; EINTRLOOP (nread, read (desc, buf, SARMAG)); if (nread != SARMAG || memcmp (buf, ARMAG, SARMAG)) - { - (void) close (desc); - return -2; - } + goto invalid; } #else #ifdef AIAMAG @@ -434,10 +433,8 @@ int nread; EINTRLOOP (nread, read (desc, &fl_header, FL_HSZ)); if (nread != FL_HSZ) - { - (void) close (desc); - return -2; - } + goto invalid; + #ifdef AIAMAGBIG /* If this is a "big" archive, then set the flag and re-read the header into the "big" structure. */ @@ -450,27 +447,18 @@ /* seek back to beginning of archive */ EINTRLOOP (o, lseek (desc, 0, 0)); if (o < 0) - { - (void) close (desc); - return -2; - } + goto invalid; /* re-read the header into the "big" structure */ EINTRLOOP (nread, read (desc, &fl_header_big, FL_HSZ_BIG)); if (nread != FL_HSZ_BIG) - { - (void) close (desc); - return -2; - } + goto invalid; } else #endif /* Check to make sure this is a "normal" archive. */ if (memcmp (fl_header.fl_magic, AIAMAG, SAIAMAG)) - { - (void) close (desc); - return -2; - } + goto invalid; } #else { @@ -482,10 +470,7 @@ int nread; EINTRLOOP (nread, read (desc, &buf, sizeof (buf))); if (nread != sizeof (buf) || buf != ARMAG) - { - (void) close (desc); - return -2; - } + goto invalid; } #endif #endif @@ -535,13 +520,15 @@ struct ar_hdr_big member_header_big; #endif #ifdef AIAMAG - char name[256]; +# define ARNAME_MAX 255 + char name[ARNAME_MAX + 1]; int name_len; long int dateval; int uidval, gidval; long int data_offset; #else - char namebuf[sizeof member_header.ar_name + 1]; +# define ARNAME_MAX (int)sizeof(member_header.ar_name) + char namebuf[ARNAME_MAX + 1]; char *name; int is_namemap; /* Nonzero if this entry maps long names. */ int long_name = 0; @@ -553,10 +540,7 @@ EINTRLOOP (o, lseek (desc, member_offset, 0)); if (o < 0) - { - (void) close (desc); - return -2; - } + goto invalid; #ifdef AIAMAG #define AR_MEMHDR_SZ(x) (sizeof(x) - sizeof (x._ar_name)) @@ -568,21 +552,17 @@ AR_MEMHDR_SZ(member_header_big))); if (nread != AR_MEMHDR_SZ(member_header_big)) - { - (void) close (desc); - return -2; - } + goto invalid; sscanf (member_header_big.ar_namlen, "%4d", &name_len); - EINTRLOOP (nread, read (desc, name, name_len)); + if (name_len < 1 || name_len > ARNAME_MAX) + goto invalid; + EINTRLOOP (nread, read (desc, name, name_len)); if (nread != name_len) - { - (void) close (desc); - return -2; - } + goto invalid; - name[name_len] = 0; + name[name_len] = '\0'; sscanf (member_header_big.ar_date, "%12ld", &dateval); sscanf (member_header_big.ar_uid, "%12d", &uidval); @@ -600,21 +580,17 @@ AR_MEMHDR_SZ(member_header))); if (nread != AR_MEMHDR_SZ(member_header)) - { - (void) close (desc); - return -2; - } + goto invalid; sscanf (member_header.ar_namlen, "%4d", &name_len); - EINTRLOOP (nread, read (desc, name, name_len)); + if (name_len < 1 || name_len > ARNAME_MAX) + goto invalid; + EINTRLOOP (nread, read (desc, name, name_len)); if (nread != name_len) - { - (void) close (desc); - return -2; - } + goto invalid; - name[name_len] = 0; + name[name_len] = '\0'; sscanf (member_header.ar_date, "%12ld", &dateval); sscanf (member_header.ar_uid, "%12d", &uidval); @@ -656,10 +632,7 @@ ) #endif ) - { - (void) close (desc); - return -2; - } + goto invalid; name = namebuf; memcpy (name, member_header.ar_name, sizeof member_header.ar_name); @@ -679,6 +652,7 @@ is_namemap = (!strcmp (name, "//") || !strcmp (name, "ARFILENAMES/")); #endif /* Not AIAMAG. */ + /* On some systems, there is a slash after each member name. */ if (*p == '/') *p = '\0'; @@ -693,23 +667,33 @@ && (name[0] == ' ' || name[0] == '/') && namemap != 0) { - name = namemap + atoi (name + 1); + int name_off = atoi (name + 1); + int name_len; + + if (name_off < 0 || name_off >= namemap_size) + goto invalid; + + name = namemap + name_off; + name_len = strlen (name); + if (name_len < 1) + goto invalid; long_name = 1; } else if (name[0] == '#' && name[1] == '1' && name[2] == '/') { - int namesize = atoi (name + 3); + int name_len = atoi (name + 3); + + if (name_len < 1 || name_len > INT_MAX) + goto invalid; - name = alloca (namesize + 1); - EINTRLOOP (nread, read (desc, name, namesize)); - if (nread != namesize) - { - close (desc); - return -2; - } - name[namesize] = '\0'; + name = alloca (name_len + 1); + EINTRLOOP (nread, read (desc, name, name_len)); + if (nread != name_len) + goto invalid; + + name[name_len] = '\0'; long_name = 1; } @@ -759,10 +743,7 @@ sscanf (member_header.ar_nxtmem, "%12ld", &member_offset); if (lseek (desc, member_offset, 0) != member_offset) - { - (void) close (desc); - return -2; - } + goto invalid; #else /* If this member maps archive names, we must read it in. The @@ -773,13 +754,13 @@ char *clear; char *limit; - namemap = alloca (eltsize); + if (eltsize > INT_MAX) + goto invalid; + namemap = alloca (eltsize + 1); EINTRLOOP (nread, read (desc, namemap, eltsize)); if (nread != eltsize) - { - (void) close (desc); - return -2; - } + goto invalid; + namemap_size = eltsize; /* The names are separated by newlines. Some formats have a trailing slash. Null terminate the strings for @@ -794,6 +775,7 @@ clear[-1] = '\0'; } } + *limit = '\0'; is_namemap = 0; } @@ -807,6 +789,10 @@ close (desc); return 0; + + invalid: + close (desc); + return -2; } #endif /* !VMS */ --- make-dfsg-4.2.1.orig/configure.ac +++ make-dfsg-4.2.1/configure.ac @@ -132,7 +132,7 @@ [Define to 1 if you have a standard gettimeofday function]) ]) -AC_CHECK_FUNCS([strdup strndup mkstemp mktemp fdopen fileno \ +AC_CHECK_FUNCS([strdup strndup umask mkstemp mktemp fdopen fileno \ dup dup2 getcwd realpath sigsetmask sigaction \ getgroups seteuid setegid setlinebuf setreuid setregid \ getrlimit setrlimit setvbuf pipe strerror strsignal \ @@ -168,8 +168,8 @@ # comes with it's own PC file so we have to specify them as individual # packages. Ugh. AS_IF([test "x$with_guile" != xno], -[ PKG_CHECK_MODULES([GUILE], [guile-2.0], [have_guile=yes], - [PKG_CHECK_MODULES([GUILE], [guile-1.8], [have_guile=yes], +[ PKG_CHECK_MODULES([GUILE], [guile-3.0], [have_guile=yes], + [PKG_CHECK_MODULES([GUILE], [guile-2.2], [have_guile=yes], [have_guile=no])]) ]) @@ -399,10 +399,9 @@ #include #include -#define GLOB_INTERFACE_VERSION 1 #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 # include -# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION +# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 gnu glob # endif #endif], --- make-dfsg-4.2.1.orig/debian/Explanations +++ make-dfsg-4.2.1/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 + + +GNU make _must_ assume that 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 --- make-dfsg-4.2.1.orig/debian/NEWS.Debian +++ make-dfsg-4.2.1/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 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 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 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 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 + 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 Fri, 9 Dec 2005 21:28:14 -0600 --- make-dfsg-4.2.1.orig/debian/README.Debian-Source +++ make-dfsg-4.2.1/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. --- make-dfsg-4.2.1.orig/debian/changelog +++ make-dfsg-4.2.1/debian/changelog @@ -0,0 +1,1246 @@ +make-dfsg (4.2.1-1.3) unstable; urgency=medium + + * Non-maintainer upload. + * Build against guile-3.0; drop 1.8 and 2.0. (Closes: 885213) + + -- Rob Browning Fri, 24 Apr 2020 20:02:33 -0500 + +make-dfsg (4.2.1-1.3~1.gbpe4407c) UNRELEASED; urgency=medium + + ** SNAPSHOT build @e4407cc53d66f2b594143ee73167cc64eac69ebe ** + + * Non-maintainer upload. + * UNRELEASED + + -- Rob Browning Fri, 24 Apr 2020 19:15:55 -0500 + +make-dfsg (4.2.1-1.2) unstable; urgency=medium + + * Non-maintainer upload. + * Fix validation of long names in archives (regression in 4.2.1-1.1) + (Closes: #904749) + + -- Ben Hutchings Sat, 28 Jul 2018 18:07:31 +0800 + +make-dfsg (4.2.1-1.1) unstable; urgency=medium + + * Non-maintainer upload + * Resolve issues discovered by static code analysis. + * Fix potential hangs (Closes: #890309): + - [SV 51159] Use a non-blocking read with pselect to avoid hangs. + - [SV 51400] Only unblock fatal signals after child invocation + - Treat -Otarget and -Orecurse as -Oline, to avoid a hang + * Fix FTBFS with glibc 2.7, thanks to Aurelien Jarno (Closes: #891365): + - glob: Do not assume glibc glob internals. + - configure.ac: Support GLIBC glob interface version 2 + * Restore old behaviour of -j in MAKEFLAGS variable (Closes: #890430): + - main.c (main): [SV 48274] Allow -j in makefile MAKEFLAGS variable. + - tests/scripts/features/output-sync: Revert bad change in 0c5a9f9b92a + - Makefile.am: Add jhelp.pl to remote test setup. + * make-guile: Add version to Provides field (Closes: #891702) + * debian/control: Update Vcs-{Browser,Git} fields to point to Salsa + * debian/control, debian/copyright: Update URLs to use HTTP-S + * debian/rules: Add -Wall to CFLAGS + + -- Ben Hutchings Wed, 11 Jul 2018 07:38:22 +0100 + +make-dfsg (4.2.1-1) unstable; urgency=medium + + * New Upsrteam release. + * New variable: $(.SHELLSTATUS) is set to the exit status of the last != or + $(shell ...) function invoked in this instance of make. This will be "0" if + successful or not "0" if not successful. The variable value is unset if no + != or $(shell ...) function has been invoked. + * The $(file ...) function can now read from a file with $(file + * The interface to GNU make's "jobserver" is stable as documented in the + manual, for tools which may want to access it. + WARNING: Backward-incompatibility! The internal-only command line option + --jobserver-fds has been renamed for publishing, to --jobserver-auth. + * The amount of parallelism can be determined by querying MAKEFLAGS, even when + the job server is enabled (previously MAKEFLAGS would always contain only + "-j", with no number, when job server was enabled). + * Bug fix: "SIGSEGVs on long parameter", thanks to Marcos Dione (Closes: + #858647). + + -- Manoj Srivastava Mon, 12 Feb 2018 16:36:45 -0800 + +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 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 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 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 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 + * Bug fix: "make-dfsg has unsatisfiable cross build dependendencies in a + bootstrap setting: libbsd-resource-perl", thanks to Helmut Grohne + (Closes: #812725). + + -- Manoj Srivastava 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 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 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 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 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 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 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 Юрий Матронов . 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 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 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 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 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' test for + make targets". Fixed by above. (Closes: #746443). + + -- Manoj Srivastava 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 "Multi-Arch: foreign" + declaration", thanks to Helmut Grohne (Closes: #693926). + * Bug fix: "make 3.82 breaks kernel module build: 'mixed implicit + and normal rules' 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: ""Make is a HUGE memory hog"", thanks to Matthias + Klose (Closes: #342726). + + -- Manoj Srivastava Mon, 28 Apr 2014 23:57:19 -0700 + +make-dfsg (4.0-1) experimental; urgency=low + + * New upstream release + + -- Manoj Srivastava 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 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 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 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 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 'override' logic for variables", + thanks to Ron (Closes: #524378). + + -- Manoj Srivastava 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 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 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 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 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 Wed, 3 May 2006 21:49:55 -0500 + +make-dfsg (3.81-1) unstable; urgency=low + + * New upstream release + + -- Manoj Srivastava 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 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 ' 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 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 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 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 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 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 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 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 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 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 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 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 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 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 for + noticing this, and providing a patch, though the patch was not used + for this version. closes: Bug#210881 + + -- Manoj Srivastava 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 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 . + + * 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 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 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 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 Tue, 23 Apr 2002 09:02:17 -0500 + +make (3.79.1-13) unstable; urgency=low + + * Incorporate a patch from "Paul D. Smith" that fixes + the problem in expansion of target specific variables. closes: Bug#132646 + + -- Manoj Srivastava 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 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 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 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 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 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 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 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 Wed, 4 Jul 2001 20:36:22 -0500 + +make (3.79.1-6) unstable; urgency=low + + * Added a fix from "Paul D. Smith" that fixes a problem + with make not echoing commands correctly. closes: Bug#72802 + + -- Manoj Srivastava 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 . + closes: BUG#28723, BUG#28724 + + -- Manoj Srivastava 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 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 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 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 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 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 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 Wed, 5 Nov 1997 11:53:03 -0600 + +make (3.76.1-3) unstable; urgency=low + + * With Stellar help from Stephen Zander , 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 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 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 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 . 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 + * 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 or DJ + Delorie . + * John W. Eaton has updated the VMS port to support libraries and VPATH. + * Make sure that the manual pages are installed. + + -- Manoj Srivastava Tue, 16 Sep 1997 23:23:27 -0500 + +make (3.75-6) unstable; urgency=low + + * Built with libc6 + + -- Manoj Srivastava 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 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 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 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 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 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 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 --- make-dfsg-4.2.1.orig/debian/clean +++ make-dfsg-4.2.1/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 --- make-dfsg-4.2.1.orig/debian/compat +++ make-dfsg-4.2.1/debian/compat @@ -0,0 +1 @@ +9 --- make-dfsg-4.2.1.orig/debian/control +++ make-dfsg-4.2.1/debian/control @@ -0,0 +1,50 @@ +Source: make-dfsg +VCS-Git: https://salsa.debian.org/srivasta/make-dfsg.git +VCS-Browser: https://salsa.debian.org/srivasta/make-dfsg +Section: devel +Priority: optional +Maintainer: Manoj Srivastava +Standards-Version: 4.1.3 +Homepage: https://www.gnu.org/software/make/ +Build-Depends: gettext, po-debconf, debhelper (>= 9.0.0), dh-autoreconf, + autoconf, automake | automaken, autopoint, file, pkg-config, + guile-3.0-dev, procps, libbsd-resource-perl + +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 (= ${source:Version}) +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} --- make-dfsg-4.2.1.orig/debian/copyright +++ make-dfsg-4.2.1/debian/copyright @@ -0,0 +1,45 @@ +Format: https://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 + 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 +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 . + . + On Debian systems, the complete text of the GNU General + Public License can be found in "/usr/share/common-licenses/GPL-3". --- make-dfsg-4.2.1.orig/debian/make-first-existing-target +++ make-dfsg-4.2.1/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 () { + $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 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 +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 + +=head1 LICENSE + +Same as GNU make. + +=head1 SEE ALSO + +L + +=cut --- make-dfsg-4.2.1.orig/debian/make-first-existing-target.1 +++ make-dfsg-4.2.1/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 +.SH "LICENSE" +.IX Header "LICENSE" +Same as \s-1GNU\s0 make. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fImake\fR\|(1) --- make-dfsg-4.2.1.orig/debian/make-guile.docs +++ make-dfsg-4.2.1/debian/make-guile.docs @@ -0,0 +1,8 @@ +README +README.customs +NEWS +ABOUT-NLS +AUTHORS +debian/Explanations +debian/NEWS.Debian +debian/README.Debian-Source --- make-dfsg-4.2.1.orig/debian/make-guile.install +++ make-dfsg-4.2.1/debian/make-guile.install @@ -0,0 +1 @@ +debian/make-first-existing-target /usr/bin --- make-dfsg-4.2.1.orig/debian/make-guile.manpages +++ make-dfsg-4.2.1/debian/make-guile.manpages @@ -0,0 +1,2 @@ +make.1 +debian/make-first-existing-target.1 --- make-dfsg-4.2.1.orig/debian/make.docs +++ make-dfsg-4.2.1/debian/make.docs @@ -0,0 +1,8 @@ +README +README.customs +NEWS +ABOUT-NLS +AUTHORS +debian/Explanations +debian/NEWS.Debian +debian/README.Debian-Source --- make-dfsg-4.2.1.orig/debian/make.install +++ make-dfsg-4.2.1/debian/make.install @@ -0,0 +1 @@ +debian/make-first-existing-target /usr/bin --- make-dfsg-4.2.1.orig/debian/make.manpages +++ make-dfsg-4.2.1/debian/make.manpages @@ -0,0 +1,2 @@ +make.1 +debian/make-first-existing-target.1 --- make-dfsg-4.2.1.orig/debian/rules +++ make-dfsg-4.2.1/debian/rules @@ -0,0 +1,66 @@ +#!/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) + +export DEB_CFLAGS_APPEND=-Wall + +%: + 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: --- make-dfsg-4.2.1.orig/debian/source/format +++ make-dfsg-4.2.1/debian/source/format @@ -0,0 +1 @@ +1.0 --- make-dfsg-4.2.1.orig/debian/upstream/signing-key.asc +++ make-dfsg-4.2.1/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----- --- make-dfsg-4.2.1.orig/debian/watch +++ make-dfsg-4.2.1/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 --- make-dfsg-4.2.1.orig/dir.c +++ make-dfsg-4.2.1/dir.c @@ -1299,15 +1299,40 @@ } #endif +/* Similarly for lstat. */ +#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS) +# ifndef VMS +# ifndef HAVE_SYS_STAT_H +int lstat (const char *path, struct stat *sbuf); +# endif +# else + /* We are done with the fake lstat. Go back to the real lstat */ +# ifdef lstat +# undef lstat +# endif +# endif +# define local_lstat lstat +#elif defined(WINDOWS32) +/* Windows doesn't support lstat(). */ +# define local_lstat local_stat +#else +static int +local_lstat (const char *path, struct stat *buf) +{ + int e; + EINTRLOOP (e, lstat (path, buf)); + return e; +} +#endif + void dir_setup_glob (glob_t *gl) { gl->gl_opendir = open_dirstream; gl->gl_readdir = read_dirstream; gl->gl_closedir = free; + gl->gl_lstat = local_lstat; gl->gl_stat = local_stat; - /* We don't bother setting gl_lstat, since glob never calls it. - The slot is only there for compatibility with 4.4 BSD. */ } void --- make-dfsg-4.2.1.orig/function.c +++ make-dfsg-4.2.1/function.c @@ -1120,6 +1120,7 @@ len += strlen (*argvp) + 2; p = msg = alloca (len + 1); + msg[0] = '\0'; for (argvp=argv; argvp[1] != 0; ++argvp) { --- make-dfsg-4.2.1.orig/job.c +++ make-dfsg-4.2.1/job.c @@ -461,6 +461,62 @@ return 0; } +#ifdef POSIX +extern sigset_t fatal_signal_set; + +static void +block_sigs () +{ + sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0); +} + +static void +unblock_sigs () +{ + sigprocmask (SIG_UNBLOCK, &fatal_signal_set, (sigset_t *) 0); +} + +void +unblock_all_sigs () +{ + sigset_t empty; + sigemptyset (&empty); + sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0); +} + +#elif defined(HAVE_SIGSETMASK) + +extern int fatal_signal_mask; + +static void +block_sigs () +{ + sigblock (fatal_signal_mask); +} + +static void +unblock_sigs () +{ + sigsetmask (siggetmask (0) & ~fatal_signal_mask) +} + +void +unblock_all_sigs () +{ + sigsetmask (0); +} + +#else + +#define block_sigs() +#define unblock_sigs() + +void +unblock_all_sigs () +{ +} + +#endif /* Write an error message describing the exit status given in EXIT_CODE, EXIT_SIG, and COREDUMP, for the target TARGET_NAME. @@ -1031,32 +1087,6 @@ free (child); } -#ifdef POSIX -extern sigset_t fatal_signal_set; -#endif - -void -block_sigs (void) -{ -#ifdef POSIX - (void) sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0); -#else -# ifdef HAVE_SIGSETMASK - (void) sigblock (fatal_signal_mask); -# endif -#endif -} - -#ifdef POSIX -void -unblock_sigs (void) -{ - sigset_t empty; - sigemptyset (&empty); - sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0); -} -#endif - /* Start a job to run the commands specified in CHILD. CHILD is updated to reflect the commands and ID of the child process. @@ -2138,7 +2168,7 @@ return pid; /* We are the child. */ - unblock_sigs (); + unblock_all_sigs (); #ifdef SET_STACK_SIZE /* Reset limits, if necessary. */ @@ -2148,7 +2178,7 @@ /* For any redirected FD, dup2() it to the standard FD. They are all marked close-on-exec already. */ - if (fdin != FD_STDIN) + if (fdin >= 0 && fdin != FD_STDIN) EINTRLOOP (r, dup2 (fdin, FD_STDIN)); if (fdout != FD_STDOUT) EINTRLOOP (r, dup2 (fdout, FD_STDOUT)); --- make-dfsg-4.2.1.orig/job.h +++ make-dfsg-4.2.1/job.h @@ -142,18 +142,7 @@ void exec_command (char **argv, char **envp) __attribute__ ((noreturn)); #endif -extern unsigned int job_slots_used; - -void block_sigs (void); -#ifdef POSIX -void unblock_sigs (void); -#else -#ifdef HAVE_SIGSETMASK -extern int fatal_signal_mask; -#define unblock_sigs() sigsetmask (0) -#else -#define unblock_sigs() -#endif -#endif +void unblock_all_sigs (void); +extern unsigned int job_slots_used; extern unsigned int jobserver_tokens; --- make-dfsg-4.2.1.orig/main.c +++ make-dfsg-4.2.1/main.c @@ -590,12 +590,10 @@ /* Mask of signals that are being caught with fatal_error_signal. */ -#ifdef POSIX +#if defined(POSIX) sigset_t fatal_signal_set; -#else -# ifdef HAVE_SIGSETMASK +#elif defined(HAVE_SIGSETMASK) int fatal_signal_mask; -# endif #endif #if !HAVE_DECL_BSD_SIGNAL && !defined bsd_signal @@ -797,10 +795,15 @@ output_sync = OUTPUT_SYNC_NONE; else if (streq (output_sync_option, "line")) output_sync = OUTPUT_SYNC_LINE; + /* + * benh: -Otarget and -Orecurse can currently cause make to hang + * (#890309). For now, do the best we can and treat them like + * -Oline. + */ else if (streq (output_sync_option, "target")) - output_sync = OUTPUT_SYNC_TARGET; + output_sync = OUTPUT_SYNC_LINE; else if (streq (output_sync_option, "recurse")) - output_sync = OUTPUT_SYNC_RECURSE; + output_sync = OUTPUT_SYNC_LINE; else OS (fatal, NILF, _("unknown output-sync type '%s'"), output_sync_option); @@ -1482,7 +1485,7 @@ || output_sync == OUTPUT_SYNC_TARGET); OUTPUT_SET (&make_sync); - /* Remember the job slots set through the environment vs. command line. */ + /* Parse the command line options. Remember the job slots set this way. */ { int env_slots = arg_job_slots; arg_job_slots = INVALID_JOB_SLOTS; @@ -1609,41 +1612,38 @@ /* We may move, but until we do, here we are. */ starting_directory = current_directory; - /* Set up the job_slots value and the jobserver. This can't be usefully set - in the makefile, and we want to verify the authorization is valid before - make has a chance to start using it for something else. */ + /* Validate the arg_job_slots configuration before we define MAKEFLAGS so + users get an accurate value in their makefiles. + At this point arg_job_slots is the argv setting, if there is one, else + the MAKEFLAGS env setting, if there is one. */ if (jobserver_auth) { + /* We're a child in an existing jobserver group. */ if (argv_slots == INVALID_JOB_SLOTS) { + /* There's no -j option on the command line: check authorization. */ if (jobserver_parse_auth (jobserver_auth)) { /* Success! Use the jobserver. */ - job_slots = 0; goto job_setup_complete; } + /* Oops: we have jobserver-auth but it's invalid :(. */ O (error, NILF, _("warning: jobserver unavailable: using -j1. Add '+' to parent make rule.")); arg_job_slots = 1; } - /* The user provided a -j setting on the command line: use it. */ + /* The user provided a -j setting on the command line so use it: we're + the master make of a new jobserver group. */ else if (!restarts) - /* If restarts is >0 we already printed this message. */ - O (error, NILF, - _("warning: -jN forced in submake: disabling jobserver mode.")); + ON (error, NILF, + _("warning: -j%d forced in submake: resetting jobserver mode."), + argv_slots); - /* We failed to use our parent's jobserver. */ + /* We can't use our parent's jobserver, so reset. */ reset_jobserver (); - job_slots = (unsigned int)arg_job_slots; } - else if (arg_job_slots == INVALID_JOB_SLOTS) - /* The default is one job at a time. */ - job_slots = 1; - else - /* Use whatever was provided. */ - job_slots = (unsigned int)arg_job_slots; job_setup_complete: @@ -1999,6 +1999,9 @@ { int old_builtin_rules_flag = no_builtin_rules_flag; int old_builtin_variables_flag = no_builtin_variables_flag; + int old_arg_job_slots = arg_job_slots; + + arg_job_slots = INVALID_JOB_SLOTS; /* Decode switches again, for variables set by the makefile. */ decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS")); @@ -2011,6 +2014,24 @@ decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); #endif + /* If -j is not set in the makefile, or it was set on the command line, + reset to use the previous value. */ + if (arg_job_slots == INVALID_JOB_SLOTS || argv_slots != INVALID_JOB_SLOTS) + arg_job_slots = old_arg_job_slots; + + else if (jobserver_auth) + { + /* Makefile MAKEFLAGS set -j, but we already have a jobserver. + Make us the master of a new jobserver group. */ + if (!restarts) + ON (error, NILF, + _("warning: -j%d forced in makefile: resetting jobserver mode."), + arg_job_slots); + + /* We can't use our parent's jobserver, so reset. */ + reset_jobserver (); + } + /* Reset in case the switches changed our mind. */ syncing = (output_sync == OUTPUT_SYNC_LINE || output_sync == OUTPUT_SYNC_TARGET); @@ -2037,8 +2058,31 @@ undefine_default_variables (); } + /* Final jobserver configuration. + + If we have jobserver_auth then we are a client in an existing jobserver + group, that's already been verified OK above. If we don't have + jobserver_auth and jobserver is enabled, then start a new jobserver. + + arg_job_slots = INVALID_JOB_SLOTS if we don't want -j in MAKEFLAGS + + arg_job_slots = # of jobs of parallelism + + job_slots = 0 for no limits on jobs, or when limiting via jobserver. + + job_slots = 1 for standard non-parallel mode. + + job_slots >1 for old-style parallelism without jobservers. */ + + if (jobserver_auth) + job_slots = 0; + else if (arg_job_slots == INVALID_JOB_SLOTS) + job_slots = 1; + else + job_slots = arg_job_slots; + #if defined (__MSDOS__) || defined (__EMX__) || defined (VMS) - if (arg_job_slots != 1 + if (job_slots != 1 # ifdef __EMX__ && _osmode != OS2_MODE /* turn off -j if we are in DOS mode */ # endif @@ -2047,7 +2091,8 @@ O (error, NILF, _("Parallel jobs (-j) are not supported on this platform.")); O (error, NILF, _("Resetting to single job (-j1) mode.")); - arg_job_slots = job_slots = 1; + arg_job_slots = INVALID_JOB_SLOTS; + job_slots = 1; } #endif @@ -2169,47 +2214,43 @@ DB (DB_BASIC, (_("Updating makefiles....\n"))); - /* Remove any makefiles we don't want to try to update. - Also record the current modtimes so we can compare them later. */ + /* Remove any makefiles we don't want to try to update. Record the + current modtimes of the others so we can compare them later. */ { register struct goaldep *d, *last; last = 0; d = read_files; while (d != 0) { - struct file *f = d->file; - if (f->double_colon) - for (f = f->double_colon; f != NULL; f = f->prev) - { - if (f->deps == 0 && f->cmds != 0) - { - /* This makefile is a :: target with commands, but - no dependencies. So, it will always be remade. - This might well cause an infinite loop, so don't - try to remake it. (This will only happen if - your makefiles are written exceptionally - stupidly; but if you work for Athena, that's how - you write your makefiles.) */ - - DB (DB_VERBOSE, - (_("Makefile '%s' might loop; not remaking it.\n"), - f->name)); - - if (last == 0) - read_files = d->next; - else - last->next = d->next; - - /* Free the storage. */ - free_goaldep (d); + struct file *f; + for (f = d->file->double_colon; f != NULL; f = f->prev) + if (f->deps == 0 && f->cmds != 0) + break; - d = last == 0 ? read_files : last->next; + if (f) + { + /* This makefile is a :: target with commands, but no + dependencies. So, it will always be remade. This might + well cause an infinite loop, so don't try to remake it. + (This will only happen if your makefiles are written + exceptionally stupidly; but if you work for Athena, that's + how you write your makefiles.) */ + + DB (DB_VERBOSE, + (_("Makefile '%s' might loop; not remaking it.\n"), + f->name)); + + if (last) + last->next = d->next; + else + read_files = d->next; - break; - } - } + /* Free the storage. */ + free_goaldep (d); - if (f == NULL || !f->double_colon) + d = last ? last->next : read_files; + } + else { makefile_mtimes = xrealloc (makefile_mtimes, (mm_idx+1) --- make-dfsg-4.2.1.orig/make.1 +++ make-dfsg-4.2.1/make.1 @@ -192,7 +192,24 @@ .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 @@ .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" . --- make-dfsg-4.2.1.orig/makeint.h +++ make-dfsg-4.2.1/makeint.h @@ -156,11 +156,11 @@ #ifdef PATH_MAX # define GET_PATH_MAX PATH_MAX -# define PATH_VAR(var) char var[PATH_MAX] +# define PATH_VAR(var) char var[PATH_MAX+1] #else # define NEED_GET_PATH_MAX 1 # define GET_PATH_MAX (get_path_max ()) -# define PATH_VAR(var) char *var = alloca (GET_PATH_MAX) +# define PATH_VAR(var) char *var = alloca (GET_PATH_MAX+1) unsigned int get_path_max (void); #endif --- make-dfsg-4.2.1.orig/output.c +++ make-dfsg-4.2.1/output.c @@ -52,6 +52,14 @@ # define STREAM_OK(_s) 1 #endif +#if defined(HAVE_UMASK) +# define UMASK(_m) umask (_m) +# define MODE_T mode_t +#else +# define UMASK(_m) 0 +# define MODE_T int +#endif + /* Write a string to the current STDOUT or STDERR. */ static void _outputs (struct output *out, int is_err, const char *msg) @@ -160,7 +168,10 @@ #if defined(F_GETFL) && defined(F_SETFL) && defined(O_APPEND) int flags = fcntl (fd, F_GETFL, 0); if (flags >= 0) - fcntl (fd, F_SETFL, flags | O_APPEND); + { + int r; + EINTRLOOP(r, fcntl (fd, F_SETFL, flags | O_APPEND)); + } #endif } @@ -285,6 +296,7 @@ int output_tmpfd (void) { + MODE_T mask = UMASK (0077); int fd = -1; FILE *tfile = tmpfile (); @@ -300,6 +312,8 @@ set_append_mode (fd); + UMASK (mask); + return fd; } @@ -414,11 +428,15 @@ FILE * output_tmpfile (char **name, const char *template) { + FILE *file; #ifdef HAVE_FDOPEN int fd; #endif -#if defined HAVE_MKSTEMP || defined HAVE_MKTEMP + /* Preserve the current umask, and set a restrictive one for temp files. */ + MODE_T mask = UMASK (0077); + +#if defined(HAVE_MKSTEMP) || defined(HAVE_MKTEMP) # define TEMPLATE_LEN strlen (template) #else # define TEMPLATE_LEN L_tmpnam @@ -426,12 +444,13 @@ *name = xmalloc (TEMPLATE_LEN + 1); strcpy (*name, template); -#if defined HAVE_MKSTEMP && defined HAVE_FDOPEN +#if defined(HAVE_MKSTEMP) && defined(HAVE_FDOPEN) /* It's safest to use mkstemp(), if we can. */ - fd = mkstemp (*name); + EINTRLOOP (fd, mkstemp (*name)); if (fd == -1) - return 0; - return fdopen (fd, "w"); + file = NULL; + else + file = fdopen (fd, "w"); #else # ifdef HAVE_MKTEMP (void) mktemp (*name); @@ -444,12 +463,16 @@ EINTRLOOP (fd, open (*name, O_CREAT|O_EXCL|O_WRONLY, 0600)); if (fd == -1) return 0; - return fdopen (fd, "w"); + file = fdopen (fd, "w"); # else /* Not secure, but what can we do? */ - return fopen (*name, "w"); + file = fopen (*name, "w"); # endif #endif + + UMASK (mask); + + return file; } --- make-dfsg-4.2.1.orig/posixos.c +++ make-dfsg-4.2.1/posixos.c @@ -59,6 +59,24 @@ #endif } +static void +set_blocking (int fd, int blocking) +{ + // If we're not using pselect() don't change the blocking +#ifdef HAVE_PSELECT + int flags; + EINTRLOOP (flags, fcntl (fd, F_GETFL)); + if (flags >= 0) + { + int r; + flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); + EINTRLOOP (r, fcntl (fd, F_SETFL, flags)); + if (r < 0) + pfatal_with_name ("fcntl(O_NONBLOCK)"); + } +#endif +} + unsigned int jobserver_setup (int slots) { @@ -78,6 +96,9 @@ pfatal_with_name (_("init jobserver pipe")); } + /* When using pselect() we want the read to be non-blocking. */ + set_blocking (job_fds[0], 0); + return 1; } @@ -113,6 +134,9 @@ return 0; } + /* When using pselect() we want the read to be non-blocking. */ + set_blocking (job_fds[0], 0); + return 1; } @@ -161,7 +185,10 @@ { unsigned int tokens = 0; - /* Close the write side, so the read() won't hang. */ + /* Use blocking reads to wait for all outstanding jobs. */ + set_blocking (job_fds[0], 1); + + /* Close the write side, so the read() won't hang forever. */ close (job_fds[1]); job_fds[1] = -1; @@ -239,18 +266,12 @@ unsigned int jobserver_acquire (int timeout) { - sigset_t empty; - fd_set readfds; struct timespec spec; struct timespec *specp = NULL; - int r; - char intake; + sigset_t empty; sigemptyset (&empty); - FD_ZERO (&readfds); - FD_SET (job_fds[0], &readfds); - if (timeout) { /* Alarm after one second (is this too granular?) */ @@ -259,28 +280,52 @@ specp = &spec; } - r = pselect (job_fds[0]+1, &readfds, NULL, NULL, specp, &empty); - - if (r == -1) + while (1) { - /* Better be SIGCHLD. */ - if (errno != EINTR) - pfatal_with_name (_("pselect jobs pipe")); - return 0; - } + fd_set readfds; + int r; + char intake; - if (r == 0) - /* Timeout. */ - return 0; + FD_ZERO (&readfds); + FD_SET (job_fds[0], &readfds); - /* The read FD is ready: read it! */ - EINTRLOOP (r, read (job_fds[0], &intake, 1)); - if (r < 0) - pfatal_with_name (_("read jobs pipe")); + r = pselect (job_fds[0]+1, &readfds, NULL, NULL, specp, &empty); + if (r < 0) + switch (errno) + { + case EINTR: + /* SIGCHLD will show up as an EINTR. */ + return 0; + + case EBADF: + /* Someone closed the jobs pipe. + That shouldn't happen but if it does we're done. */ + O (fatal, NILF, _("job server shut down")); + + default: + pfatal_with_name (_("pselect jobs pipe")); + } + + if (r == 0) + /* Timeout. */ + return 0; - /* What does it mean if read() returns 0? It shouldn't happen because only - the master make can reap all the tokens and close the write side...?? */ - return r > 0; + /* The read FD is ready: read it! This is non-blocking. */ + EINTRLOOP (r, read (job_fds[0], &intake, 1)); + + if (r < 0) + { + /* Someone sniped our token! Try again. */ + if (errno == EAGAIN) + continue; + + pfatal_with_name (_("read jobs pipe")); + } + + /* read() should never return 0: only the master make can reap all the + tokens and close the write side...?? */ + return r > 0; + } } #else --- make-dfsg-4.2.1.orig/read.c +++ make-dfsg-4.2.1/read.c @@ -2524,7 +2524,7 @@ end = p + ebuf->size; *p = '\0'; - while (fgets (p, end - p, ebuf->fp) != 0) + while (fgets (p, (int)(end - p), ebuf->fp) != 0) { char *p2; unsigned long len; --- make-dfsg-4.2.1.orig/remake.c +++ make-dfsg-4.2.1/remake.c @@ -353,23 +353,6 @@ status = new; } - /* Process the remaining rules in the double colon chain so they're marked - considered. Start their prerequisites, too. */ - if (file->double_colon) - for (; f != 0 ; f = f->prev) - { - struct dep *d; - - f->considered = considered; - - for (d = f->deps; d != 0; d = d->next) - { - enum update_status new = update_file (d->file, depth + 1); - if (new > status) - status = new; - } - } - return status; } @@ -1510,7 +1493,7 @@ #ifndef S_ISLNK # define S_ISLNK(_m) (((_m)&S_IFMT)==S_IFLNK) #endif - if (check_symlink_flag) + if (check_symlink_flag && strlen (name) <= GET_PATH_MAX) { PATH_VAR (lpath); @@ -1585,9 +1568,11 @@ { static const char *dirs[] = { +#ifdef MULTIARCH_DIRS + MULTIARCH_DIRS +#endif #ifndef _AMIGA "/lib", - "/usr/lib", #endif #if defined(WINDOWS32) && !defined(LIBDIR) /* @@ -1596,7 +1581,19 @@ */ #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 }; --- make-dfsg-4.2.1.orig/remote-cstms.c +++ make-dfsg-4.2.1/remote-cstms.c @@ -246,7 +246,7 @@ (void) dup2 (stdin_fd, 0); /* Unblock signals in the child. */ - unblock_sigs (); + unblock_all_sigs (); /* Run the command. */ exec_command (new_argv, envp); --- make-dfsg-4.2.1.orig/tests/jhelp.pl +++ make-dfsg-4.2.1/tests/jhelp.pl @@ -0,0 +1,63 @@ +#!/usr/bin/env perl +# -*-perl-*- +# +# This script helps us test jobserver/parallelism without a lot of unreliable +# (and slow) sleep calls. Written in Perl to get portable sub-second sleep. +# +# It can run the following steps based on arguments: +# -t : maximum # of seconds the script can run; else we fail. +# Default is 4 seconds. +# -e : echo to stdout +# -f : echo to stdout AND create an (empty) file named +# -w : wait for a file named to exist + +# Force flush +$| = 1; + +my $timeout = 4; + +sub op { + my ($op, $nm) = @_; + + defined $nm or die "Missing value for $op\n"; + + if ($op eq '-e') { + print "$nm\n"; + return 1; + } + + if ($op eq '-f') { + print "$nm\n"; + open(my $fh, '>', $nm) or die "$nm: open: $!\n"; + close(my $fh); + return 1; + } + + if ($op eq '-w') { + if (-f $nm) { + return 1; + } + select(undef, undef, undef, 0.1); + return 0; + } + + if ($op eq '-t') { + $timeout = $nm; + return 1; + } + + die("Invalid command: $op $nm\n"); +} + +my $start = time(); +while (@ARGV) { + if (op($ARGV[0], $ARGV[1])) { + shift; + shift; + } + if ($start + $timeout < time()) { + die("Timeout after ".(time()-$start-1)." seconds\n"); + } +} + +exit(0); --- make-dfsg-4.2.1.orig/tests/scripts/features/jobserver +++ make-dfsg-4.2.1/tests/scripts/features/jobserver @@ -42,7 +42,7 @@ recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all all:;@echo $@: "/$(SHOW)/" !, - "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nrecurse2: /-j3 --jobserver-auth= $np/\nall: /-j3 --jobserver-auth= $np/\n"); + "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -j3 forced in submake: resetting jobserver mode.\nrecurse2: /-j3 --jobserver-auth= $np/\nall: /-j3 --jobserver-auth= $np/\n"); delete $extraENV{MAKEFLAGS}; # Test override of -jN with -j @@ -52,7 +52,7 @@ recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all all:;@echo $@: "/$(SHOW)/" !, - "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nrecurse2: /-j $np/\nall: /-j $np/\n"); + "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -j0 forced in submake: resetting jobserver mode.\nrecurse2: /-j $np/\nall: /-j $np/\n"); # Don't put --jobserver-auth into a re-exec'd MAKEFLAGS. # We can't test this directly because there's no way a makefile can @@ -76,7 +76,7 @@ # @echo 'MAKEFLAGS = $(MAKEFLAGS)' @echo 'FOO = bar' > $@ !, - "$np -j2", "#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nall\n"); + "$np -j2", "#MAKE#[1]: warning: -j2 forced in submake: resetting jobserver mode.\nall\n"); unlink('inc.mk'); --- make-dfsg-4.2.1.orig/tests/scripts/features/output-sync +++ make-dfsg-4.2.1/tests/scripts/features/output-sync @@ -122,6 +122,9 @@ EOF close(MAKEFILE); +# benh: Skip tests of -Orecurse and -Otarget which are broken +if (0) { + # Test per-make synchronization. unlink(@syncfiles); run_make_test(qq! @@ -211,6 +214,8 @@ #MAKE#: *** [#MAKEFILE#:4: make-foo-fail] Error 2\n", 512); +} + # Test the per-job synchronization. # For this we'll have bar-job: # print start, invoke bar-start, wait for foo-start, print end, print-bar-end @@ -252,7 +257,9 @@ !, '-j -Oline', "foo\nbar\n"); +if (0) { run_make_test(undef, '-j -Otarget', "foo\nbar\n"); +} # Ensure when make writes out command it's not misordered run_make_test(qq! @@ -262,7 +269,9 @@ !, '-j -Oline', "foobar\ntrue\n"); +if (0) { run_make_test(undef, '-j -Otarget', "foobar\ntrue\n"); +} # Ensure that shell functions inside recipes write stderr to the sync file run_make_test(q! @@ -270,6 +279,8 @@ !, '-w -Oline', "#MAKE#: Entering directory '#PWD#'\nfoo\n#MAKE#: Leaving directory '#PWD#'\n"); +if (0) { + # Ensure that output generated while parsing makefiles is synced # when appropriate. run_make_test(q! @@ -278,6 +289,8 @@ !, '-s -w -Otarget', "#MAKE#: Entering directory '#PWD#'\nfoo\n#MAKE#: Leaving directory '#PWD#'\n#MAKE#: Entering directory '#PWD#'\nbar\n#MAKE#: Leaving directory '#PWD#'\n"); +} + # Test recursion $m1 = get_tmpfile(); $m2 = get_tmpfile(); --- make-dfsg-4.2.1.orig/tests/scripts/features/parallelism +++ make-dfsg-4.2.1/tests/scripts/features/parallelism @@ -1,17 +1,7 @@ # -*-perl-*- $description = "Test parallelism (-j) option."; - - -$details = "This test creates a makefile with two double-colon default -rules. The first rule has a series of sleep and echo commands -intended to run in series. The second and third have just an -echo statement. When make is called in this test, it is given -the -j option with a value of 4. This tells make that it may -start up to four jobs simultaneously. In this case, since the -first command is a sleep command, the output of the second -and third commands will appear before the first if indeed -make is running all of these commands in parallel."; +$details = ""; if (!$parallel_jobs) { return -1; @@ -24,13 +14,36 @@ $sleep_command = "sleep"; } +rmfiles(qw(ONE TWO THREE FOUR)); run_make_test(" all : def_1 def_2 def_3 -def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO -def_2 : ; \@$sleep_command 2 ; echo THREE -def_3 : ; \@$sleep_command 1 ; echo FOUR", +def_1 : ; \@#PERL# jhelp.pl -f ONE -w THREE -e TWO +def_2 : ; \@#PERL# jhelp.pl -w FOUR -f THREE +def_3 : ; \@#PERL# jhelp.pl -w ONE -f FOUR", '-j4', "ONE\nFOUR\nTHREE\nTWO"); +rmfiles(qw(ONE TWO THREE FOUR)); + +# Verify -j added to MAKEFLAGS in the makefile +run_make_test(" +MAKEFLAGS += -j4 +all : def_1 def_2 def_3 +def_1 : ; \@#PERL# jhelp.pl -f ONE -w THREE -e TWO +def_2 : ; \@#PERL# jhelp.pl -w FOUR -f THREE +def_3 : ; \@#PERL# jhelp.pl -w ONE -f FOUR", + '', "ONE\nFOUR\nTHREE\nTWO"); +rmfiles(qw(ONE TWO THREE FOUR)); + +# Command line should take precedence +rmfiles(qw(ONE TWO THREE FOUR)); +run_make_test(" +MAKEFLAGS += -j2 +all : def_1 def_2 def_3 +def_1 : ; \@#PERL# jhelp.pl -f ONE -w THREE -e TWO +def_2 : ; \@#PERL# jhelp.pl -w FOUR -f THREE +def_3 : ; \@#PERL# jhelp.pl -w ONE -f FOUR", + '-j4', "ONE\nFOUR\nTHREE\nTWO"); +rmfiles(qw(ONE TWO THREE FOUR)); # Test parallelism with included files. Here we sleep/echo while # building the included files, to test that they are being built in @@ -38,12 +51,12 @@ run_make_test(" all: 1 2; \@echo success -include 1.inc 2.inc -1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 2; echo TWO' > \$\@ -2.inc: ; \@$sleep_command 1; echo THREE.inc; echo '2: ; \@$sleep_command 1; echo THREE' > \$\@", +1.inc: ; \@#PERL# jhelp.pl -f ONE.inc -w THREE.inc -f TWO.inc; echo '1: ; \@#PERL# jhelp.pl -f ONE -w THREE -f TWO' > \$\@ +2.inc: ; \@#PERL# jhelp.pl -w ONE.inc -f THREE.inc; echo '2: ; \@#PERL# jhelp.pl -w ONE -f THREE' > \$\@", "-j4", "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n", 0, 7); -rmfiles(qw(1.inc 2.inc)); +rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc)); # Test parallelism with included files--this time recurse first and make @@ -57,12 +70,12 @@ -include 1.inc 2.inc endif -1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 2; echo TWO' > \$\@ -2.inc: ; \@$sleep_command 1; echo THREE.inc; echo '2: ; \@$sleep_command 1; echo THREE' > \$\@", +1.inc: ; \@#PERL# jhelp.pl -f ONE.inc -w THREE.inc -f TWO.inc; echo '1: ; \@#PERL# jhelp.pl -f ONE -w THREE -f TWO' > \$\@ +2.inc: ; \@#PERL# jhelp.pl -w ONE.inc -f THREE.inc; echo '2: ; \@#PERL# jhelp.pl -w ONE -f THREE' > \$\@", "-j4", "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n", 0, 7); -rmfiles(qw(1.inc 2.inc)); +rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc)); # Grant Taylor reports a problem where tokens can be lost (not written back # to the pipe when they should be): this happened when there is a $(shell ...) @@ -90,21 +103,23 @@ .PHONY: all fail.1 fail.2 fail.3 ok all: fail.1 ok fail.2 fail.3 +.RECIPEPREFIX := > + fail.1 fail.2 fail.3: - \@$sleep_command \$(patsubst fail.%,%,\$\@) - \@echo Fail - \@exit 1 +> \@$sleep_command \$(patsubst fail.%,%,\$\@) +> \@echo Fail +> \@exit 1 ok: - \@$sleep_command 4 - \@echo Ok done", +> \@$sleep_command 4 +> \@echo Ok done", '-rR -j5', "Fail -#MAKE#: *** [#MAKEFILE#:8: fail.1] Error 1 +#MAKE#: *** [#MAKEFILE#:10: fail.1] Error 1 #MAKE#: *** Waiting for unfinished jobs.... Fail -#MAKE#: *** [#MAKEFILE#:8: fail.2] Error 1 +#MAKE#: *** [#MAKEFILE#:10: fail.2] Error 1 Fail -#MAKE#: *** [#MAKEFILE#:8: fail.3] Error 1 +#MAKE#: *** [#MAKEFILE#:10: fail.3] Error 1 Ok done", 512); @@ -117,13 +132,11 @@ -include foo.d -foo.d: comp - @echo building $@ +foo.d: comp ; @echo building $@ comp: mod_a.o mod_b.o; @: -mod_a.o mod_b.o: - @exit 1 +mod_a.o mod_b.o: ; @exit 1 ', '-j2', ''); @@ -148,15 +161,15 @@ run_make_test(q! things = thing1 thing2 all: $(things) -thing1:; @sleep 1; echo '$@ start'; sleep 2; echo '$@ end' -thing2:; @echo '$@ start'; sleep 2; echo '$@ end' +thing1:; @#PERL# jhelp.pl -w thing2start -f $@start -w thing2end -e $@end +thing2:; @#PERL# jhelp.pl -f $@start -w thing1start -f $@end -include inc.mk inc.mk: ; @touch $@ !, - '', "thing2 start\nthing1 start\nthing2 end\nthing1 end\n"); + '', "thing2start\nthing1start\nthing2end\nthing1end\n"); delete $extraENV{MAKEFLAGS}; -rmfiles('inc.mk'); +rmfiles(qw(inc.mk thing1start thing1end thing2start thing2end)); # Ensure intermediate/secondary files are not pruned incorrectly. # See Savannah bug #30653 @@ -211,7 +224,3 @@ # rmfiles(qw(dependfile output)); 1; - -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: