head aches in parser/Parser.hs

Thomas Schilling nominolo at googlemail.com
Tue Aug 5 04:30:22 EDT 2008


How is that better than having only the actual source files in you  
src directory?  All generated files will go into dist-*/ and there's  
no way to confuse anything.  Cabal does allow including pre-generated  
files in dist tarballs, but for development, generated files have  
intentionally be moved into dist/.

On 5 Aug 2008, at 06:51, Roman Leshchinskiy wrote:

>
> On 05/08/2008, at 14:15, Judah Jacobson wrote:
>
>> It seems that the old, pre-Cabal build system did not clean some or
>> all of the preprocessed files (such as Parser.hs).  This was not much
>> of a problem in practice, because the Makefiles used the relative
>> timestamps to tell whether to regenerate Parser.hs from Parser.y.  In
>> contrast, Cabal stores all generated files in a separate directory
>> (compiler/dist-stage[1/2]), and thus doesn't need to look at relative
>> timestamps; so it gets confused by the old, leftover Parser.hs et al.
>
> Ah, thanks for clarifying this. I did remove all the files by hand  
> eventually but couldn't figure out why this was necessary.
>
>> Ironically this is another reason that switching to Cabal is a win --
>> cleaning of preprocessed files happens automatically.
>
> Can't resist the urge to nitpick... IIUC, where the make-based  
> system would generate Parser.hs at most once per build Cabal now  
> (unnecessarily) regenerates it for each stage. So it is really  
> using a different algorithm with slightly worse performance but  
> better cleaning behaviour. It would have been trivial to implement  
> with make, too.
>
> But this has highlighted what is IMO a problem in Cabal's design.  
> It doesn't know that to generate the module Parser it needs to  
> start with Parser.y and just uses whatever source file it finds. If  
> that happens to be Parser.y things work but if it finds something  
> else things break. This looks very fragile to me. Could Cabal  
> perhaps allow .cabal files to explicitly specify which source files  
> to use? As in:
>
> exposed-modules: Parser(Parser.y)
>
> Roman
>
>
> _______________________________________________
> Cvs-ghc mailing list
> Cvs-ghc at haskell.org
> http://www.haskell.org/mailman/listinfo/cvs-ghc

/ Thomas
--
Push the envelope.  Watch it bend.



-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part
Url : http://www.haskell.org/pipermail/cabal-devel/attachments/20080805/a4b0ddd5/PGP.bin


More information about the cabal-devel mailing list