metux IT service

  • Schrift vergrößern
  • Standard-Schriftgröße
  • Schriftgröße verkleinern

Briegel / metux System Builder

Viele Embedded-Entwickler und Distro-Maintainer kennen das Problem: man möchte spezialisierte und optimierte Pakete oder Images erzeugen, für die gängige Distributionen und deren Build-Systeme ungeeignet sind. Meist werden für die Zielsysteme eigene Build-Scripts entwickelt, doch hier gibt es allerhand zu Beachten, so zB. die Wahl der richtigen Toolchain, individuelle Paket-Configuration, Paket-Abhängigkeiten und nicht selten müssen Pakete gepatcht werden. Dieser Aufwand wird mit dem "metux System Builder" alias "Briegel" drastisch vereinfacht.

Die Problemstellung: Configurieren, Compilieren und Paketieren für fremde Zielsysteme.

Das primäre Aufgabenfeld von "Briegel" liegt dort, wo Pakete oder auch komplette Images für ein völlig anderes Zielsystem erzeugt werden sollen, als jenes auf dem Build-Prozeß abläuft. Im Embedded-Umfeld ein alltägliches Szenario. Aber auch dann hilfreich, wenn man eine größere Menge Systeme mit verschiedensten Distributionen kofektionieren und lanfristig betreuen muß und die von den Distributionen gelieferten (Binär-)Pakete nicht zufriedenstellend sind.

Entscheidend für diese Anwendungen ist ein deterministisches Build, dh. die entstehenden Binärpakete dürfen nur von den verwendeten Paketen und deren Configuration abhängen, keinesfalls aber von Gegebenheiten des Host-Systems. Seiteneffekte zB. zu im Host-System installierten Paketen, der Compile-Reihenfolge oder ähnlichen Faktoren müssen ausgeschlossen sein !

Genereller Ausgangspunkt ist ein Crosscompiler mit SYSROOT-Umgebung. Das stellt sicher, daß immer der richtige Code für das gewünschte Zielsystem generiert wird und dabei auch nicht vesehentlich Bibliotheken aus dem Host-System (auf dem der Build-Prozeß läuft) eingabaut werden.

Hauptsächlich gilt es zu beachten:

  • Die Pakete werden einzeln, jedes für sich, in einer "sauberen" SYSROOT-Umgebung compiliert. Diese enthält jeweils exakt die für das gerade zu compilierende Paket benötigten Abhängigkeiten. Außerdem muß stehts die richtige Toolchain verwendet werden.
  • Manche Pakete müssen (uA. für SYSROOT, aber auch zur feinen Granulation von Features) noch angepaßt und deshalb vor dem Comilieren gepatch'ed werden.
  • Die Build-Configuration muß sauber und verläßlich definiert werden, sodaß nur die gewünschten Features und kein unnötiger Ballast eingabaut werden. Zudem sind die Abhängigkeiten (zB. zu importierten Bibliotheken) sauber und exakt aufgelöst werden.

Der "klassische" Weg: individuelle Buildscripts

Meist werden - gerade bei Kleinsystemen mit wenig Paketen - für jedes Zielsystem individuelle Buildscripts entwickelt, die zB. Quellen entpacken, Patches einspielen, Pakete configurieren und compilieren. Das ist jedoch auf Dauer bzw. wachsender Zahl der Zielsysteme zuweilen recht arbeitsaufwendig. Gerade wenn Zielsysteme längerfristig zu pflegen und vielfältig anzupassen sind, kann der Programmieraufwand für die Scripte recht zeitaufwendig werden.

Der "Briegel"-Weg:

Mit dem metux System Builder (Codename "Briegel") werden die individuellen Buildscripts überflüssig.

Briegel verwaltet für jedes Paket eine Beschreibung, die Features, Abhängigkeiten und Anweisungen für die einzelnen Build-Schritte definiert. Für die individuellen Zielsysteme gibt es zudem Profile, die zu bauende Pakete mit den gewünschten Versionen und Features festlegen. Aus diesen (wenigen) Informationen leitet Briegel den gesamten Build-Prozeß ab.

Für ein neues Zielsystem muß (neben der Toolchain) ledeglich ein neues Profil erzeugt/angepaßt werden, der Rest bleibt davon unberührt. Änderungen der Features eines Paketes erfordern legelich das Umsetzen eines Flags.

Quellen und Patches für die einzelnen Pakete werden von den Schwesterprojekten Comprehensive Source Database und OSS-QM-Taskforce zur Verfügung gestellt. Das Briegel-Buildsystem minimiert damit den Anpassungs- und Pflege-Aufwand im Embedded-/Small-device-Bereich deutlich.

Interesse ?

Haben Sie Interesse am metux System Builder ?

Anruf (0174 / 7066481) oder eMail ( Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. ) genügt. Ich freue mich auf ein persönliches Gespräch.