From Fedora Project Wiki

GNU Make version 4.3

Summary

Rebase GNU make in Fedora 33 from make version 4.2 to make version 4.3.

Owner

Current status

Detailed Description

Make 4.3 was released on January 19th 2020. It includes many bug fixes and new features. Fedora has been carrying many patches to the 4.2 release which are included in 4.3, reducing the workload for Fedora builders.

Note that Fedora is also carrying some patches to retain compatibility with make version 3.8, as an aid to packages which needed time to adapt to make version 4. These compatibility patches will be removed in this rebase, making Fedora's make the same as other distros. Some packages may FTBFS and need help tweaking their Makefiles.

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.3
  • Other developers: Package owners relying on makefile features specific to older versions of GNU make (including compatibility patches for 3.8 we're dropping) may FTBFS and need to tweak their Makefiles.
  • Release engineering: [1] (a check of an impact with Release Engineering is needed)
  • Policies and guidelines: The policies and guidelines do not need to be updated.
  • Trademark approval: N/A (not needed for this Change)

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.3:

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

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.3 as well as any new features therein. The make 4.3 NEWS update will include more details.

Dependencies

No dependencies.

Contingency Plan

  • Contingency mechanism: Revert to make 4.2.1
  • 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.

Release Notes

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