Neutrino-MP Entwicklungsumgebung
Development
- Allgemein
- Neutrino-HD-Entwicklung
- dbox2 Entwicklung
Dieser Artikel soll zeigen, wie man sich mit den momentan verfügbaren Buildsystem-Quellen eine minimale Buildumgebung aufbauen kann, mit der es möglich ist, Neutrino-HD relevante Teile zu erstellen.
Inhaltsverzeichnis
Voraussetztungen
Zunächst sollte sichergestellt sein, dass genügend Festplattenspeicher (> 20 GB), vernünftige Rechnerleistung und ein möglichst schneller Internetzugang zur Verfügung steht. Aktuelle Mehrkernrechner sollten damit allemal zurechtkommen. Weiterhin benötigt man eine aktuelle Linux-Distribution wie z.B. OpenSUSE 11.3, 11.4, die man auch auf virtuellen Systemen wie z.B. VMWare oder VirtualBox verwenden kann. Nur zur Orientierung, für die Kompilierung einer Crosstoolumgebung auf einem WindowsXP-Rechner mitVMware-basiertem OpenSUSE 11.3 System und AMD Phenom 9750 Quadcore-Rechner mit 2.4 GHz ca. 3GB RAM benötigt man ca. 1h. Diverse Grundkenntnisse im Umgang mit der Kommandozeile (Shell), Subversion und Git sollte man mitbringen.
benötigte Tools
Es werden diverse Programme oder Tools benötigt, die installiert sein müssen, um fehlerfrei bauen zu können. Falls nötig, muss man diese nachinstallieren: Hier als Beispielinstallation für OpenSUSE 11.2 i386, andere Distribution haben möglicherweise ähnliche Paketnamen. Einige andere Pakete werden während der Installation wegen diverser Abhängigkeiten nachgeladen.
zypper install --no-recommends \ git make subversion patch \ gcc bison flex texinfo \ automake libtool \ ncurses-devel pkg-config cmake
Für Debian basierte Systeme, diese Pakete verwenden:
apt-get install --yes \ git make subversion patch \ gcc bison flex texinfo \ automake libtool \ ncurses-dev pkg-config cmake
Unter Ubuntu als auch unter Debian ab Squeeze (Debian 6.x) muss die Defaultshell noch angepasst werden. Viele Buildtools sind nicht auf die Dash abgestimmt, deswegen sollte /bin/sh auf /bin/bash zeigen. Mit root Berechtigungen folgenden Symlink erstellen.
ln -sf /bin/sh /bin/bashIn weiterer Zukunft ist dies eventuell nicht mehr nötig.
Auschecken der Buildsystem Quellen
Die benötigten Quellen für das Buildsystem liegen auf Gitorious, einem Open Source Project Hoster, vergleichbar mit GitHub oder auch SourceForge und werden von Seife verwaltet. Es nennt sich einfach "buildsystem-cs". Zudem gibt es dort noch weitere "Ableger", sog. Clones, welche einige zweckgebundene Eigenheiten aufweisen, auf die im Artikel bei Bedarf hingewiesen wird. Die Original Buildsystem-Quellen von Coolstream sind nicht öffentlich. Das Buildsystem selbst enthält keine Quellen für Neutrino-HD, sondern kann man als Modul verstehen und dient als Werkzeug zum Bauen von Neutrino-HD-Binaries oder Images bzw. Distributionen, die auf USB-Sticks oder in Form von OPKG-Paketen verfügbar gemacht werden können.
Auswahl des Buildsystems
Hier wird auf 3 Buildsyteme eingegangen:
- buildsystem-cs
- tijucas-buildsystem-cs
Diese beiden, sind fast identisch, jedoch sind in tijucas-buildsystem einige Erweiterungen enthalten, auf die wie schon angedeutet wurde, bei Bedarf hingewisen wird, wobei im Zuge der Entwicklung nicht auszuschließen ist, dass davon auch in seifes Buildsystem einiges übernommen wird. Grundsatzlich ist es aber so, dass tijucas-buildsystem genau so verwendbar ist wie Seifes. Es ist aber zu beachten das es durchaus vorkommen kann das in diesem Buildsystem auf Grund des experimentellen Charakters es auch mal zu Buildfehlern oder zu nicht einwandfrei funktionierenden Binarys kommen kann!
- wittinobis-buildsystem-cs
Dieses Buildsystem basiert auch auf Seifes-Buildsystem, weicht jedoch in einigen Details deutlich von den anderen Beiden ab und ist auch in der Wartung nicht immer konform mit den oben genannten. Es bietet aber die Möglichkeit auch Images zu erstellen, was mit den anderen noch nicht ohne weiteres möglich ist. Ausserdem nutzt dieses System im Gegensatz zu den anderen als Quelle für Neutrino-HD keinen Git-Mirror sondern einen direkten Zugriff auf das Coolstream-SVN, was zwar 1:1 aktuell gehalten werden kann, aber unter Umständen nicht die neuesten Entwicklungen enthält und im weiteren Vorgehen teilweise was Flexiblität angeht, mehr Aufwand bedeutet.
Zuerst geht es um einen minimalen Aufbau, wobei auf die ersten beiden Systeme eingegangen wird.
Klonen
Beim Auschecken via. Git spricht man vom Clonen, dabei werden von einem entfernten Repository (kurz. Repo = remote) die benötigten Daten auf das lokale System übertragen. Das ist also vergleichbar mit dem Checkout wie bei CVS oder SVN. Man ist jedoch nicht vom entfernten Repo abhängig, wie man es von CVS oder SVN her kennt. Alles weitere wird lokal gemacht!
Man legt zunächst einen Ordner an wo man das Buildsystem ablegt.
you@machine:~mkdir $HOME/GITREPO_CS_buildsystem
und wechselt in diesen:
you@machine:~cd $HOME/GITREPO_CS_buildsystem
Nun das Kommando für's Klonen eingeben: für tijucas-buildsystem-cs:
you@machine:~/GITREPO_CS_buildsystem> git clone git://gitorious.org/~tijuca/neutrino-hd/tijucas-buildsystem-cs.git buildsystem-cs
oder seifes-buildsystem-cs:
you@machine:~/GITREPO_CS_buildsystem> git clone git://gitorious.org/neutrino-hd/buildsystem-cs.git buildsystem-cs
Die Ausgabe sollte nun etwa so aussehen:
Cloning into buildsystem-cs... remote: Counting objects: 2891, done. remote: Compressing objects: 100% (2583/2583), done. remote: Total 2891 (delta 1813), reused 414 (delta 208) Receiving objects: 100% (2891/2891), 5.60 MiB | 1.41 MiB/s, done. Resolving deltas: 100% (1813/1813), done.
Verzeichnisse anlegen
Es wurde automatisch ein Unterordner erzeugt in den man nun wechselt:
you@machine:~/GITREPO_CS_buildsystem> cd buildsystem-cs
Nun einen Ordner anlegen, wo diverse Archive abgelegt werden können, die während des Buildvorganges heruntergeladen werden:
you@machine:~ mkdir download
alternativ kann man auch einen bereits vorhandenen Archiv-Ordner verwenden den man hier verlinkt
you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> ln -sf $HOME/<dein vorhandenes Archiv> download
Konfiguration
im Ordner .../buildsystem-cs eine Datei namens config anlegen und anhand dieses Beispiels anpassen (im Ordner .../buildsystem-cs/doc befindet sich auch eine Beispieldatei namens config.example:
# The type of box to build for. # either "tripledragon" or "coolstream" # default (if empty) is "coolstream" PLATFORM=coolstream # if you want to use your precompiled toolchain, define those variables: # this will skip the building of our own compiler/glibc combination! # # ONLY CHANGE THOSE VARIABLES IF YOU KNOW WHAT YOU ARE DOING! # # do not set this if you want to build a toolchain with these makefiles. #CROSS_DIR=/opt/cross #TARGET=arm-linux-gnueabi # if /usr/share/libtool/config/config.guess does not supply a valid # build type, specify it here. THIS IS A WORKAROUND. Use with caution. # BUILD=x86_64-unknown-linux-gnu # # # set the flavour of neutrino you want to build # "neutrino-hd": use git://gitorious.org/neutrino-hd/neutrino-hd-experimental.git # "neutrino-hd-tripledragon": use git://gitorious.org/neutrino-hd/neutrino-hd-tripledragon.git # empty: choose one of the above depending on PLATFORM FLAVOUR=neutrino-hd # # configure the directory where "make dist-pkgs" # PKG_DEST_DIR = /srv/www/dist/$(PLATFORM) # # the name used to replace "@MAINT@" in the opkg control files # defaults to your name from the passwd GECOS field # MAINTAINER = "<dein Name>"
Buildsystem vorbereiten
Die Quellen des Buildsystems, die benötigen Archivordner und Konfiguration sollten nun stehen. Jetzt fehlen noch die Vorbereitungen, um richtig loszulegen. Die kann das Buildsystem nun mittels Targets jetzt selbst erledigen.
Beim Bauen der Crosstoolumgebung könnte es evtl. Probleme mit LD_LIBRARY_PATH geben
...Don't set LD_LIBRARY_PATH. It screws up the build.
Dieses Kommando behebt das Problem und kann vorsorglich ausgeführt werden.
you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> unset LD_LIBRARY_PATH
Nun dieses Kommandos ausführen:
you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make preqs
Option: Falls gewünscht, die tuxbox-port Quellen holen (aktuell nur in tijucas-buildsystem-cs!). Das betreffende Repository wird in die bereits bestehenden Sourcen eingebunden und auf den Branch umgeschaltet
you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make switch-novatux
ansonsten kann man auch mit
you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make switch-master
wieder zurückschalten.
Crosstool bauen
you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make crosstool
Das dauert jetzt natürlich eine Weile, aber muss auch nur einmal gemacht werden. Alternativ kann man auch ein bereits vorhandenes Crosstool verwenden. Hierfür muss in der config der Ordner angegeben werden wo sich das Crosstool befindet Dazu diesen Eintrag anpassen:
CROSS_DIR=$HOME/<dein Verzeichnis zum Croostoool>
Neutrino-HD bauen
you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make bootstrap you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make neutrino
Das dauert natürlich auch wieder etwas, aber am Schluß sollte alles Relevante gebaut worden sein und unter
$HOME/GITREPO_CS_buildsystem/buildsystem-cs\build_tmp\
sollte alles was gebaut wurde, zu finden sein.
Weitere Pakete bauen
you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make minimal-system-pkgs you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make neutrino-pkg you@machine:~/GITREPO_CS_buildsystem/buildsystem-cs> make cs-libs-pkg
Wenn man in der Konfiguration PKG_DEST_DIR angegeben hat, kann man mit
make dist-pkgs make pkg-index
die erstellten Opkg-Pakete veröffentlichen und den Paketindex aktualisieren. Hat man dann Opkg auf der Coolstream, aktualisiert man sein System mit
opkg-cl update opkg-cl upgrade
Extras kompilieren
Beispiel: wie man sich den Midnight Commander baut
make mc make pkg-index make dist-pkgs
Weblinks
- Buildsystem Quellen http://gitorious.org/neutrino-hd
- aktuelle Readme's zu Seifes Buildsystem http://gitorious.org/neutrino-hd/buildsystem-cs/trees/master/doc
- aktuelle Readme's zu tijucas Buildsystem http://gitorious.org/~tijuca/neutrino-hd/tijucas-buildsystem-cs/trees/master/doc
- Wittinobis Buildsystem http://gitorious.org/~wittinobi/neutrino-hd/wittinobis-buildsystem-cs
- Coolstream SVN http://www.coolstreamtech.de/support/svn/viewvc.cgi/coolstream_public_svn/
- SourceForge Quellen für Tuxbox-Port http://novatux.git.sourceforge.net/git/gitweb.cgi?p=novatux/neutrino-hd;a=summary
- dbox2world.net Board zum Thema Seifes Buildsystem http://www.dbox2world.net/board293-coolstream-hd1/board314-coolstream-development/8802-coolstream-neutrino-buildsystem/
- dbox2world.net Board zum Thema Wittinobis Buildsystem http://www.dbox2world.net/board293-coolstream-hd1/board314-coolstream-development/9311-coolstream-neutrino-wittinobi-buildsystem/
- Neutrino-HD im Tuxbox-Board http://www.dbox2-tuning.net/forum/viewforum.php?f=62
- Git Ready deutsch http://de.gitready.com/