On Fri, Jul 23, 2010 at 12:33 PM, wren ng thornton <w...@freegeek.org> wrote: > Magnus Therning wrote: >> >> On Thu, Jul 22, 2010 at 11:52, Ross Paterson <r...@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 <r...@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)
Ah, this clears up one of my bugs. Perhaps cabal should print a warning if you have a Setup.hs file, _and_ try to use Simple? It'd at least give the hint that they're unhappy together. mark -- A UNIX signature isn't a return address, it's the ASCII equivalent of a black velvet clown painting. It's a rectangle of carets surrounding a quote from a literary giant of weeniedom like Heinlein or Dr. Who. -- Chris Maeda _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe