Schlagwort-Archive: versioning

Buck – Das neue Build-Tool von Facebook

Facebook hat sein Build-Tool Buck als Open Source veröffentlicht. Das Tool hat gewisse Ähnlichkeiten mit dem bei Google verwendeten Cloud-Basierten Buildsystem. Während es bei Buck keine Cloud mit verteiltem Dateisesystem gibt, sind die ähnlichkeiten doch groß. Die Konfigurationsdateien heißen bei Google BUILD, während sie bei Facebook BUCK heißen, die Syntax ist aber identisch. Auch bei den Features sind die Tools ähnlich, nur dass Buck halt auf meinem kleinen Rechner zu Hause laufen kann.

Ich habe das Tool mal ausprobiert und beschreibe hier meine Erlebnisse. Ausgehend von einem neuen Benutzer auf GitHub, auf einem System auf dem ich kein Root-Zugang habe und der Java-Compiler veraltet ist, sind einige Härtefälle enthalten ;)

Auf der Installationsseite von Facebook sind die drei Schritte, die benötigt werden, angegeben:

git clone git@github.com:facebook/buck.git
cd buck
ant
sudo ln-s ${PWD}/bin/buck /usr/bin/buck$

Wenn ihr Root-Zugang zu eurem System habt und die benötigte Software auf dem neuesten Stand ist, müsst ihr erstmal nicht weiterlesen ;)

GitHub-Account erstellen

weiter zum Installieren

Zunächst benötigt man einen GitHub-Account und ssh-Schlüssel, wie hier beschrieben.

Falls schon ein ssh-Schlüssel erstellt worden ist, liegt er in ~/.ssh/id_rsa.pub. Falls die datei nicht vorhanden ist, muss ein Schlüssel erstellt werden:

ssh-keygen -t rsa -C "mail@gmail.com"

Wenn man einfach Enter drückt, landet der Schlüssel im obigen Verzeichnis, man kann das hier aber ändern. Zum entschlüsseln des ssh-Schlüssels wird ein Passwort benötigt. Es gelten wie immer die gleichen Sicherheitsregeln.

Anschließend wird der Speicherort des Schlüssels und der Fingerprint angezeigt.

Den exakten Inhalt der Datei ~/.ssh/id_rsa.pub, die den öffentlichen Schlüssel enthält muss gleich bei GitHub eingegeben werden.

Erstellt einen (kostenlosen) Account bei GitHub und loggt euch ein. Wenn ihr einen Gravatar-Account habt, ist euer Avatar auch bereits eingestellt ;)

Klickt nun auf Account Settings (oben rechts, neben dem Ausgang) und dann im Menü links auf SSH Keys. Klickt auf Add SSH Key und gebt den Inhalt der Datei mit dem öffentlichen Schlüssel ein. Am Besten per Copy & Paste ^^

Zurück an der Kommandozeile könnt ihr testen, ob alles soweit gefunzt hat:

ssh -T git@github.com

Der Schlüssel von GitHub ist noch unbekannt, ihr müsst ihn nun verifizieren. Der Fingerprint ist 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Falls ihr keine Lust auf den Test habt, kommt die Abfrage des Keys gleich beim Holen der Buck-Daten aus dem Repository.

Buck installieren

weiter zum Einbinden

Nun können wir nochmal versuchen, den Buck-Quellcode runterzuladen. Wir können das in einem Verzeichnis unserer Wahl machen (ich wähle das Verzeichnis /local/programs als Basis:

cd /local/programs
git clone git@github.com:facebook/buck.git
cd buck
ant

Zumindest die ersten drei Schritte sollten nun ohne Probleme funktionieren.

Falls eure Java-Installation up-to-date ist, klappt alles, ansonsten gibt ant eine Fehlermeldung aus.

Es kann verschiedene Fehlermeldungen geben, je nach aktueller Java-Version. Eine Möglichkeit ist Unrecognized option: -Werror, die von einem veralteten javac ausgegeben wird.

Java 1.5 genügt nicht, ich hab das Oracle JDK 1.7 genutzt. Wie es mit 1.6 aussieht, weiß ich nicht. Das JDK müsst ihr irgendwo installieren und den Pfad in der Umgebungsvariable JAVA_HOME setzen, dann wird die neue Version automatisch von ant benutzt:

export JAVA_HOME=/local/programs/jdk/

Ein neuer Versuch, buck zu kompilieren sollte nun erfolgreich sein.

Buck im System einbinden

Wenn man Root-Zugriff hat, kann man nun einfach einen symbolischen Link auf buck anlegen:

sudo ln -s /local/programs/buck/bin/buck /usr/bin/buck

Ohne Root-Zugriff kann man zum Beispiel den Pfad erweitern:

export PATH=$PATH:/local/programs/buck/bin

Die Zeile kann man bei Bedarf in die .bashrc einfügen, so dass buck bei jedem Systemstart verfügbar ist.

Nun sollte Buck erfolgreich eingerichtet sein und funktionieren :) Ein erstes Beispiel (zur Android-Programmierung) gibts bei Facebook. Sobald ich es für Java ausprobiert habe, werde ich hier einen weiteren Beitrag dazu schreiben.

Geschrieben von Kap. Zuletzt geändert am 6. Mai 2013.