2012-12-19 3 views
8

Ich debianizing ein Python-Paket, das ein bisschen seltsame Abhängigkeiten hat. Entweder:Gibt es Möglichkeiten, gruppierte bedingte Abhängigkeiten in debian/control zu definieren?

  • Abhängig von python2.7
  • Abhängig von python2.6 und python-ordereddict (mein selbst gebauten Paket für ordereddict auf PyPI)

Zum Beispiel in meinem setup.py ich habe:

deps = ["Flask >=0.8"] 
if not hasattr(collections, "OrderedDict"): # Python 2.6 
    deps.append("ordereddict") 

setup(
    … 
    install_requires=deps, 
    … 
) 

Ich habe nichts in Debian Verpackung Dokumentation zu diesem Thema gefunden. Nur aus heiterem Himmel habe ich versucht,

Depends: ..., python2.7 | (python2.6, python-ordereddict) 

Schreiben aber nicht überraschend, ist es eine falsche Syntax, die nicht funktioniert:

dpkg-gencontrol: warning: can't parse dependency (python2.6 

I dh_python2 und ${python:Depends} bin mit stellt ganz unvernünftig Liste wie

Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2), 
    python (<< 2.8), python-flask, python-ordereddict 

Bei einer solchen Abhängigkeitsliste, wird es python-ordereddict für python2.7 benötigen, das nicht existiert. Und natürlich kann ich python2.7-minimal nicht patch sagen Provides: python-ordereddict (wie es mit python-argparse getan wird).

Irgendwelche Vorschläge, wie man solche Bibliotheken richtig verpackt, bitte?

Antwort

5

Eine Möglichkeit wäre, python-ordereddict von python2.6 abhängig zu machen, dann lassen Sie Ihr Hauptpaket von python2.7 | python-ordereddict abhängen. Ich nehme an, es macht keinen Sinn, python-ordereddict mit 2,7 zu ​​installieren, da in dieser Version verfügbar ist.

Natürlich ist das hässlich, weil es die Abhängigkeit des Hauptpakets in die Bibliothek schiebt. Die Alternative besteht darin, zu erkennen, dass Abhängigkeiten in conjunctive normal form (CNF) aussagenlogische Formeln sein müssen. die distributive law der Aussagenlogik Durch die Anwendung können Sie

python2.7 | (python2.6, python-ordereddict) 

auf das Äquivalent CNF

python2.7 | python2.6, python2.7 | python-ordereddict 

konvertieren (was, ich gebe zu, ist nicht besonders hübsch entweder).

Verwandte Themen