IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Haskell Discussion :

Cabal et développement


Sujet :

Haskell

  1. #1
    Membre du Club Avatar de limestrael
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 86
    Points : 57
    Points
    57
    Par défaut Cabal et développement
    J'aurais deux questions très liées :

    Question 1: Cabal est un bon outil pour installer/distribuer ses packages, mais je voulais savoir, lors du développement d'un projet en Haskell, utilisez-vous cabal pour vos compilations répétées ou bien compilez-vous à la main avec ghc --make ?

    Question 2: Actuellement, je bosse sur le binding d'une librairie appelée SFML (plus précisément son binding C CSFML, si certains connaissent). Il s'agit d'une SDL-like (mais en mieux).
    Je progresse ainsi dans mon développement : j'ai un exécutable de test, que j'étoffe un peu à chaque fois que je rajoute quelques fonctionnalités à mon binding, de manière à les utiliser vite fait. Actuellement j'ai un script shell qui compile ma lib, et un autre mon exécutable, méthode que je trouve un peu crade au vu de l'existence de cabal.
    Auriez-vous une meilleure façon de procéder pratique pour le développement ? Via cabal-install ?
    Le truc est que si je compile la lib à coup de 'cabal build' mon exécutable ne peut pas la trouver quand je fais 'ghc --make testHSFML.hs', pourtant cabal m'indique bien à la fin du build: "Registering HSFML-1.5..."
    Je suis obligé de 'cabal install' ma lib, et je vais évidemment pas le faire à chaque modif dans le code.
    Je n'arrive également pas à rajouter mon exécutable au .cabal. J'ai l'erreur suivante au configure si j'indique HSFML dans ses dépendances :
    cabal: internal error: could not construct a valid install plan.
    The proposed (invalid) plan contained the following problems:
    The following packages are involved in a dependency cycle HSFML-1.5
    Il n'aime pas que l'exécutable du .cabal dépende de la lib qui est dans le même .cabal, on dirait. Mais le truc est que si je n'indique pas cette dépendance, au build j'ai :
    Could not find module `SFML.Direct.Types.Enums':
    It is a member of the hidden package `HSFML-1.5'.
    Perhaps you need to add `HSFML' to the build-depends in your .cabal file.
    it is a hidden module in the package `HSFML-1.5'
    Je pourrais faire 2 packages, mais pour le développement ça va être chiant...

    J'utilise le Build-Type 'Simple', c'est peut-être ça qui ne va pas, je ne sais pas.

  2. #2
    Membre du Club Avatar de limestrael
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 86
    Points : 57
    Points
    57
    Par défaut
    Bon, j'ai pu trouver une réponse (partielle ?) à ma question 2:

    Dans mon .cabal, je ne mets que la librairie, pas mon main de test. Je 'cabal configure' une fois et 'cabal installe' à chaque modif du code de la lib.
    Ensuite, cabal génère dans un fichier dist/package.conf.inplace contenant les infos sur le package juste compilé (ça doit être à ça que correspond le 'Registering HSFML-1.5...').
    Après, il faut indiquer l'existence de ce fichier à GHC lorsque je tente de compiler mon main :
    ghc --make -package-conf dist/package.conf.inplace main.hs
    Au passage, il ne faut pas exécuter ce code dans le dossier où se trouve le dossier racine du code du package (usuellement également le dossier où se trouve le .cabal), car sinon GHC va trouver le code et non la librairie déjà compilée via cabal, et va recompiler toute la librairie.

    C'est la seule façon pratique de faire que j'ai trouvée. Le truc est que je ne sais pas si je dois vraiment procéder comme ça (je n'ai rien vu sur le net disant de faire comme ça, par exemple).

    A part ça, je n'arrive toujours pas à avoir une lib et un exécutable en dépendant dans le même .cabal...

Discussions similaires

  1. Comment Développer en équipe ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 45
    Dernier message: 19/11/2007, 00h15
  2. Quel outil choisir pour un développement SQL-Server ?
    Par Mouse dans le forum Débats sur le développement - Le Best Of
    Réponses: 23
    Dernier message: 12/08/2003, 06h23
  3. Quel outil pour du développement Client/Serveur (Win XP) ?
    Par jey_bonnet dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 02/11/2002, 14h57
  4. [Kylix] Kylix et le développement web...
    Par nahmsath dans le forum EDI
    Réponses: 4
    Dernier message: 24/10/2002, 19h27
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo