Amarok 2 SVN unter K/X/Ubuntu kompilieren

Posted by on 22 Mar 2009 | Tagged as: hyper_ch, KDE, Ubuntu

Amarok 2 auf *buntu 8.10 selbst kompilieren

Update

Dieses Howto ist komplett veraltet, da weitere Sachen aus dem Amarok Repo ausgelagert wurde und weil Amarok selbst einen Wechsel von SVN zu Git durchgeführt hat. Siehe hier für das aktuelle Howto: http://www.simplylinux.ch/amarok-git-unter-kubuntu-9-10-karmic-selbst-kompilieren

Einführung

Amarok ist ein genialer Musikplayer, allerdings hinken die Repo-Versionen stark hinten drein was Aktualität angeht. Amarok Neon Project baut zwar täglich neue Versionen für deren Repo, aber in letzter Zeit hat das nicht mehr geklappt. Wer einfach ein bisschen eine aktualisiertere Version haben will, soll meinen Repo Generator benutzen und dort das Neon Projekt auswählen.

Im nachfolgenden Howto werde ich allerdings auch noch ein paar weitere Dinge einbringen. So das Medibuntu Repo mit den w32/w64codecs (kommt halt darauf an, ob man ein 32- oder 64-bit OS installiert hat). Ebenfalls installiere ich auch direkt die kubuntu-restricted-extras. Damit sollten fast alle üblichen Codecs installiert sein.

Das ganze Howto habe ich auf einer Vanilla-Kubuntu Installation durchgeführt. Je nachdem wie stark dein System modifiziert wurde braucht es Änderungen.

Ein Dank geht speziell an markey und mamarok aus dem #amarok Channel auf irc.freenode.org und insbesondere auch an folgende Seiten:
Installing Amarok 2 from SVN in your home directory
Amarok 2 and MySQL Embedded

Jaunty Benutzer

Für Jaunty Benutzer gibts einige Änderungen.
(1) In Schritt eins muss das Packet “amarok-enginge-xine” nicht entfernt werden, da es nicht installiert ist.
(2) In Schritt 13 muss QtScriptGenerator nicht gepatcht werden.
(3) Bevor Amarok in Schritt 16 gestartet wird, muss das System neu gestartet werden.
Ich habe das auf einer Vanially Kubuntu Jaunty 9.04 Beta Installation gestestet und ein Logfile der ganzen Installation angefertigt. Das Log kann hier heruntergeladen werden. Die entpackte Datei ist 2.5 MB gross und umfasst 30’000 Zeilen.

1: Bisherige Amarok Installation entfernen

sudo apt-get purge amarok amarok-common amarok-engine-xine

Anstelle von “purge” kann man auch “remove” nehmen um so die eigenen Daten weiter aufrecht zu erhalten. Amarok muss entfernt werden, da es sonst Probleme gibt.

2: Sources List updaten

Dazu kann meinen meinen Repo Generator nehmen. Hier ist wichtig, dass man “main, restricted, universe, multiverse”, “security, updates, proposed, backports” sowie “KDE 4.2 PPA, Medibuntu” nimmt. Medibuntu ist freiwillig, ich kanns aber nur empfehlen.

Dann müsste eine Liste wie unten stehend generiert werden:

#############################################################
################### OFFICIAL UBUNTU REPOS ###################
#############################################################
 
###### Ubuntu Main Repos
deb http://ch.archive.ubuntu.com/ubuntu/ intrepid main restricted universe multiverse
 
###### Ubuntu Update Repos
deb http://ch.archive.ubuntu.com/ubuntu/ intrepid-security main restricted universe multiverse
deb http://ch.archive.ubuntu.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://ch.archive.ubuntu.com/ubuntu/ intrepid-proposed main restricted universe multiverse
deb http://ch.archive.ubuntu.com/ubuntu/ intrepid-backports main restricted universe multiverse
 
###### Ubuntu Partner Repo
deb http://archive.canonical.com/ubuntu intrepid partner
 
##############################################################
##################### UNOFFICIAL  REPOS ######################
##############################################################
 
###### 3rd Party Binary Repos
 
#### KDE 4.2 PPA Repos - http://www.kubuntu.org/news/kde-4.2
## Run this command: gpg --keyserver keyserver.ubuntu.com --recv-keys 493B3065 && gpg --export -a 493B3065 | sudo apt-key add -
deb http://ppa.launchpad.net/kubuntu-experimental/ubuntu intrepid main
 
#### Medibuntu - http://www.medibuntu.org/
## Run this command: sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update
deb http://packages.medibuntu.org/ intrepid free non-free

Mit dieser Liste dann /etc/apt/sources.list ersetzen oder ergänzen.

Zuletzt noch die GPG-Schlüssel imporiteren:

gpg --keyserver keyserver.ubuntu.com --recv-keys 493B3065 && gpg --export -a 493B3065 | sudo apt-key add -
sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update

3: Upgraden

Nachdem nun KDE 4.2 vorhanden ist, muss das System geupgraded werden:

sudo apt-get dist-upgrade

Und mit folgendem Befehl kann man noch nicht-länger benötigte Abhängigkeiten beseitigen:

sudo apt-get autoremove

4: Reboot

Danach das System rebooten:

sudo reboot

5: Benötigte Pakete

Danach die benötigten Pakete installieren (wer ein 64-bit OS benutzt soll w64codecs anstelle von w32codecs nehmen):

sudo apt-get install kubuntu-restricted-extras w32codecs build-essential kde-devel subversion libmysqlclient15-dev libncurses5-dev libtag1-dev libstrigiqtdbusclient-dev

6: .bashrc und myenv.sh erweitern

Die .bashrc und myenv.sh Dateien müssen noch erweitert werden. Dazu folgendes im Terminal ausführen:

KDE-Benutzer müssen/sollen das hier ausführen:

echo '' >> ${HOME}/.bashrc
echo 'export PATH=$HOME/kde/bin:$PATH' >> ${HOME}/.bashrc
mkdir -p ${HOME}/.kde/env
touch ${HOME}/.kde/env/myenv.sh
echo '' >> ${HOME}/.kde/env/myenv.sh
echo 'export KDEDIR=$HOME/kde' >> ${HOME}/.kde/env/myenv.sh
echo 'export KDEDIRS=$KDEDIR' >> ${HOME}/.kde/env/myenv.sh

Nicht-KDE-Benutzer müssen das hier ausführen:

echo '' >> ${HOME}/.bashrc
echo 'export PATH=$HOME/kde/bin:$PATH' >> ${HOME}/.bashrc
echo 'export KDEDIR=$HOME/kde' >> ${HOME}/.bashrc
echo 'export KDEDIRS=$KDEDIR' >> ${HOME}/.bashrc

Und mit folgendem überprüfen ob es tatsächlich:

cat ${HOME}/.bashrc
cat ${HOME}/.kde/env/myenv.sh

Natürlich müssen die nicht-KDE-Benutzer nur den ersten Befehl ausführen.

7: .bashrc neu laden

Nun muss das ganze noch neu geladen werden:

source ${HOME}/.bashrc

8: Verzeichnisse kreieren

Nun legt man die folgenden Verzeichnisse an:

mkdir -p ${HOME}/kde/src
mkdir -p ${HOME}/kde/build/amarok

9: Amarok und taglib-extras herunterladen

Nun müssen noch Amarok und taglib-extras heruntergeladen werden:

cd ${HOME}/kde/src
svn co svn://anonsvn.kde.org/home/kde/trunk/extragear/multimedia/amarok amarok
svn co svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib-extras/ taglib-extras

Bei mir hat das folgende Revision gegeben: Checked out revision 942886.

10: MySQL herunterladen

Da MySQL in Amarok 2 integriert ist, brauchen wir noch die MySQL Quellen. Diese können hier heruntergeladen werden (natürlich die tar.gz Version). Derzeit ist die aktuelle Version 5.1.32. Damit die nachfolgenden Befehle alle stimmen, muss nach ${HOME}/kde/src heruntergeladen werden.

Alternative kann auch einfach folgendes ausgeführt werden:

cd ${HOME}/kde/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.32.tar.gz/from/http://mirror.switch.ch/ftp/mirror/mysql/

11: MySQL entpacken und installieren

Dies gilt jetzt natürlich nur, wenn alle Schritte vorher identisch gemacht wurden und MySQL immer noch 5.1.28 ist. Ansonsten muss das geändert werden.

