Fedora: Wie man ProjectM kompiliert

Wer wissen will, wie er für Fedora ProjectM kompilieren kann, der soll weiterlesen. Alle die Epilepsie haben, sollten das nicht in Betracht ziehen, das ist übles Farb & Flacker Foo, ich glaube einige der Effekte wollten mir unterschwellige Botschaften aus dem Universum unterjubeln 😉

Erstmal Devkrams installieren

Neben dem, was man als normale C Entwicklungsumgebung sowieso braucht, GCC, AutoMake etc. kommen folgende Pakete zum Einsatz:

glm-devel
libICE-devel
libSM-devel
libXt-devel
mesa-libGLU-devel
libXv-devel
qt-devel
glm-devel
rhash
cmake-data
cmake
qt5-rpm-macros
qt5-qtbase-devel
pulseaudio-libs-devel

einfach mit DNF installieren.

Sourcecode clonen

Den Source bekommt man von GitHub. Dazu macht man sich erstmal ein leeres Verzeichnis ..

mkdir -p Programmieren/git/

.. dann hinwechseln ..

cd Programmieren/git/

… und Source clonen :

git clone https://github.com/projectM-visualizer/projectm.git

Jetzt warten, kann dauern, sind fast 20.000 Bruchstücke die da ankommen. Dann wechseln wir in das Projekt:

cd projektm

und lassen autogen arbeiten:

./autogen.sh

jetzt konfigurieren. Entgegen der Anleitung muß man allerdings extra angeben, daß QT gebaut wird, sonst nix PulseAudio-Version 😉 GLES und Threading kann man, muß man aber nicht machen. Hat den Vorteil das mehr Power rauskommt, denn das schluckt einiges an Leistung. Eine schwache CPU kann da stark von profitieren.

./configure –enable-gles –enable-threading –enable-qt

noch ein make und man ist durch. Mit make install kann man das installieren, aber wer sich das nicht ans Bein binden will, weil üblicherweise gibt es nämlich kein uninstall bei sowas 😀 , der findet z.b. die PulseAudio Version hier ./src/projectM-pulseaudio/projectM-pulseaudio .

Nach reiflicher Überlegung, habe ich dann rm -rf ~/.projectM projectm gemacht 😀 Es war nicht eine brauchbare Visualisierung dabei.

Fedora 28: Planet Crash

Mit Fedora 28 ist es grade, als wenn man in einen Topf Farbe getreten ist und jetzt die Farbe überall verteilt. Egal wo man hinschaut Bugs, Bugs und noch mehr Bugs.

Heute:  ProjectM-PulseAudio

Für alle die ProjectM nicht kennen, das ist ein Audio-Visualisierungs-Plugin, das langweilige Musikabende optisch aufhübschen soll, idealerweise im Takt der Musik.

Scheinbar ist das bei Fedora auf dem absteigenden Ast gelandet, meint, es ist als verweist markiert. Es gibt also keinen Maintainer und Redhat muß selbst ran, und genau da haperts bei Redhat grade. Das Problem liegt in der Speicherverwaltung, was zu einem „Double Free“ Fehler führt. Für Nichtentwickler, daß bedeutet, daß ein Speicherbereich zwei(++)mal freigegeben werden soll. Das ist ein schwerwiegender Programmierfehler und wird besonders oft von C-Entwicklern gemacht, weil das Speichermanagement von C schlicht nicht vorhanden ist. Einem Java-Programm kann das nicht passieren, da die JVM das Speichermanagement komplett übernimmt.

Ich wette Fefe, wüßte jetzt, auf welchem Platz der häufigsten Programmierfehler in C der DoubleFree steht, aber ich kann nur raten. Gefühlt in den Top 3, direkt nach Buffer-Overflow und „Zeiger auf Zeiger verdengelt“ 🙂

Also falls Ihr mit ProjectM rechnet, seid nicht enttäuscht, wenn es nach 5 Sekunden crasht.

Update:

Nachdem ich mit auf Github einen BugReport erstellt habe, stellt sich raus, daß Fedora eine uralte Version zur Verfügung gestellt hat. Es wird dringend dazu geraten, ProjectM selbst zu kompilieren, nur ist das, wie sich zeigt, nicht so einfach. Das Configure Script vermeidet bewußt zu sagen, was ihm zum Ausführen am QT Libs genau fehlt, ohne QT unterdrückt das make einfach mal die Fehler beim Bau von projectM-pulseaudio und sagt am Ende, daß alles fehlerfrei geklappt hat. Natürlich ohne irgendwas brauchbares erstellt zu haben.

Das kann man zwar nicht direkt als Bug bezeichnen, zeigt aber auf, wo da wohl das Problem seitens Redhat liegt, eine aktuelle Version zusammen zu häkeln.