Ich versuche, mein erstes Paket in Hackage hochzuladen (yay!), und ich habe diesen Fehler:
Die Abhängigkeit 'build-depends: base' gibt keine Obergrenze für die Versionsnummer an. Jede Hauptversion des Basispakets ändert die API auf verschiedene Arten und die meisten Pakete benötigen einige Änderungen, um damit zu kompilieren. Die empfohlene Vorgehensweise besteht darin, eine obere Grenze für die Version des Basispakets anzugeben. Dadurch wird sichergestellt, dass Ihr Paket weiterhin erstellt wird, wenn eine neue Hauptversion des Basispakets veröffentlicht wird. Wenn Sie nicht sicher sind, welche obere Grenze zu verwenden ist, dann verwenden Sie die nächste Hauptversion. Wenn Sie zum Beispiel Ihr Paket mit 'base' Version 2 und 3 getestet haben, verwenden Sie 'build-depends: base & gt; = 2 & amp; & amp; & lt; 4 '.
Das scheint ein vollkommen akzeptabler Grund zu sein, mein Paket abzulehnen.
Gibt es ein gutes Werkzeug, um mein Paket gegen verschiedene Versionen von base
zu testen, damit ich sehen kann, was die Grenzen sind (anstatt nur zu raten)? Das Beste, was ich mir vorstellen kann, ist Shell Scripting zu verwenden, um etwas wie:
Aber ich denke, es sollte etwas Besseres geben.
Das ist eine sehr schlechte Idee! Sie müssen nicht Basis aktualisieren oder andere Pakete, die mit GHC kommen (die solche mit -
in der Tag-Spalte) oder alles wird fürchterlich zerbrechen.
Die einzige Möglichkeit, mit einer älteren Version der Basis zu testen, ist, einen älteren GHC zu installieren und damit zu testen. Ich würde vorschlagen, es einfach auf 7.0.4 und 7.2.2 zu versuchen; die Unterstützung älterer Versionen ist heutzutage wahrscheinlich eine Zeitverschwendung.
Wenn dies nicht der Fall ist, geben Sie einfach base >= VERSION && < 5
an, wobei VERSION
die Version ist, die Ihr GHC hat. Oder base == 4.*
und hoffe auf das Beste:)
In aller Ernsthaftigkeit ändert sich die API von base nicht wirklich so sehr, daher werden Sie wahrscheinlich nicht viele Probleme damit bekommen.
Um Ihr Programm mit verschiedenen Versionen von Paketen im Allgemeinen zu testen, ohne Ihr Haupt-Repository ~/.cabal
zu stören, empfehle ich Ihnen cabal- Entwickler ; etwas wie
sollte es tun.
Übrigens können Sie cabal check
tun, um vor einem solchen Problem gewarnt zu werden, bevor Sie Ihr Paket auf Hackage hochladen.