Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I create a suitable .tar.gz file for use with `cabal upload`?

The standard way to share a Haskell library with other programmers is to create a Cabal package and upload it to http://hackage.haskell.org. I've written a library I wish to share, and I've successfully created a Cabal package using the guidelines online for creating cabal files. I've built the package and installed it locally—works fine. Now I want to upload it to Hackage. But cabal upload wants a .tar.gz file. There are reams of Cabal documentation, and I can't find what is supposed to go into this .tar.gz or how I'm supposed to create it.

Who knows, or knows where I can find out, how to create a .tar.gz that will work properly with cabal upload?

like image 296
Norman Ramsey Avatar asked Apr 06 '10 19:04

Norman Ramsey


2 Answers

From the wiki:

Since the code is cabalised, we can create a tarball with cabal-install directly (you can also use runhaskell Setup.hs sdist, but you need tar on your system 1):

$ cabal sdist
Building source dist for haq-0.0...
Source tarball created: dist/haq-0.0.tar.gz

This has the advantage that Cabal will do a bit more checking, and ensure that the tarball has the structure that HackageDB expects. Note that it does require the LICENSE file to exist. It packages up the files needed to build the project; to include other files (such as Test.hs in the above example, and our README), we need to add:

extra-source-files: Tests.hs README

to the .cabal file to have everything included.

like image 173
Dan Avatar answered Sep 27 '22 17:09

Dan


Or if you're using darcs,

darcs dist

Note that cabal sdist will only pick up files listed in the .cabal file, so you might need to add READMEs etc under extra-source-files:

You can check you've a valid tarball with

cabal check

which runs the same tests that Hackage will run.

like image 27
Don Stewart Avatar answered Sep 27 '22 15:09

Don Stewart