double the pootle, double the fun

Immer wieder stößt man auf Frickelshice, besonders wenn man Software verwenden will die nicht sonderlich verbreitet ist. Pootle ist solche Software...

Ein Kollege bei seto musste heute für ein Projekt Pootle auf einem Rechner mit FedoraCore6 installieren. Bei Pootle handelt es sich um ein WebFrontend in Python zur Internationalisierung von beliebigen Anwendungen.

Er ist also schön Schritt für Schritt die Anleitung durchgegangen und unterwegs irgendwo in der Nähe der Generierung einer RPM-Datei auf einen Bug gestoßen. Soweit so alltäglich...

Die Installationsanleitung sieht vor dass man "pootlesetup.py" mit dem Parameter "bdist_rpm" aufruft, daraufhin sollte die Generierung gestartet werden. pootlesetup.py bricht jedoch mit einer Fehlermeldung ab, die in etwa grob besagt dass pootlepootlesetup.py nicht gefunden werden konnte.

Das ist nun schon etwas seltsam. Weniger dass pootlesetup.py sich selbst aufruft, als vielmehr die Tatsache dass scheinbar noch Stringoperationen auf den Dateinamen angewendet werden, aber bereits mit einem Vergessenem / und einem relativem Pfad im Quellcode könnte man das erklären.

Was wäre also die logische Schlussfolgerung? Wir erzeugen eine pootlepootlesetup.py indem wir die alte Datei umbenennen und neu ausführen. Ergebnis: Die Fehlermeldung lautet jetzt dass eine Datei namens "pootlepootlepootlepootlesetup.py" nicht gefunden wurde.

An dieser Stelle wird es abstrus... es fällt mir schwer einen ernsthaft sinnvollen Grund zu finden warum man überhaupt einen solchen Dateinamen aus dem eigenen scriptpfad generieren soll und diesen dann erneut aufrufen könnte, aber einen Grund warum man Dinge vor "setup.py" (oder evtl. auch alles was "pootle" lautet) einfach wahllos verdoppeln sollte, kann ich mir beim besten Willen nicht vorstellen.

Bugs kann man nicht immer vermeiden, jede Software hat sie ab einer gewissen Komplexität... aber man sollte schon noch verstehen was man gerade geschrieben hat und sich bei jeder Zeile etwas denken. Auch ich habe bereits Code geschrieben bei dem ich mir hinterher gedacht habe dass ich den nie wiedersehen will, weil er nur schnell aus irgendwelchen Teilen zusammengestückelt war oder so unleserlich ist dass ich ihn selbst im Nachhinein nicht mehr verstehe. Solche Dinge kommen vor... aber man gibt solchen Code bitte NICHT an die Öffentlichkeit!

(Mit einer weiteren Umbenennung zu "setup.py" funktionierte es dann, wo leere Strings verdoppelt werden bleiben wohl doppelt so leere Strings)

Google findet übrigens zu diesem Thema einzig den folgenden, vielsagenden Thread in 3facher Ausführung.

It seems right (especially if it works for you), but I'll want to check 
why this is commented. The machine we used for building is not available 
at the moment, and I'd want to check it there in the clean environment 
we used for building. There was obviously some reason, but I can't 
recall right now what it was. Somewhere "pootlesetup.py" was being 
replaced with "pootlepootlesetup.py", but I can't remember exactly what 
the issue was.

An dieser Stelle will ich einfach nur noch das geschriebene wirken lassen und keine wertenden Kommentare abgeben. Irgendwie bin ich manchmal richtig froh dass ich weder Fedora (oder andere rpm-distris) noch Pootle privat nutzen muss und meine Python-Programme noch immer recht einfach via "sudo apt-get install python-blahfasel" installieren konnte.
Geschrieben von Dr. Azrael Tod
Older article
Schubladendenken