F38 proposal: GNU Make version 4.4 (System-Wide Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://fedoraproject.org/wiki/Changes/MAKE44

This document represents a proposed Change. As part of the Changes
process, proposals are publicly announced in order to receive
community feedback. This proposal will only be implemented if approved
by the Fedora Engineering Steering Committee.


== Summary ==
Rebase GNU make in Fedora 38 from make version 4.3 to make version 4.4.

== Owner ==

* Name: [[User:djdelorie| DJ Delorie]]
* Email: dj@xxxxxxxxxx


== Detailed Description ==
Make 4.4 was released on Oct 31, 2022.  It includes many bug fixes and
new features.  Fedora has been carrying some patches to the 4.3
release which are included in 4.4, reducing the workload for Fedora
builders.


== Benefit to Fedora ==

Stay up to date with upstream GNU make, make sure we have the latest
bug fixes et al, be compatible with stock GNU make.

== Scope ==
* Proposal owners: Update to GNU make 4.4

* Other developers: Package owners relying on makefile features
specific to older versions of GNU make may FTBFS and need to tweak
their Makefiles.  A
[https://gitlab.com/fedora/packager-tools/mass-prebuild mass prebuild]
run has identified at least two (apron due to
https://savannah.gnu.org/bugs/?57778 and pcmciautils due to
https://savannah.gnu.org/bugs/?60435)

* Release engineering: [https://pagure.io/releng/issues/11161]
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
* Alignment with Objectives: n/a

== Upgrade/compatibility impact ==

Users who have local projects using GNU make, which rely on features
only available in older versions of GNU make, may need to tweak their
Makefiles before rebuilding.  Packages which were built previous to
this upgrade will not be affected.

Specific backwards incompatibilities as called out in the NEWS file
for make 4.4:

<pre>
* 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 shows 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
  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.

* WARNING: Backward-incompatibility!
  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
  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.

* WARNING: Backward-incompatibility!
  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.

* WARNING: Backward-incompatibility!
  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.

* WARNING: Backward-incompatibility!
  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.
</pre>

== How To Test ==

GNU make has its own testsuite and does not require specific hardware
or testing outside of building the RPM.

== User Experience ==

Users will get all bugfixes included in make 4.4 as well as any new
features therein.  The make 4.4 NEWS update will include more details.

== Dependencies ==

Updating GNU make does not require any other change requests to complete first.

There are 9115 packages which explicitly BuildRequires "make".  None
of those packages will require a rebuild because of this update.

== Contingency Plan ==
* Contingency mechanism: Revert to make 4.3
* Contingency deadline: Beta freeze.  If there is a mass rebuild,
preferably before then.
* Blocks release? No


== Documentation ==

GNU Make includes its own documentation.  No additional documentation
work is required.
https://www.gnu.org/software/make/manual/

== Release Notes ==

Full release notes can be found in make's NEWS file:
http://git.savannah.gnu.org/cgit/make.git/tree/NEWS


-- 
Ben Cotton
He / Him / His
Fedora Program Manager
Red Hat
TZ=America/Indiana/Indianapolis
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux