!ALWAYS |
Spezielles Ziel. Bewirkt, daß hiervon abhängige Ziele immer aktualisiert werden. |
[auto-depend] |
(Innerhalb eines Skripts) Leitet ein Autodepend-Skript ein. |
!CLEAN_STATE |
Spezielles Ziel. Löscht alle Dateien aus Buildfile.state. |
!configuration |
Beginnt eine Gruppe von bedingten Wertzuweisungen für eine bestimmte Konfiguration. Beispiel: !configuration [linux+ssl] CC=gcc CFLAGS+=-DLINUX -DOPENSSL |
!configure SEL |
Wählt eine globale Konfiguration, die für alle Ziele gilt, auf der Basis von SEL. Die Folgezeilen enthalten mögliche Konfigurationen der Form PAT: CFG. Die erste passende Zeile gilt. Beispiel: !configure $(_SYSTEM) Linux) linux FreeBSD) bsd |
!configure |
Wie zuvor, aber die Folgezeilen enthalten ein Skript, dessen Ausgabe als globale Konfiguration gilt. |
!configure [KONFIG] MUSTER ... |
Legt eine Konfiguration für die in MUSTER spezifizierten Ziele fest. %-Platzhalter in MUSTER sind erlaubt und funktionieren wie bei Regeln. Siehe Konfigurationsauswahl mit !configure. |
.define / .enddefine |
Makrodefinition. |
$(.dirfind(VERZ/)(MUSTER=ERSETZUNG)) |
Wie $(.find), aber Suche nach Verzeichnissen. |
!export VARIABLE |
Exportiert eine Yabu-Variable in das Skript-Environment. Siehe Das Environment von Skripten. |
!export VARIABLE=WERT |
Definiert eine Variable im Skript-Environment. Siehe Das Environment von Skripten. |
!export $VARIABLE |
Exportiert eine Variable aus dem Environment des Benutzers in das Skript-Environment. Siehe Das Environment von Skripten. |
$(.find(VERZ/)(MUSTER=ERSETZUNG)) |
Verzeichnis rekursiv durchsuchen und ausgewählte Dateinamen zurückgeben. |
.foreach / .endforeach |
Schleifenkonstruktion. |
$(.glob:*.c) |
Inhalt eines Verzeichnisses mit Filterregel. |
.include |
Einfügen einer Datei. |
.once ... .endonce |
Schützt einen Bereich gegen mehrfaches |
!serialize [<Kennung>] Muster ... |
Yabu versucht, die angegebenen Ziele nacheinander (nicht parallel) zu erreichen (siehe Gruppierung und Reihenfolge von Zielen). |
!settings |
Legt Programmeinstellungen fest (siehe Programmeinstellungen). |
!option |
Leitet die Deklaration aller im Buildfile benutzter Optionen ein. |
!project Verzeichnis Buildfile ... |
Definiert ein Unterprojekt. |
.variable=Wert |
Wertzuweisung an eine Präprozessor-Variable. |
VARIABLE=Wert |
Unbedingte Wertzuweisung. |
VARIABLE+=Wert |
Wert an eine Variable anhängen. |
VARIABLE?=Wert |
Wert an eine Variable anhängen, falls er nicht bereits enthalten ist. |
VARIABLE[config]=Wert |
Bedingte Wertzuweisung (konfigurationsabhängiger Wert). |
VARIABLE[config]+=Wert |
Wert konfigurationsabhängig anhängen. |
VARIABLE[config]?=Wert |
Wert konfigurationsabhängig anhängen, falls noch nicht vorhanden. |
$(.variable) |
Wert einer Präprozessor-Variable. |
$(VARIABLE) |
Wert einer Variablen. Siehe Variablen |
$(VARIABLE:*=../obj/*.o) |
Variable mit Transformationsregel. Wandelt 'abc' in '../obj/abc.obj' um. |
$(VARIABLE!:*=../obj/*.o) |
Wie zuvor, ignoriert aber nicht zum Muster passende Werte. |
$(VARIABLE?:*=../obj/*.o) |
Wie zuvor, läßt aber nicht zum Muster passende Werte unverändert. |
Yabu 1.21 (19-Jul-2009)
Ein Buildfile kann nun mehrere !configure
-Skripte oder -Schalter enthalten.
Die Ausgabe des Kontextes bei Fehlermeldungen wurde überarbeitet.
Namen von Präprozessor-Variablen können nun wiederrum Variablen enthalten.
Yabu 1.20 (19-Apr-2009)
Behandlung von automatischen Quellen verbessert
Ungültige Statusdatei verwerfen, aber nicht abbrechen
Syntax von Variablenzuweisung geändert: in
A="1 2 3"
entfernt Yabu nun die Anführungszeichen.
Yabu 1.19 (06-Mär-2009)
Einheitliche Syntax für Namen von Variablen, Makros und Optionen. Namen können jetzt beliebige Zeichen (außer Steuerzeichen und den meisten ASCII-Interpunktionszeichen) enthalten.
Fehlerkorrektur: Die Behandlung von '{' und '}' in mehrzeiligen Skripten funktioniert jetzt wie beschrieben.
Neue Syntax (mit '|') für mehrzeilige Skripte.
Fehlerkorrektur: !ALWAYS funktioniert jetzt wieder.
":?"-Syntax für Regeln, die keine vorhandene Datei überschreiben sollen.
Yabu 1.18 (22-Nov-2008)
Diverse kleinere Fehlerkorrekturen
Entsteht durch eine Variablentransformation ein leeres Element, dann entfällt auch zugehörige trennende Leerzeichen.
auto_mkdir funktioniert jetzt auch in Unterprojekten.
!serialize <...> arbeitet jetzt wie beschrieben.
Yabu 1.17 (10-Nov-2008)
Erweiterung von $(.find). Regeln beziehen sich immer auf den gesamten Pfad.
Neue Programmeinstellung use_state_file
ersetzt state_file
.
Die Option -d
ist weggefallen.
Die Variable $(_BUILDFILE) ist weggefallen.
Neue Anweisung !project
.
Yabu 1.16 (11-Okt-2008)
Erweiterte Ersetzungsmodi: "!=" und "?=".
Neue Funktion: $(.find)
Yabu 1.15 (09-Aug-2008)
Umgebungsvariable YABU_CFG_DIR bestimmt den Standardwert für -g.
Defaultwerte für Makroargumente
.include_output
übernimmt einen Teil der Funktion von .include
Syntax von .include
überarbeitet.
Fehlerausgaben von Skripten, die Yabu nicht selbst auswertet, werden auf doe Standardausgabe umgeleitet.
Yabu 1.14 (27-Jul-2008)
Neue Präprozessor-Anweisungen: .once
und .endonce
Kosmetische Korrekturen
Erweitertes .include
mit Skript zur Erzeugung fehlender Dateien.
Fehlermeldungen des Präprozessors verbessert
Debug-Modus (unvollständig)
Yabu 1.12 (22-Jun-2008)
Die Option -k
war seit 1.10 wirkungslos und funktioniert jetzt wieder.
Vereinfachte Syntax für Variablentransformationen, die nur als Filter dienen.
Statt $(VAR?:*.c=*.c)
kann man jetzt kürzer $(VAR?:*.c)
schreiben.
Fehlerkorrektur: Yabu erkennt nicht, wenn ein Skript auf einem Server beendet ist.
Abbildung von Optionen auf Variablen verändert, um Kollisionen zu reduzieren: statt $(opt) und $(grp) jetzt $(_grp) bzw. $(_grp).
Der Wert von $(_opt) ist jetzt "+", "-" oder "".
Interpretation von [-opt] bei bedingten Zuweisungen verändert. Statt "ausgeschaltet oder undefiniert" bedeutet [-opt] jetzt "ausgeschaltet".
Interpretation von '%' erfolgt nur noch in Prototypregeln, nicht mehr in gewöhnliche Regeln.
Erweiterte Syntax: !export NAME=WERT
Programmeinstellung max_warnings
ersetzt stop_on_error
Yabu 1.11 (06-Jun-2008)
Bei Abbruch wegen eines Fehlers wartet Yabu auf das Ende noch laufender Skripte.
Einige Meldungen wurden überarbeitet.
Kommunikation zwischen Yabu und Yabu-Sevrer optimiert.
Implementierung von auto_mkdir
geändert, um Fehler durch NFS-Caching zu umgehen.
Yabu 1.10 (30-Mai-2008)
$(n) ist nicht mehr auf n=0..9 beschränkt.
Transformationsregeln sind jetzt auch für $(n) und $(*) erlaubt.
Die Namen der highlight_xxx
-Einstellungen wurden geändert.
Syntax von !configure
erweitert. Damit läßt sich nun pro Ziel eine
bestimmte Konfiguration vorgeben.
Yabu 1.09 (25-Mai-2008)
-y cksum
funktioniert jetzt (wieder?)
Diverse Fehler im Yabu-Server behoben
Yabu versucht, Störungen durch das NFS-Caching zu verringern.
Fehler behoben: Yabu erreicht nicht alle Ziele, wenn die Statusdatei veraltetet Daten enthält.
Neue Anweisung !serialize
Yabu puffert die Ausgaben von Skripten und gibt sie zusammenhängend aus.
Neue Programmeinstellung: max_output_lines
.
Maximale Länge einer Zeile erhöht (auf 5000 Zeichen)
Ausgabe des Fehlerkontextes verbessert.
Yabu 1.08 (12-Mai-2008)
Ausgabe des Kontextes bei Fehlermeldungen verbessert
Neue Einstellung: parallel_build
bzw. -p/-P
YABU_TARGETS durch Option -d
ersetzt.
Yabu 1.07 (07-Mai-2008)
Fehlermeldung L14: die aufgeführten Optionen waren irreführend
Bewertung der Regeln verändert. Das neue Verfahren bevorzugt Regeln, deren Ziel möglichst viele nicht-%-Zeichen enthält.
Ziele, für die nur Regeln ohne Skript existieren, werden implizit als Alias betrachtet.
Berechnung der "Änderungszeit" für Alias-Ziele nochmals geändert.
Syntax von Options- und Variablennamen vereinheitlicht.
Ziele ohne Quellen zählen in der Statistik nicht mehr mit
Option _local
Syntaxfehler bei "!configuration [xxx]". Fehlererkennung verbessert.
Wartezeiten bei Unterbrechung (SIGINT) und Fehlern verkürzt: bereits initiierte, aber noch nicht aufgebaute Serververbindungen werden jetzt sofort beendet.
Variable $(_BUILDFILE)
Yabu 1.06 (23-Apr-2008)
Neu: !INIT
Fehlermeldungen verbessert
Neuer Algorithmus für die Bestimung der Änderungszeiten bei Alias-Zielen
Fehler bei der Formatierung von Skripten korrigiert. In bestimmten Fällen mit Einrückungen innerhalb des Skriptes konnte es vorkommen, daß das Skript verstümmelt wurde.
Yabu 1.05 (11-Apr-2008)
Neue Einstellungen: highlight_0_on
und highlight_0_off
Neue Einstellungen: highlight_s_on
und highlight_s_off
Unbekannte Einstellungen in .yaburc und yabu.cfg werden jetzt ignoriert
Skript-Echos jetzt ohne vorangestelltes ">"
Einstellung verbosity=N
in .yaburc funktioniert jetzt wie beschrieben.
Fehlermeldungen vereinfacht und (teilweise) übersetzt
Die Option -n unterbindet nicht mehr die Ausführung von Autokonfigurations- und include-Skripten.
Fehlerkorrektur bei der Behandlung von Zielgruppen
Ausgabe von Fehlermeldungen verbessert
Skriptzeilen dürfen jetzt mit '[' beginnen
Yabu gibt sich jetzt mehr Mühe, Ziele in der "natürlichen" Reihenfolge zu erreichen, d.h. in der Reihenfolge, in der sie im Buildfile auftreten.
Yabu 1.04 (04-Mär-2008)
Neue Systemvariable $(_LOCAL_CFG)
.include
: -h entfällt, dafür kann man jetzt die Ausgabe beliebiger
Kommandos einfügen.
Diverse Fehler sind korrigiert.
Yabu 1.03 (02-Mär-2008)
Default-Ziele können per YABU_TARGETS vorgegeben werden.
Diverse kleinere Korrekturen
Yabu 1.02 (27-Feb-2008)
Yabu versucht nicht mehr, automatische Quellen zu erreichen
Globales include-Verzeichnis (.include <DATEI>)
Yabu 1.01 (10-Feb-2008)
Änderungszeiten mit ns-Auflösung (für bestimmte Betriebssysteme)
Beginn der Regelausführung so früh wie möglich
Yabu 1.00 (10-Feb-2008)
Das Verhalten bei der Verschachtelung von $(n), %(VAR) und %n wurde neu definiert und ist jetzt etwas anders als zuvor.
Yabu Server
Yabu 0.98 (02-Dez-2007)
Statistik bei Programmende war falsch.
Yabu versteht jetzt, wenn mehrere Ziele durch ein Skript erzeugt werden und führt das Skript nur einmal aus.
Yabu 0.97 (19-Nov-2007)
Diverse kleinere Fehler behoben.
Bugfix: Yabu terminiert mit SIGSEGV, wenn eine Datei X mehrfach als Quelle auftritt, X breits existiert und keine Regel für X bekannt ist.
Neue Variable $(_CWD)
Systemvariablen werden exportiert
Neue Einstellung: echo_after_error
Parallele Ausführung von Skripten
Neue Syntax !configuration [a+b]
ersetzt die alte Form !configuration a+b
Variablenersetzung: Schleifenerkennung war übervorsichtig;
$(A:*=$(A:@:@=*@))
ist jetzt erlaubt
Yabu 0.93 (23-Sep-2007)
Bugfix bei V-Substitution, (Version 0.92 war defekt)
Yabu 0.92 (22-Sep-2007)
Ausgabe von Fehlermeldungen optimiert
Fehlermeldung bei Kombination von -s mit -y
Yabu 0.91 (12-Sep-2007)
Ausgabe von Fehlermeldungen optimiert
Bugfix: .configure funktionierte nicht richtig
Bugfix: Fehler beim Erzeugen von Verzeichnissen
Änderung der Semantik von $(1): Auswertung erfolgt jetzt vor der Ersetzung von Variablen
Yabu 0.9 (31-Aug-2007)
Spracheinstellung in .yaburc
Konfigurationsfreie Ziele
Fehler bei Behandlung von Bibliotheken korrigiert
.foreach: Schleifen- und innere Variablen sind jetzt wirklich lokal
Yabu 0.8 (26-Aug-2007)
Erweiterung des !settings-Mechanismus
Name der Statusdatei ist wählbar
Unterstützung von Bibliotheken
Einstellungen in ~/.yaburc
Selektive Transformationsregeln: $(VAR?:a=b)
Yabu 0.6 (19-Aug-2007)
Farbige Darstellung von Fehlermeldungen ($YABU_HIGHLIGHT).
Verzeichnisse erstellen, falls nötig.
Yabu 0.5 (05-Oct-2006)
Option -S.
!settings-Anweisung.
'#!'-Syntax bei Skripten.
Spezielle Ziele "!ALWAYS" und "!CLEAN_STATE".
Stringverarbeitung optimiert.
Anweisungen beginnen mit '!' (bessere Unterscheidung von Zielen).
Yabu 0.4 (01-Oct-2006)
Benannte Makroargumente.
Verarbeitung der Kommandozeilenoptionen verbessert.
Namen von (Phase-1-)Variablen und Makros kollidieren nicht mehr.
Strengere Behandlung von Zielen ohne Regel.
Alternative Algorithmen zur Erkennung veralteter Dateien: Zeitstempel-Id und Prüfsumme.
Yabu 0.3 (23-Sep-2006)
Neues Feature: alternative Platzhalterzeichen in Transformationsregeln.
John Graham-Cumming: "Debugging Makefiles". Dr Dobbs Journal March 2007.
Peter iller: "Recursive Make Considred Harmful". AUUGN Journal of AUUG Inc., 19(1), pp. 14-25.