Comment publie-t-on un projet * nix?

Donc, j’ai écrit un petit programme soigné capable d’parsingr du texte japonais et de donner à l’utilisateur diverses statistiques concernant l’utilisation de Kanji et j’aimerais publier ce programme dans le monde entier. Le problème est que je ne sais pas comment créer une “release”.

Je me rends compte que les systèmes * nix placent souvent des exécutables (ou des liens symboliques) dans des endroits tels que / usr / bin, et que les scripts de compilation les placent souvent automatiquement, mais il s’avère que j’ai écrit cette chose dans Haskell.

Alors utilisez simplement la cabale!

… Je vous entends dire. Eh bien, je le ferais, sauf que mon programme contient une bonne quantité de fichiers de données sur lesquels il lit et, bien sûr, le programme doit savoir où se trouvent ces fichiers. En utilisant cabal, l’exécutable ne serait-il pas lancé sur un chemin de fichier de projet étrange:

/usr/share/haskell/cabal/morecabal-1.0.4/myproject-1.3.4.1.a/thisisridiculous/

Actuellement, je lance l’exécutable hors de son répertoire source et recherche les fichiers de données dans “./data”. Existe-t-il un format standard pour les chemins d’installation afin de pouvoir indiquer mon programme à l’avance dans la source où rechercher les données?

Mon objective final est d’en faire un package Arch Linux. Quelqu’un peut-il m’aider à démarrer?

Pour les curieux, le repo git est là . Merci d’avance pour toute aide que vous pouvez donner.

Découvrez comment un projet Haskell existant, tel que Gitit, est intégré à Arch linux . En particulier, le PKGBUILD.

Vous pouvez également télécharger le gitit tarball et voir comment utiliser la directive data-files: dans le fichier gitit.cabal .

Je ne lis pas Haskell, mais d’après ce que je comprends de la source, le fichier Paths_gigit.hs (que l’on peut trouver ici .) Est généré par Cabal, de sorte que vous n’avez à vous soucier que des chemins relatifs. Il suffit ensuite de l’importer et d’utiliser la fonction getDataFileName .

Emballage pour Arch:

  • Le guide wiki
  • La description du fichier PKGBUILD
  • Le guide makepkg

Emballage pour cabale:

  • Wikibook d’emballage Haskell
  • Le guide de l’utilisateur de Cabal

Emballage pour les deux:

  • Directives du paquet Haskell sur le wiki Archlinux

La manière portable de référencer les fichiers de données dans un projet Cabal consiste à les nommer dans la propriété data-files de votre fichier .cabal .

Cabal va générer un module appelé Paths_packagename qui définit une fonction

 getDataFileName :: FilePath -> IO FilePath 

que votre code peut utiliser pour déterminer où les fichiers de données ont été installés.

Voir: Accéder aux fichiers de données à partir du code du package