OpenSensation unter ArchLinux kompilieren

Nachdem kmobs aus privaten Gründen mit der Arbeit am AOSP-Port fürs Sensation aufgehört und ein anderer Entwickler sein Sensation gebrickt hat, arbeitet nur noch Bumble-Bee daran. Aber von ihm kommen leider keine Infos. Deshalb bin ich wirklich froh, dass Vorbeth direkt zu Beginn seiner Arbeit am OpenSensation-ROM alle Sourcecodes offen gelegt hat. Leider wirkt es zu Beginn etwas kompliziert, wenn man Android selbst kompilieren will. Weil die Anleitung von blahbl4hblah für ArchLinux Nutzer total ungeeignet ist, habe ich seine als Grundlage genommen und diese verfasst. Ich hoffe, sie ist nicht allzu unverständlich :)

Damit das fertig kompilierte ROM zum Schluss auf dem HTC Sensation läuft, muss vorher die aktuelle Firmware geflasht werden.

Wir benötigen:

Zuerst muss sichergestellt werden, dass die Repositories core, extra, community, multilib und archlinuxfr in der /etc/pacman.conf eingetragen sind.

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[community]
Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

[archlinuxfr]
Server = http://repo.archlinux.fr/$arch

Als nächstes installieren wir das Tool yaourt.

pacman -Sy yaourt

Jetzt können wir die benötigten Pakete installieren. 

yaourt -Sa base base-devel git gnupg python rar nawk gawk p7zip gperf sdl esound wxgtk squashfs-tools zip curl ncurses zlib pngcrush schedtool android-sdk android-sdk-platform-tools android-udev java-runtime xproto libx11 libgl mingw32-binutils dos2unix python-markdown libxml2 ccache

(Die Pakete android-sdk, android-sdk-platform-tools, android-udev, esound und pngcrush werden aus dem AUR und rar aus dem archlinuxfr Repository bezogen)

Auf 64-bit Systemen müssen noch weitere Pakete installiert werden. Abfragen, ob verschiedene Pakete entfernt werden dürfen, mit Ja bzw Yes bestätigen!

yaourt -Sa multilib-devel lib32-zlib lib32-ncurses lib32-readline

Jetzt erstellen wir die nötige Verzeichnisstruktur und laden uns das repo-Tool von Google. 

mkdir -p ~/bin ~/android/system
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo

Weil das repo-Tool nicht mit der python3 verträgt, muss es auf python2 geändert werden.

sed -i 's/python /python2 /' ~/bin/repo

Jetzt können wir das Repository initialisieren.

cd ~/android/system
~/bin/repo init -u git://github.com/OpenSensation/android.git -b ics

Wenn er mit der Fehlermeldung “SyntaxError: invalid syntax” abbricht, folgenden Befehl ausführen und anschließend nochmal versuchen.

sed -i 's/python /python2 /' ~/android/system/.repo/repo/{repo,main.py}

Jetzt muss der Sourcecode von Android heruntergeladen werden. Das kann je nach Internetanbindung einige Zeit dauern.

~/bin/repo sync

Sollten Fehlermeldungen wie “fatal: The remote end hung up unexpectedly” auftauchen, dann muss

sysctl -w net.ipv4.tcp_window_scaling=

als root ausgeführt werden. (Troubleshooting network issues)

Für CyanogenMod werden noch proprietäre Dateien (koush’s RomManager und jackpal’s Android Terminal Emulator) benötigt.

sh vendor/cm/get-prebuilts

Jetzt laden wir uns das Build-Script von Vorbeth herunter.

wget //tamcore.eu/wp-content/uploads/2012/02/build.sh -O ~/android/system/build.sh
chmod a+x ~/android/system/build.sh

Bevor Android jetzt kompiliert werden kann, müssen wieder diverse Scripte dazu gezwungen werden, python2 zu verwenden.

find . -type f -iname *.py -exec sed -i 's/^\#\!\/usr\/bin\/env python.*/\#\!\/usr\/bin\/env python2/' {} \;
find build/tools/ -type f -exec sed -i 's/^\#\!\/usr\/bin\/env python.*/\#\!\/usr\/bin\/env python2/' {} \;
find . -type f -iname *.mk -exec sed -i 's/python \$/python2 \$/' {} \;

Anschließend können wir Android kompilieren:

./build.sh