tar xzvf mysql-5.1.32.tar.gz
cd mysql-5.1.32
cp -R ${HOME}/kde/src/amarok/supplementary_scripts/mysqle/* .

Solltest du mehr als 1 CPU/Kern haben, musst du noch folgenden Befehl mit der Anzahl Kerne +1 abändern und ausführen. D.h. bei nem Dualcore wäre es “-j3” und bei nem Quadcore “-j5” (höhere Werte für -j führen seltenerweise zu Probleme. Sollte dies eintreffen, dann einfach -j1 verwenden):

export MAKEOPTS=-j2

Danach kann MySQL kompiliert werden (das dauert):

./build-mysqle.sh --prefix=${HOME}/usr

12: taglib-extras kompilieren

Dies wurde vor kurzem auch aus dem SVN ausgegliedert und muss ebenfalls separat kompiliert werden. Dazu folgendes Schritte ausführen:

cd ${HOME}/kde/src/taglib-extras/
mkdir build
cd build
export LD_LIBRARY_PATH=${HOME}/kde/build/taglib-extras/taglib-extras
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/kde ..
make
make install

13: QtScriptGenerator kompilieren

Dies wurde ebenfalls ausgegliert, aber es gibt noch einige Schwierigkeiten dazu. Zuerst einfach mal folgendes ausführen oder sich den aktuellen Code hier besorgen:

cd ${HOME}/kde/src
wget http://qtscriptgenerator.googlecode.com/files/qtscriptgenerator-src-0.1.0.tar.gz
tar xfvz qtscriptgenerator-src-0.1.0.tar.gz
cd qtscriptgenerator-src-0.1.0

Ebenfalls hier ist auf die Versionsnummer zu achten. Die Version 0.1.0 hat allerdings noch fehler und muss (unter *buntu) gepatcht werden. Dazu im qtscriptgenerator-src-0.1.0 Verzeichnis folgendes ausführen:

nano include_everything.patch

Und nachfolgenden Text einfügen:

--- b/generator/qtscript_masterinclude.h	2009-03-21 20:37:30.719523909 -0400
+++ a/generator/qtscript_masterinclude.h	2009-03-21 21:00:25.108149339 -0400
@@ -31,17 +31,41 @@
 
 #include 
 
-#ifndef QT_NO_XMLPATTERNS
-#  include
-#endif
-
-#ifndef QT_NO_WEBKIT
-#  include
-#endif
-
-#ifndef QT_NO_PHONON
-#  include
 
-#endif
+#include
+
+#include
+
+#include "phonon/abstractaudiooutput.h"
+#include "phonon/abstractmediastream.h"
+#include "phonon/abstractvideooutput.h"
+#include "phonon/addoninterface.h"
+#include "phonon/audiooutput.h"
+#include "phonon/audiooutputinterface.h"
+#include "phonon/backendcapabilities.h"
+#include "phonon/backendinterface.h"
+#include "phonon/effect.h"
+#include "phonon/effectinterface.h"
+#include "phonon/effectparameter.h"
+#include "phonon/effectwidget.h"
+#include "phonon/mediacontroller.h"
+#include "phonon/medianode.h"
+#include "phonon/mediaobject.h"
+#include "phonon/mediaobjectinterface.h"
+#include "phonon/mediasource.h"
+#include "phonon/objectdescription.h"
+#include "phonon/objectdescriptionmodel.h"
+#include "phonon/path.h"
+#include "phonon/phonondefs.h"
+#include "phonon/phononnamespace.h"
+#include "phonon/platformplugin.h"
+#include "phonon/seekslider.h"
+#include "phonon/streaminterface.h"
+#include "phonon/videoplayer.h"
+#include "phonon/videowidget.h"
+#include "phonon/videowidgetinterface.h"
+#include "phonon/volumefadereffect.h"
+#include "phonon/volumefaderinterface.h"
+#include "phonon/volumeslider.h"
 
 #include "../qtbindings/qtscript_core/qtscriptconcurrent.h"

die Datei dann speichern und folgenden Befehl ausführen um zu patchen:

patch -p1 < include_everything.patch
[/codesyntax]
 
Danach kann mit folgenden Befehlen das ganze kompiliert werden. Hier muss zuerst ins Verzeichnis generator rein und dann noch in qtbindings:
 
[codesyntax lang="bash"]
export INCLUDE=/usr/include/qt4
cd generator
qmake
make
./generator
cd ../qtbindings
qmake
make
[/codesyntax]
 
Am Schluss noch die Plugins nach /usr/lib/qt4/plugins/script kopiert werden.
 
[codesyntax lang="bash"]
cd ../plugins/script
sudo cp -R * /usr/lib/qt4/plugins/script/
[/codesyntax]
 
 
 
14: Amarok kompilieren
Nun kann endlich Amarok kompiliert werden:
[codesyntax lang="bash"]
cd ${HOME}/kde/src/amarok
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/kde -DCMAKE_BUILD_TYPE=debugfull ${HOME}/kde/src/amarok
make
make install

Dies sollte ohne grössere Fehlermeldungen von statten gehen.

15: KDE Config updaten

Zuletzt muss noch KDE Config geupdated werden:

kbuildsycoca4 --noincremental

16: Amarok starten

Und Amarok kann dann von der Shell aus (ich habs noch nicht anders hingekriegt) mit folgendem Befehl gestartet werden:

amarok

One Response to “Amarok 2 SVN unter K/X/Ubuntu kompilieren”

  1. on 26 Apr 2009 at 14:54 1.webkatalog said …

    Were did you find these informations?