# --------------------------------------------------------------------------- # build.conf - Steuerdatei fuer build.sh # # Diese Datei wird von build.sh eingelesen (gesourct). Sie enthaelt alle # Einstellungen, die frueher direkt im Skript hart kodiert bzw. per # Auskommentieren umgeschaltet wurden. # # Reihenfolge beim Laden - spaeteres ueberschreibt frueheres: # 1. die Vorgabewerte aus build.sh (set_config_defaults) # 2. diese Datei (bzw. $BUILD_CONF, falls gesetzt) # 3. build.local.conf (optional, nicht in Git) # # build.local.conf ist fuer maschinenabhaengige Einstellungen gedacht # (z. B. MAKE_J_VAL auf einem kleineren Rechner) und wird von Git ignoriert. # --------------------------------------------------------------------------- # --- Versionsbezeichner der Firmware (SBRANCH) ----------------------------- # # SBRANCH_MODE bestimmt, wie die Versionsbezeichnung gebildet wird: # # fixed SBRANCH_FIXED wird unveraendert uebernommen. Fuer Releases, # die reproduzierbar mehrfach gebaut werden sollen. # date plus die ersten 3 Zeichen des Release-Branches des # ersten Eintrags der sites-Datei, z. B. "26030610sta". # datetime , reiner Zeitstempel ohne Branch-Kuerzel. # SBRANCH_MODE="date" SBRANCH_FIXED="26030610sta" # --- Aufraeumen vor dem Build ---------------------------------------------- # # MAKECLEAN einmalig "make clean" vor dem ersten Site-Build. # GITRESET Gluon- und OpenWrt-Checkout vor dem ersten Build hart auf den # Stand des Remote-Branches zuruecksetzen. Verwirft dort lokale # Aenderungen - mit Bedacht einschalten. # MAKECLEAN=true GITRESET=true # --- Parallelitaet ---------------------------------------------------------- # # MAKE_J_VAL Anzahl paralleler make-Jobs. # 0 = automatisch: CPU-Kerne x MAKE_J_FACTOR. # MAKE_J_FACTOR Multiplikator fuer die automatische Berechnung. # MAKE_J_VAL=0 MAKE_J_FACTOR=2 # --- Gluon-Optionen --------------------------------------------------------- # # BROKEN 1 = auch als "broken" markierte Targets/Geraete bauen. # AUTOUPDATER_ENABLED Autoupdater in den Images aktivieren. # VERBOSE_BUILD true = "V=s", volles Build-Log mit allen Kommandos. # BUILD_LOG true = zusaetzlich Gluons eigene Logdateien schreiben. # GLUON_SITE_VERSION Versionsstempel der site-Konfiguration. # GLUONDEVICES Leer = alle Geraete des Targets bauen. Andernfalls # eine mit Leerzeichen getrennte Liste von Geraeten, # z. B. "avm-fritz-box-4020 tp-link-tl-wdr4300-v1". # SIGNKEY_FILE Signaturschluessel, relativ zum Verzeichnis buildkeys/. # BROKEN=1 AUTOUPDATER_ENABLED=true VERBOSE_BUILD=true BUILD_LOG=false GLUON_SITE_VERSION="$(date +%Y%m%d)" GLUONDEVICES="" SIGNKEY_FILE="untrustworthy-buildbot-signkey.priv" # --- Baureihenfolge --------------------------------------------------------- # # Die Arbeitseinheit ist immer "eine Domain x ein Target". BUILD_ORDER legt nur # fest, in welcher Reihenfolge diese Einheiten abgearbeitet werden: # # domain Erst alle Targets einer Domain, dann die naechste Domain. # Das ist das historische Verhalten. # target Erst alle Domains eines Targets, dann das naechste Target. # # Beide Reihenfolgen bauen exakt dieselben Images; nur die Reihenfolge der # make-Aufrufe unterscheidet sich. Interessant ist das, weil ein Target-Wechsel # Gluon dazu bringt, openwrt/.config neu zu schreiben, und weil bei "target" # die Build-Verzeichnisse eines Targets ueber alle Domains hinweg im # Seitencache warm bleiben. Bei 28 Targets sind das 28 statt 2408 # Target-Wechsel. Ob sich das lohnt, haengt vom Build-Host ab und laesst sich # nur messen - dafuer ist BUILD_TIMES_FILE da. # # BUILD_TIMES_FILE CSV mit einer Zeile je Bauschritt. Die Datei wird ueber # Laeufe hinweg *angehaengt*, muss also vor einem # Vergleichslauf nicht weggeraeumt werden. # # Spalten: # run_id,timestamp,epoch,build_order,phase, # template,site_code,target,seconds,note # # phase ist run_start, prepare, build, finalize oder run_end. # run_id identifiziert den Lauf, build_order steht in jeder # Zeile - ohne beides waeren zwei Laeufe in einer Datei nicht # auseinanderzuhalten. # # Robustheit gegen abgebrochene Laeufe: # - run_start haelt in note die erwartete Schrittzahl fest # (domains, targets, steps, sbranch). # - run_end wird von einem EXIT-Trap geschrieben und traegt # in note den Exit-Status (exit=0, exit=2, exit=143 ...). # - Ein Lauf ohne run_end wurde hart abgeschossen (SIGKILL, # OOM, Stromausfall) und darf nicht ausgewertet werden. # Zum Pruefen: je run_id die Zahl der build-Zeilen gegen # steps aus run_start halten. # #BUILD_ORDER="domain" BUILD_ORDER="target" BUILD_TIMES_FILE="$SANDBOX_DIR/build-times.csv" # --- Ausgabe ---------------------------------------------------------------- # # DATE_SUFFIX_FORMAT date-Formatstring fuer den Namen des Ausgabeverzeichnisses # images/images-. "+%s" ergibt einen Unix-Zeitstempel, # "+%Y%m%d-%H%M" ein lesbares Datum. # SITE_COPY_EXCLUDES Muster, die beim Kopieren der site-Konfiguration in das # Image-Verzeichnis uebersprungen werden. # DATE_SUFFIX_FORMAT="+%s" SITE_COPY_EXCLUDES=( '*.old' '*.backup' '*~' '*.nonworking' ) # --- Zu bauende Targets ----------------------------------------------------- # # Die Reihenfolge dieser Liste ist zugleich die Baureihenfolge. # # Ein Target wird deaktiviert, indem ihm ein "-" vorangestellt wird. Es bleibt # damit an seiner Position sichtbar, statt auskommentiert zu werden, und laesst # sich durch Entfernen des einen Zeichens wieder aktivieren. Hinter dem Target # kann in derselben Zeile ein Kommentar stehen, der den Grund festhaelt. # # Werden build.sh auf der Kommandozeile Targets uebergeben # ("build.sh ath79-generic ramips-mt7621"), hat das Vorrang vor # dieser Liste. Das ist fuer einzelne Testbuilds gedacht - der regulaere # Build-Umfang wird hier gepflegt. # GLUON_TARGETS=( -armsr-armv7 -armsr-armv8 ath79-generic ath79-nand ath79-mikrotik -bcm27xx-bcm2708 -bcm27xx-bcm2709 -ipq40xx-generic -ipq40xx-mikrotik -ipq806x-generic -lantiq-xrx200 -lantiq-xway mediatek-filogic mediatek-mt7622 -mpc85xx-p1010 -mpc85xx-p1020 -ramips-mt7620 ramips-mt7621 -ramips-mt76x8 -realtek-rtl838x -rockchip-armv8 -sunxi-cortexa7 x86-generic -x86-geode -x86-legacy x86-64 -bcm27xx-bcm2710 -bcm27xx-bcm2711 -mvebu-cortexa9 -ipq40xx-chromium -ipq807x-generic )