1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
|
make-dfsg (4.4.1-1) unstable; urgency=medium
This release has these backward-incompatible changes since 4.3:
* GNU Make now uses temporary files in more situations than previous
releases. If your build system sets TMPDIR (or TMP or TEMP on
Windows) and deletes the contents during the build, or uses
restrictive permissions, this may cause problems. You can choose an
alternative temporary directory only for use by GNU Make by setting
the new MAKE_TMPDIR environment variable before invoking make. Note
that this value CANNOT be set inside the makefile, since make needs to
find its temporary directory before the makefiles are parsed.
* Previously each target in a explicit grouped target rule was
considered individually: if the targets needed by the build were not
out of date the recipe was not run even if other targets in the group
were out of date. Now if any of the grouped targets are needed by the
build, then if any of the grouped targets are out of date the recipe
is run and all targets in the group are considered updated.
* Previously if --no-print-directory was seen anywhere in the
environment or command line it would take precedence over any
--print-directory. Now, the last setting of directory printing
options seen will be used, so a command line such as
"--no-print-directory -w" _will_ show directory entry/exits.
* Previously the order in which makefiles were remade was not explicitly
stated, but it was (roughly) the inverse of the order in which they
were processed by make. In this release, the order in which makefiles
are rebuilt is the same order in which make processed them, and this
is defined to be true in the GNU Make manual.
* Previously only simple (one-letter) options were added to the
MAKEFLAGS variable that was visible while parsing makefiles. Now, all
options are available in MAKEFLAGS. If you want to check MAKEFLAGS
for a one-letter option, expanding "$(firstword -$(MAKEFLAGS))" is a
reliable way to return the set of one-letter options which can be
examined via findstring, etc.
* Previously makefile variables marked as export were not exported to
commands started by the $(shell ...) function. Now, all exported
variables are exported to $(shell ...). If this leads to recursion
during expansion, then for backward-compatibility the value from the
original environment is used. To detect this change search for
'shell-export' in the .FEATURES variable.
* In previous releases it was not well-defined when updates to MAKEFLAGS made
inside a makefile would be visible. This release ensures they are
visible immediately, even when invoking $(shell ...) functions. Also,
command line variable assignments are now always present in MAKEFLAGS,
even when parsing makefiles.
-- Stephen Kitt <skitt@debian.org> Thu, 07 Nov 2024 18:25:26 +0100
make-dfsg (4.3-3) unstable; urgency=medium
* Fix ordering if include dirs
There has been a long standind bug where INCLUDE_DIRS /usr/include is
included twice. The more important problem is it is before the
/usr/local/include. This commit fixes the ordering. So now
/usr/local/include comes before /usr/include, which it should, but
this is a change in behaviour.
-- Manoj Srivastava <srivasta@debian.org> Fri, 05 Jun 2020 18:59:32 -0700
make-dfsg (4.3-1) unstable; urgency=medium
* WARNING: Backward-incompatibility!
Number signs (#) appearing inside a macro reference or function invocation
no longer introduce comments and should not be escaped with backslashes:
thus a call such as:
foo := $(shell echo '#')
is legal. Previously the number sign needed to be escaped, for example:
foo := $(shell echo '\#')
Now this latter will resolve to "\#". If you want to write makefiles
portable to both versions, assign the number sign to a variable:
H := \#
foo := $(shell echo '$H')
This was claimed to be fixed in 3.81, but wasn't, for some reason.
To detect this change search for 'nocomment' in the .FEATURES variable.
* WARNING: Backward-incompatibility!
Previously appending using '+=' to an empty variable would result in a value
starting with a space. Now the initial space is only added if the variable
already contains some value. Similarly, appending an empty string does not
add a trailing space.
* NOTE: Deprecated behavior.
Contrary to the documentation, suffix rules with prerequisites are being
treated BOTH as simple targets AND as pattern rules. Further, the
prerequisites are ignored by the pattern rules. POSIX specifies that in
order to be a suffix rule there can be no prerequisites defined. In this
release if POSIX mode is enabled then rules with prerequisites cannot be
suffix rules. If POSIX mode is not enabled then the previous behavior is
preserved (a pattern rule with no extra prerequisites is created) AND a
warning about this behavior is generated:
warning: ignoring prerequisites on suffix rule definition
The POSIX behavior will be adopted as the only behavior in a future release
of GNU make so please resolve any warnings.
-- Manoj Srivastava <srivasta@debian.org> Wed, 20 May 2020 13:56:50 -0700
make-dfsg (4.1-2) unstable; urgency=low
WARNING: Backward-incompatibility!
The ar program in the binutils package in Debian is now configured
with --enable-deterministic-archives. This change makes the archives
reproducible, by setting the UID, GID, and timestamp to 0. However,
when dealing with archives created with the libxx(*.o) style rules,
make needs the timestamp of the file in order to decide to update it
or not. With the current deterministic behavior of ar, the time stamp
is always 0. This has consequences, since make will fall back to always
adding each member to the archive, whether or not it is required. This
is a change in behaviour, and, for instance, it makes make fail to
build, failing 7 out of 10 archive tests.
.
Since binutils will create archive with time stamps set to 0 when
running in "deterministic" mode, make will always try to update such
members. When this is detected, make will emit a warning.
.
There is some online discussion:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798804
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798913
https://bugzilla.redhat.com/show_bug.cgi?id=1195883
-- Manoj Srivastava <srivasta@debian.org> Mon, 18 Jan 2016 16:09:19 -0800
make-dfsg (4.0-1) experimental; urgency=low
WARNING: Backward-incompatibility!
If .POSIX is specified, then make adheres to the POSIX backslash/newline
handling requirements, which introduces the following changes to the
standard backslash/newline handling in non-recipe lines:
* Any trailing space before the backslash is preserved
* Each backslash/newline (plus subsequent whitespace) is converted to a
single space
-- Manoj Srivastava <srivasta@debian.org> Sat, 12 Apr 2014 23:56:34 -0700
make-dfsg (3.82-1) experimental; urgency=low
* New upstream release. A complete list of bugs fixed in this version is
available here: http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
* WARNING: Future backward-incompatibility!
Wildcards are not documented as returning sorted values, but up to and
including this release the results have been sorted and some makefiles
are apparently depending on that. In the next release of GNU make,
for performance reasons, we may remove that sorting. If your
makefiles require sorted results from wildcard expansions, use the
$(sort ...) function to request it explicitly.
* WARNING: Backward-incompatibility!
The POSIX standard for make was changed in the 2008 version in a
fundamentally incompatible way: make is required to invoke the shell
as if the '-e' flag were provided. Because this would break many
makefiles that have been written to conform to the original text of
the standard, the default behavior of GNU make remains to invoke the
shell with simply '-c'. However, any makefile specifying the .POSIX
special target will follow the new POSIX standard and pass '-e' to the
shell. See also .SHELLFLAGS below.
* WARNING: Backward-incompatibility!
The '$?' variable now contains all prerequisites that caused the
target to be considered out of date, even if they do not exist
(previously only existing targets were provided in $?).
* WARNING: Backward-incompatibility!
As a result of parser enhancements, three backward-compatibility
issues exist: first, a prerequisite containing an "=" cannot be
escaped with a backslash any longer. You must create a variable
containing an "=" and use that variable in the prerequisite. Second,
variable names can no longer contain whitespace, unless you put the
whitespace in a variable and use the variable. Third, in previous
versions of make it was sometimes not flagged as an error for explicit
and pattern targets to appear in the same rule. Now this is always
reported as an error.
* WARNING: Backward-incompatibility!
The pattern-specific variables and pattern rules are now applied in
the shortest stem first order instead of the definition order
(variables and rules with the same stem length are still applied in
the definition order). This produces the usually-desired behavior
where more specific patterns are preferred. To detect this feature
search for 'shortest-stem' in the .FEATURES special variable.
* WARNING: Backward-incompatibility!
The library search behavior has changed to be compatible with the
standard linker behavior. Prior to this version for prerequisites
specified using the -lfoo syntax make first searched for libfoo.so in
the current directory, vpath directories, and system directories. If
that didn't yield a match, make then searched for libfoo.a in these
directories. Starting with this version make searches first for
libfoo.so and then for libfoo.a in each of these directories in order.
-- Manoj Srivastava <srivasta@debian.org> Mon, 18 Jul 2011 00:38:04 -0700
make (3.80+3.81.b3.1-1) unstable; urgency=low
* WARNING: Backward-incompatibility! (this may help CDBS users)
GNU make now implements a generic "second expansion" feature on the
prerequisites of both explicit and implicit (pattern) rules. In order
to enable this feature, the special target '.SECONDEXPANSION' must be
defined before the first target which takes advantage of it. If this
feature is enabled then after all rules have been parsed the
prerequisites are expanded again, this time with all the automatic
variables in scope. This means that in addition to using standard
SysV $$@ in prerequisites lists, you can also use complex functions
such as $$(notdir $$@) etc. This behavior applies to implicit rules,
as well, where the second expansion occurs when the rule is matched.
However, this means that you need to double-quote any "$" in your
filenames; instead of "foo: boo$$bar" you now must write "foo:
foo$$$$bar". Note that the SysV $$@ etc. feature, which used to be
available by default, is now ONLY available when the .SECONDEXPANSION
target is defined. If your makefiles take advantage of this SysV
feature you will need to update them.
* New special variables available in this release:
- .INCLUDE_DIRS: Expands to a list of directories that make searches
for included makefiles.
* New functions available in this release:
- $(info ...) prints its arguments to stdout. No makefile name or
line number info, etc. is printed.
- $(flavor ...) returns the flavor of a variable.
-- Manoj Srivastava <srivasta@debian.org> Mon, 12 Dec 2005 13:38:47 -0600
make (3.80+3.81.b3-1) unstable; urgency=low
* WARNING: Backward-incompatibility!
GNU make now implements a generic "second expansion" feature on the
prerequisites of both explicit and implicit (pattern) rules. After
all rules have been parsed the prerequisites are expanded again, this
time with all the automatic variables in scope. This means that in
addition to using standard SysV $$@ in prerequisites lists, you can
also use complex functions such as $$(notdir $$@) etc. This behavior
applies to implicit rules, as well, where the second expansion occurs
after the rule is matched. However, this means that you need to
double-quote any "$" in your filenames; instead of "foo: boo$$bar" you
now must write "foo: foo$$$$bar".
* WARNING: Backward-incompatibility!
In order to comply with POSIX, the way in which GNU make processes
backslash-newline sequences in command strings has changed. See the
GNU make manual section "Command Execution" for details.
* New command-line option: -L (--check-symlink-times). On systems that
support symbolic links, if this option is given then GNU make will use
the most recent modification time of any symbolic links that are used
to resolve target files. The default behavior remains as it always
has: use the modification time of the actual target file only.
* The "else" conditional line can now be followed by any other legal
conditional on the same line: this does not increase the depth of the
conditional nesting, so only one "endif" is required to close the
conditional.
* All pattern-specific variables that match a given target are now used
(previously only the first match was used).
* Target-specific variables can be marked as exportable using the
"export" keyword.
* In a recursive $(call ...) context, any extra arguments from the outer
call are now masked in the context of the inner call.
* Implemented a solution for the "thundering herd" problem with "-j -l".
This version of GNU make uses an algorithm suggested by Thomas Riedl
<thomas.riedl@siemens.com> to track the number of jobs started in the
last second and artificially adjust GNU make's view of the system's
load average accordingly.
* New special variables available in this release:
- .FEATURES: Contains a list of special features available in this
version of GNU make.
- .DEFAULT_GOAL: Set the name of the default goal make will
use if no goals are provided on the command line.
- MAKE_RESTARTS: If set, then this is the number of times this
instance of make has been restarted (see "How Makefiles Are Remade"
in the manual).
- New automatic variable: $| (added in 3.80, actually): contains all
the order-only prerequisites defined for the target.
* New functions available in this release:
- $(lastword ...) returns the last word in the list. This gives
identical results as $(word $(words ...) ...), but is much faster.
- $(abspath ...) returns the absolute path (all "." and ".."
directories resolved, and any duplicate "/" characters removed) for
each path provided.
- $(realpath ...) returns the canonical pathname for each path
provided. The canonical pathname is the absolute pathname, with
all symbolic links resolved as well.
- $(info ...) prints informative messages to stdout. No makefile
name or line number info, etc. is printed, just the message.
* Changes made for POSIX compatibility:
- Only touch targets (under -t) if they have at least one command.
- Setting the SHELL make variable does NOT change the value of the
SHELL environment variable given to programs invoked by make. As
an enhancement to POSIX, if you export the make variable SHELL then
it will be set in the environment, just as before.
-- Manoj Srivastava <srivasta@debian.org> Fri, 9 Dec 2005 21:28:14 -0600
|