knasan

Linux and more

Archiv für den Monat “Februar, 2013”

genfoo-tools, meine portage utils!

Ich hatte mal ein Script geschrieben das mir meine /etc/portage/package.keywords Datei in ein Verzeichnis Konvertierte. Es lag danach lange auf der Platte und schien in Vergessenheit zu geraten bis ich ein Beitrag auf gentooforum.de sah http://www.gentooforum.de/artikel/21118/packages-keywords-durchputzen-lassen-ist-das-m-glich.html?s=5bcd93f04f80b28ce377b28d287e352926658d62 .

Dort frage ein User nach, ob es denn möglich sei package.keywords zu putzen.
Ich wusste, da habe ich schon mal etwas geschrieben und schaute in meine Script Sammlung nach, „portkeyman“ (Portage Keyword Manger) gesucht und wieder gefunden.

Nun hatte ich zwei Möglichkeiten, das Script im Forum Posten und es erneut untergehen lassen oder doch lieber in Git verwalten. Ich beschloss mich, dieses Script auf mein Git zu legen, so das viele davon Profitieren können.

Nach kurzen Tests wurde mir klar, ich muss am Script noch etwas ändern. Ursprünglich war es eher als Hack gedacht um eine Lösung für mein damaliges Problem zu haben. Für eine Veröffentlichung war es noch nicht gut genug. So spendierte ich dieses Script eine kleine Hilfe und examples ein paar Fehlerkorrekturen und ab in Git.

Was mich noch störte, meine Kommentare die ich seit kurzem eingeführt habe wurden komplett Ignoriert. Also auch das noch schnell hinzugefügt.
Was auch lästig war, man musste immer angeben wo die packages.keywords liegt, deswegen habe gleich noch einen Default Path eingeführt. In der Regel liegt es ja immer unter /etc/portage/package.keywords als Datei oder Verzeichnis.

Hab das Script nun ein paar mal ausgeführt und es etwas einfacher, aber so dynamisch wie möglich umgeschrieben. Das Script erkennt nun ob man Root oder Normaler User ist und ändert den Logpath um nicht immer ein Logfile angeben zu müssen, was man aber natürlich noch kann.

Um es einfach unter Gentoo oder Funtoo Installieren zu können habe ich ein Ebuild „genfoo-tools“ geschrieben. Bevor ich jedoch noch mehr portage-utils Scripte Veröffentliche möchte ich portkeyman um ein paar weitere Funktionen erweitern. Hinzufügen und entfernen von Keywords um ein Beispiel zu nennen. Ich überlege auch, einen Parameter einzuführen der das nicht in /tmp speichert sondern die Änderungen sofort im System erledigt.

Ich merke schon dass das Script vieles Automatisieren könnte oder schon tut, was man lang händisch erledigt hat. Daher würde mir ein completion Script noch gefallen, habe bisher nur eines geschrieben und bin noch nicht ganz durchgestiegen wie das genau Funktioniert. Sobald das Script in einer Phase ist wo man sagen kann, es hat alles was man sich wünscht, werde ich mir completion noch einmal ansehen.

Wer mag, darf das Script gerne Testen und mir seine Ideen oder Kritik Schreiben, schließlich soll es unsere Arbeit erleichtern. Ich Antworte auf jeden Fall, auch wenn es mal etwas länger dauert. Also nicht ungeduldig werden 😉

Das Ebuild findet ihr hier: https://github.com/knasan/ebuilds/tree/master/app-portage/genfoo-tools
und das Script selbst hier: https://github.com/knasan/genfoo-tools

-Sandy

Advertisements

Nutze deinen RAM

Warum man Ram statt Festplatte verwendet liegt eigentlich auf der Hand.
Ram ist 1000% schneller als eine Festplatte, sogar eine SSD muss sich hier geschlagen geben. Deswegen wollte ich mir ansehen, ob und wie es Möglich ist, StuntRally im Ram zu Spielen.

Als erstes versuchte ich mich an einer chroot Umgebung, diese war mir am Schluss viel zu groß und wirklich sauber hatte es noch nicht funktioniert. Bis mir eine Idee kam.

Der Kernel hängt ein Virtuelles Dateisystem unter /dev/shm ein. Dieses Dateisystem ist nichts anderes als ein teil des Arbeitsspeichers.

Ich erstellt ein Verzeichnis new_home in /dev/shm also Normaler User. Kopierte .config/stuntrally, .local/share/games/stuntrally und .cache/stuntrally hinein.

In einem Terminal exportierte ich nun meine Home Variable

export HOME=/dev/shm/new_home

und startete das Spiel.

Mir ist sofort aufgefallen, dass das Game viel flüssiger läuft.

Aus diesem Grund habe ich einen wrapper geschrieben, der alle Daten von Suntrally nach /dev/shm/ Synchronisiert und beim beenden wieder nach sein Home.

Mein Ebuild habe ich ein neues USE-Flag spendiert das diesen Wrapper auf Wunsch Installiert.

Für alle die gerne diesen Wrapper verwenden möchten, aber kein Gentoo/Funtoo nutzen, hier das wrapper-script.

suntrally_wrapper

#!/bin/bash

