Henning Thielemann lemming at
Sat Mar 1 18:02:35 UTC 2014

Am 01.03.2014 16:57, schrieb Henning Thielemann:

> Treating check-pvp as compiler driven by Cabal sounds reasonable, since
> this would do all the preprocessing stuff and would also work on
> tarballs etc. However the haskell-name framework seems to expect a
> binary executable as compiler. According to
> I would have to design the checker as a tool that only reads modules,
> not the package description, called maybe 'check-modules-pvp' and then run
> $ cabal install --haskell-suite -w check-modules-pvp mypkg

I have pushed a new version to the repo that contains two executables: 
The stand-alone executable check-pvp and the haskell-suite compiler 

You can run the compiler with
$ cabal install --haskell-suite -w check-pvp-compiler

I got some problems. Using NamesDB as in hs-gen-iface works, but I 
guess, I do not need NamesDB and thus haskell-names. I tried to define a 
StandardDB type with a custom name type:

data CheckPVPName = CheckPVPName

instance IsDBName CheckPVPName where getDBName = Tagged "check-pvp"

theTool :: Compiler.Simple (StandardDB CheckPVPName)

However with this definition the above 'cabal install' fails in 
configuration phase

utility$ cabal install --haskell-suite -w check-pvp-compiler
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: utility-ht-0.0.10 (user goal)
next goal: base (dependency of utility-ht-0.0.10)
rejecting: base-,,,,,,,,,,,, (only already installed
instances can be used)
rejecting: base- (conflict: base => base>=4.0 && <4.3)
rejecting: base- (conflict: base => base>=4.0 && <4.2)
Dependency tree exhaustively searched.

I guess I do not understand the purpose of the StandardDB type and its 
associated name type.

There is another problem: With NamesDB it worked, but the final 
installation phase fails, because check-pvp-compiler does not generate 
files. What is the recommended way to cope with compilers that do not 
write something to files?

More information about the cabal-devel mailing list