2016-08-05 4 views
0

J'ai trouvé une bonne bibliothèque audio pour traiter l'audio côté serveur, mais j'ai des problèmes en faisant réellement partie de yesod (peut-être parce que je ne comprends pas la cabale/pile très bien encore).Haskell - ajout d'un paquet de la source à un projet Yesod

J'essaie d'inclure ce module Sound.File.Sndfile et j'ai téléchargé ses fichiers source d'ici http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.27.tar.gz. Quelles sont les étapes pour y arriver?

Modifier

J'ai essayé de faire ces étapes,

runhaskell Setup.hs configure --ghc 
runhaskell Setup.hs build 
runhaskell Setup.hs install 

Mais il ne dispose pas d'un fichier Setup.hs.

EDIT 2

J'ai ajouté la dépendance hsndfile comme suggéré par Alexis King, mais j'obtiens l'erreur suivante lors buiding:

[ 1 of 59] Compiling Enums   (Enums.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.7.0/build/Enums.o) 
<command line>: can't load .so/.DLL for: libsndfile.so (libsndfile.so: cannot open shared object file: No such file or directory) 

-- While building package Fastwork-0.0.0 using: 
     /home/geppetto/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.7.0-ghc-7.10.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.7.0 build lib:Fastwork exe:Fastwork --ghc-options " -ddump-hi -ddump-to-file" 
    Process exited with code: ExitFailure 1 

J'ai téléchargé libsndfile-1.0.25.tar.gz et j'extrait ce, et couru, ./configure, make, make install. Quand j'ai essayé de refaire stack build dans mon projet Yesod, l'erreur était la même. Qu'est-ce que je rate?

Répondre

2

Y a-t-il une raison pour laquelle vous ne pouvez pas utiliser any of these libraries that are already on Hackage? Il sera probablement beaucoup plus facile, plus sûr, et plus prévisible si vous utilisez un paquet d'un catalogue de paquets réel plutôt que d'utiliser un tarball.

Si vous vraiment voulez utiliser cette bibliothèque que vous avez trouvé, et que vous utilisez pile, vous pouvez l'ajouter à la section packages de votre fichier stack.yaml:

packages: 
- '.' 
- location: http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.27.tar.gz 
    extra-dep: true 

Ensuite, vous pouvez ajouter une dépendance sur libsndfile à votre fichier .cabal. Cependant, je me méfierais en fonction des paquets provenant d'URL arbitraires, donc je téléchargerais probablement ce paquet et je le décompresserais. Ensuite, vous pouvez simplement pointer vers un chemin d'accès local au lieu d'une URL distante:

packages: 
- '.' 
- location: ./some/path/to/libsndfile 
    extra-dep: true 

Pour plus d'informations, consultez le documentation for the stack.yaml file.

+0

Je vais essayer de cette façon, il n'est pas nécessaire que ce soit de la source – FtheBuilder