#-------------------------------------------------------------------------------
# Author: Sandy Marko Knauer
# Email: knamarksan@gmail.com
# URL: https://knasan.wordpress.com/2013/02/09/nutze-deinen-ram/
# Description: StuntRally synchronizes files to StuntRally in memory to execute.
# Version: 0.0.1
# License: GNU GPL-v3
#-------------------------------------------------------------------------------

tmpfs=$(grep -c "/dev/shm" /proc/mounts)

new_home="/dev/shm/$USER"_new_home
old_home="$HOME"

if [ $tmpfs = "0" ]; then
echo "/tmp is not as a tmpfs filesystem"
exit
fi

stuntrally_cache=".cache/stuntrally/"
stuntrally_config=".config/stuntrally/"
stuntrally_local=".local/share/games/stuntrally/"

mkdir -p $new_home || exit
mkdir -p $new_home/$stuntrally_cache || exit
mkdir -p $new_home/$stuntrally_config || exit
mkdir -p $new_home/$stuntrally_local || exit

if [ -d $HOME/$stuntrally_cache ]; then
rsync -a --progress $HOME/$stuntrally_cache $new_home/$stuntrally_cache || exit
else
mkdir -p $HOME/$stuntrally_cache || exit
fi

if [ -d $HOME/$stuntrally_local ]; then
rsync -a --progress $HOME/$stuntrally_local $new_home/$stuntrally_local || exit
else
mkdir -p $HOME/$stuntrally_local || exit
fi

if [ -d $HOME/$stuntrally_config ]; then
rsync -a --progress $HOME/$stuntrally_config $new_home/$stuntrally_config || exit
else
mkdir -p $HOME/$stuntrally_config || exit
fi

export HOME=$new_home
/usr/bin/stuntrally

rsync -a $new_home/$stuntrally_local $old_home/$stuntrally_local --numeric-ids --progress --delete || ex>
rsync -a $new_home/$stuntrally_config $old_home/$stuntrally_config --numeric-ids --progress --delete || ex>
rsync -a $new_home/$stuntrally_cache $old_home/$stuntrally_cache --numeric-ids --progress --delete || ex>

rm -r $new_home

Hier nochmal ein direklink auf die Datei, da leider die Formatierung verloren geht. https://github.com/knasan/ebuilds/blob/master/games-sports/stuntrally/files/stuntrally_wrapper

StuntRally unterliegt der GNU/GPL-v3, deswegen habe ich mich auch für diese Lizenz entschieden.

-Sandy

Stuntrally Crash in Championship mode

Heute dachte ich mir ich teste Stuntrally Championship, eine Runde … Segmentation fault

Ups was ist das denn? Ein Bug in mein Ebuild?

Ich machte mich erstmal auf die Suche ob dieser Bug bekannt ist, ja ist er.
Im Forum von Stuntrally wurde ich fündig: http://forum.freegamedev.net/viewtopic.php?f=78&t=4089

Dies lies mich nicht los und wollte es genau wissen.
Beim Ebuild schreiben hatte ich festgestellt das Ogre nicht mit USE-Flag threads compiliert werden darf. Das Spiel lies sich nie starten deswegen hatte ich -threads für Ogre im Ebuild hart Maskiert.

Da dieser Bug etwas mit Multithreads zu tun hat, dachte ich mir es muss doch möglich sein Ogre mit threads nutzen zu können. Ich schaute mir die Ebuilds von Ogre und ein paar andere die in Abhängigkeit standen an. Nach kurzer Zeit stelle ich fest das sci-libs/fftw oft in Abhängigkeit stand und wenn threads gewählt ist mit dem USE-Flag mpi verlangt wurde.

Okay, erster test Ogre mit threads compiliert, Stuntrally crasht wie gewohnt.
Also fftw mit mpi USE-Flag compiliert, wow Stuntrally startete ohne zu murren, dachte mir gutes Zeichen.

Championship, eine Runde … Segmentation fault

Eine Runde Erholung zur belohnung dachte ich mir, dabei stellte ich fest dass das Game nicht mehr Ruckelt an stellen wo ich es eigentlich gewohnt war. Fast schon unheimlich, ich hatte mich so sehr an das Ruckeln gewöhnt das mir nun die Steuerung ohne Ruckeln etwas schwer gefallen ist.

Ich dachte immer, das dass Bild besser wurde als ich dev-cpp/asio hinzugefügt hatte, hier hatte ich mich getäuscht. Dieses Paket wurde von vdrift benötigt, aber nicht von Stuntrally.

Nochmal getestet, diesmal ohne dev-cpp/asio. Konnte keinen Unterschied feststellen, Stuntrally verwendet also dev-cpp/asio gar nicht. Zurück zu Championship, was ich heute ja unbedingt mal testen wollte. Wie im Forum Beschrieben stelle ich die Parameter der game.cfg in Section [ slim ] multi_tr = 1 auf 0.

Danach funktionierte Championship und das beste es läuft immer noch flüssig.

Wenn ihr also denkt das eure Grafikkarte das Game ohne Ruckeln packen sollte, dann versucht Stuntrally mal mit threads zu compiliern. Spassfaktor steigt wenn das Game nicht Ruckelt gewaltig in die höhe.

Das neue Ebuild liegt ab sofort auf meinem Github
https://github.com/knasan/ebuilds/tree/master/games-sports/stuntrally

Sandy

Beitragsnavigation

%d Bloggern gefällt das: