prefix feststellen distutils

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Dienstag 24. Juli 2007, 19:57

Hi ihrs,
Ich bin derzeit das Distributions Script für meine kleine Anwendung am schreiben (endlich :) ).

Ich habe Daten welche ich nach $prefix/share installiere. Wie kann ich später im Script herausfinden was der Prefix war welcher beim builden verwendet wurde?

Ich habe schon etwas Zeit damit verbracht nachzusehen wie das andere gelöst haben. Dabei bin ich auf das Setup Script von Deluge gestossen:
http://dev.deluge-torrent.org/browser/trunk/setup.py
Das sieht für mich jedoch sehr hacky aus.

Die Notlösung für mich wäre die Scripts einfach auch als Daten zu speichern und immer nach $prefix/bin zu installieren. Dann könnte ich aus __file__ den prefix rekonstruieren...

Hat irgend wer eine Lösung für dieses Problem parat?[/code]
lunar

Dienstag 24. Juli 2007, 22:41

veers hat geschrieben:Ich habe schon etwas Zeit damit verbracht nachzusehen wie das andere gelöst haben. Dabei bin ich auf das Setup Script von Deluge gestossen:
http://dev.deluge-torrent.org/browser/trunk/setup.py
Das sieht für mich jedoch sehr hacky aus.
So wie ich das sehe, wird das Prefix doch dort bei der Installation in ein Python-Modul geschrieben? Das wäre dann der übliche Weg der meisten compilierten Programme (zumindest derjenigen, die die üblichen Buildsysteme wie cmake oder autotools einsetzen). Da wird das Installationsprefix auch immer in eine Header-Datei (config.h) geschrieben.

Auf jeden Fall habe ich das bei einem Projekt auch so gelöst: Da habe ich den Installationspfad der gettext Kataloge ebenfalls bei der Installation in ein Modul geschrieben.

Zustimmen kann ich dir insofern, als dass die Sache sehr hässlich ist, da Python-Code imho eigentlich straight out of the box laufen sollte, ohne erst umständlich setup.py laufen zu lassen.
Die Notlösung für mich wäre die Scripts einfach auch als Daten zu speichern und immer nach $prefix/bin zu installieren. Dann könnte ich aus __file__ den prefix rekonstruieren...
Wieso ist das eine Notlösung? Aus dem __file__ Attribut kann man doch wunderbar das Prefix extrahieren, sofern die entsprechenden Module im selben Prefix liegen.

Ansonsten bleibt immer noch die Möglichkeit, Daten über package data zu installieren. Schau dir mal an, wie Django das mit den gettext Katalogen gelöst hat. Viel schöner ist das aber auch nicht...
Antworten