[Haskell-cafe] Does exist something like "data-files" in Cabal, which works at compile time?

Alfredo Di Napoli alfredo.dinapoli at gmail.com
Fri Aug 16 14:25:52 CEST 2013


Thanks Dag, I'll give it a spin. Btw, I've successfully solved my problem
with the following Setup.hs, I'm posting it here in case someone will find
this useful in the future:

#!/usr/bin/env runhaskell
> import Distribution.Simple
> import Distribution.PackageDescription
> import Distribution.Package
> import Distribution.Simple
> import Distribution.Simple.LocalBuildInfo
> import Distribution.Simple.Setup
> import Distribution.Verbosity
> import Distribution.Simple.Utils
> import Paths_myproject
> main :: IO ()
> main = defaultMainWithHooks myHooks
>   where myHooks = simpleUserHooks { preBuild = copyResources }
> copyResources :: Args
>                      -> BuildFlags
>                      -> IO HookedBuildInfo
> copyResources args flags = do
>   installDir <- getDataDir
>   installDirectoryContents verbose "resources" (installDir ++ "/resources")
>   return emptyHookedBuildInfo


where "myproject" should be the name of your project, as in myproject.cabal.


On 16 August 2013 13:11, Dag Odenhall <dag.odenhall at gmail.com> wrote:

> You want extra-source-files. They'll be included in the tarball, and
> cabal always builds from the root of the package, so you can safely use
> relative paths.
>
>
> On Fri, Aug 16, 2013 at 11:58 AM, Alfredo Di Napoli <
> alfredo.dinapoli at gmail.com> wrote:
>
>> Hello guys,
>>
>> I'm pretty sure the answer is "no", but I was hoping to get some extra
>> insight / best practices. The problem can be summarised by this SO question
>> (not the OP, but I have the same problem):
>>
>>
>> http://stackoverflow.com/questions/15731170/cabal-how-to-add-text-file-as-a-build-dependency
>>
>> As someone states, "data-files" in for run-time, whereas I need to tell
>> cabal "please copy these files in place before trying to compile", so at
>> compile-time.
>>
>> Does something similar exist?
>>
>> I think the best solution, unless someone prove me wrong, is to create a
>> small startup script which copies the files for me (I *think* yesod is
>> using something similar, namely a script called EmbeddedFiles.hs) and then
>> triggers "cabal install" the usual way. Can you come up with a better way?
>>
>> Thanks in advance!
>>
>> Alfredo
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130816/9d557326/attachment.htm>


More information about the Haskell-Cafe mailing list