Nach fast drei Jahren Entwicklung wurde die Version 4.4 des Build-Systems GNU Make veröffentlicht. Neben Bugfixes sind in dieser neuen Version folgende Änderungen zu verzeichnen:
- Die Plattformen OS/2 (EMX), AmigaOS, Xenix und Cray wurden als veraltet erklärt. Die Unterstützung wird in der nächsten Version eingestellt.
- Die Anforderungen an die Build-Umgebung wurden erhöht. Für den Build von GNU Gnulib wird jetzt ein Compiler benötigt, der Elemente des C99-Standards unterstützt.
- Es wurde ein spezielles Build-Ziel .WAIT hinzugefügt, das es ermöglicht, den Start des Builds bestimmter Ziele aufzuschieben, bis der Build anderer Ziele abgeschlossen ist.
- Im speziellen Build-Ziel .NOTPARALLEL wurde die Möglichkeit implementiert, Vorbedingungen (Dateien, die für den Build des Ziels erforderlich sind) anzugeben, um verwandte Ziele sequenziell zu starten (als ob zwischen jeder Vorbedingung ein .WAIT eingefügt wäre).
- Ein spezielles Build-Ziel .NOTINTERMEDIATE wurde hinzugefügt, um das Verhalten im Zusammenhang mit der Verwendung von Zwischenzielen (.INTERMEDIATE) für angegebene Dateien, Dateien, die unter eine Maske fallen, oder für das gesamte Makefile zu deaktivieren.
- Die Funktion $(let …) wurde implementiert, die es ermöglicht, lokale Variablen in Benutzerfunktionen zu definieren.
- Die Funktion $(intcmp …) zur Zahlenvergleich wurde implementiert.
- Bei der Verwendung der Option „-l“ (—load-average) zur Ermittlung der Anzahl der ausgeführten Jobs werden nun die Informationen aus der Datei /proc/loadavg über die Systemlast berücksichtigt.
- Die Option „—shuffle“ wurde hinzugefügt, um die Abhängigkeiten zu mischen, was ein nichtdeterministisches Verhalten bei parallelem Build ermöglicht (z. B. für Fuzzing-Tests zur Überprüfung der korrekten Bestimmung von Abhängigkeiten im Makefile).
- Auf Systemen, die mkfifo unterstützen, wird ein neuer Interaktionsansatz mit dem Job-Server bei gleichzeitiger Ausführung von Jobs eingeführt, der auf der Verwendung von benannten Pipes basiert. Um die alte Methode mit anonymen Pipes wiederherzustellen, steht die Option „—jobserver-style=pipe“ zur Verfügung.
- Die Verwendung temporärer Dateien im Arbeitsprozess wurde erweitert (es können Probleme auftreten, wenn das Build-System ein alternatives Verzeichnis für temporäre Dateien (TMPDIR) festlegt und den Inhalt von TMPDIR während des Builds löscht).
Quelle: opennet.ru
