GNU Make version 4.3
Summary
Rebase GNU make in Fedora 33 from make version 4.2 to make version 4.3.
Owner
- Name: DJ Delorie
- Email: dj@redhat.com
Current status
- Targeted release: Fedora 33
- Last updated: 2020-04-07
- FESCo ticket: #2363
- Tracker bug: #1821871
- Release notes tracker: #469
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