[Haskell-cafe] cabal, Setup.lhs example

Magnus Therning magnus at therning.org
Fri Jul 23 04:11:33 EDT 2010


On Fri, Jul 23, 2010 at 03:33, wren ng thornton <wren at freegeek.org> wrote:
> Magnus Therning wrote:
>>
>> On Thu, Jul 22, 2010 at 11:52, Ross Paterson <ross at soi.city.ac.uk> wrote:
>>>
>>> On Thu, Jul 22, 2010 at 11:31:21AM +0100, Magnus Therning wrote:
>>>>
>>>> On Thu, Jul 22, 2010 at 10:59, Ross Paterson <ross at soi.city.ac.uk>
>>>> wrote:
>>>>>
>>>>> Magnus is building by directly running the Setup.hs himself, which
>>>>> ignores
>>>>> the Build-Type.  To get cabal-install to use his Setup.hs, the
>>>>> Build-Type
>>>>> must be set to Custom.
>>>>
>>>> Oh, why*2?
>>>>
>>>> Why is the header there if it's not used by Cabal, and why does cabal
>>>> care?
>>>
>>> The field allows cabal to avoid compiling the Setup.hs in this case.
>>> It might also be used by other tools, e.g. one might only trust Simple
>>> packages.  Not all fields are used by all tools, and several of them
>>> do not affect the operation of the library (e.g. Home-page).
>>
>> All right, so why would cabal want to avoid compiling the Setup.hs?
>>
>> Of course this behaviour of cabal's means that I in the future will use
>> *Custom*
>> all the time, since I otherwise have to remember this surprising feature
>> of a
>> tool I never use.  Is there any reason *not* to do this?
>
> The main reason I could think of to avoid compiling it is for performance
> reasons. I'm not sure how compelling that is, but...
>
> As for why not to always use Custom, as mentioned there are cabal-aware
> tools out there besides cabal-install. For these other tools, there is a big
> difference between Simple and Custom. With Simple we (ideally) already know
> all the semantics of what Setup.hs does, and so we can wire that into our
> tools. With Custom we're forced into the position of doing Haskell source
> analysis since we now have to discover the semantics of an arbitrary Turing
> machine. That's a very high wall to climb if you're just wanting to write a
> simple tool for doing some kind of package analysis.
>
> (I don't think the behavior is surprising since I interpret Simple to mean
> that the Setup.hs file is unused/optional. Though clearly YMMV)

I always thought "Build-Type: Simple" was in some way connected to the
module Distribution.Simple.

/M

-- 
Magnus Therning                        (OpenPGP: 0xAB4DFBA4)
magnus@therning.org          Jabber: magnus@therning.org
http://therning.org/magnus         identi.ca|twitter: magthe


More information about the Haskell-Cafe mailing list