[Hackage] #438: Cabal should warn or fail if user specifies a bad configuration flag

Hackage trac at galois.com
Tue Dec 23 23:29:31 EST 2008


#438: Cabal should warn or fail if user specifies a bad configuration flag
----------------------------+-----------------------------------------------
  Reporter:  guest          |        Owner:        
      Type:  defect         |       Status:  new   
  Priority:  low            |    Milestone:        
 Component:  Cabal library  |      Version:  HEAD  
  Severity:  normal         |     Keywords:        
Difficulty:  normal         |   Ghcversion:  6.10.1
  Platform:                 |  
----------------------------+-----------------------------------------------
 Let us take the example of Yi.

 Yi specifies a flag:

 {{{
 flag ghcAPI
   Description: Enable linking with GHC API for advanced features.
   Default: False
 }}}

 The advanced features are nice indeed, and I wish to use them. So I
 configure thusly:

 {{{
 gwern at craft:33763~/bin/yi>runhaskell Setup configure --user -fghc-api
 Configuring yi-0.5.3...
 }}}

 (Or perhaps I specify  -fghcapi, or -fghc-API. There are a lot of quite
 reasonable permutations, and I suspect I have made every one of them over
 the past few months.)

 The point is, the flag is *wrong*. Completely wrong. If we turn on
 --verbose, we notice that

 {{{
 Flags chosen: testing=True, hacking=False, cocoa=False, pango=False,
 gtk=False, vty=True, ghcapi=False
 }}}

 The user is not going to get what she requested. Worse, the user has no
 idea! Everything looks dandy! There is not the slightest indication that
 something bad has happened. Half an hour later when Yi has compiled and
 installed, any user trying to use the Shim.* modules in their yi.hs is in
 for an unpleasant surprise.

 So the basic point here is: if the user specifies a flag, and the flag
 doesn't match any flags in the cabal file, *something* is wrong. Either
 the cabal file is damaged in someway, or the user mistyped. I think an
 error would be perfectly reasonable here, in the same way that missing
 fields is a reasonable reason for erroring out; but at a minimum a warning
 is warranted.

-- 
Ticket URL: <http://hackage.haskell.org/trac/hackage/ticket/438>
Hackage <http://haskell.org/cabal/>
Hackage: Cabal and related projects


More information about the cabal-devel mailing list