diff options
author | Paul Smith <psmith@gnu.org> | 2022-10-02 10:18:21 -0400 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2022-10-02 10:18:21 -0400 |
commit | 7296991d6c2feec34099934af75c35b5c0a47e3a (patch) | |
tree | 8d0be5d6a99ecfe900dcf64c04345f6983b0d983 /NEWS | |
parent | d51ac701227e89cbab8c88668d71198ff52f92a7 (diff) | |
download | make-git-7296991d6c2feec34099934af75c35b5c0a47e3a.tar.gz |
[SV 63098] Temporarily revert the change to pattern rule behavior
The fix for SV 12078 caused a backward-compatibility issue with some
makefiles. In order to allow users to resolve this issue, revert
that change for this release cycle: it will be reinstated in the
next release cycle. Introduce a warning if we detect that the recipe
of a multi-target pattern rule doesn't create all the targets.
* NEWS: Announce the future backward-incompatibility.
* doc/make.texi (Pattern Intro): Describe the behavior and that it
will change in the future.
* src/remake.c (check_also_make): Check for also_make targets that
were not created and generate a warning.
(update_goal_chain): Call the new function.
(check_dep): Ditto.
(update_file_1): Defer implicit rule detection until after we check
all the also_make files (as it used to be).
* tests/scripts/features/patternrules: Add tests of the new warning.
Skip the tests for SV 12078.
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 22 |
1 files changed, 16 insertions, 6 deletions
@@ -22,6 +22,16 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=109&se In the NEXT release of GNU make, support for these systems will be removed. If you want to see them continue to be supported, contact <bug-make@gnu.org>. +* WARNING: Future backward-incompatibility! + In the NEXT release of GNU make, pattern rules will implement the same + behavior change for multiple targets as explicit grouped targets, below: if + any target of the rule is needed by the build, the recipe will be invoked if + any target of the rule is missing or out of date. During testing some + makefiles were found to contain pattern rules that do not build all targets; + this can cause issues so we are delaying this change for one release cycle + to allow these makefiles to be updated. GNU make show a warning if it + detects this situation: "pattern recipe did not update peer target". + * WARNING: Backward-incompatibility! 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 @@ -32,12 +42,12 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=109&se needs to find its temporary directory before the makefiles are parsed. * WARNING: Backward-incompatibility! - Previously each target in a grouped target rule (pattern or explicit) 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 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. * WARNING: Backward-incompatibility! Previously if --no-print-directory was seen anywhere in the environment or |