[Gtk2hs-devel] move Gtk2HsSetup.hs to gtk2hs-buildtools

Axel Simon Axel.Simon at in.tum.de
Fri Nov 26 02:47:35 EST 2010

Hi Claus,

On Nov 25, 2010, at 18:43, Claus Reinke wrote:

>> Yes, but these are two separate show-stoppers:
>> a) the gtk2hs-buildtools contains only binaries. It does not  
>> register  as a package with ghc. Thus, if we make the gtk package  
>> depend on gtk2hs-buildtools, cabal would complain that (even after  
>> installing gtk2hs-buildtools) the gtk2hs-buildtools library is not  
>> there
> Could it become a convention that tool packages install a library with
> tool paths (and other relevant configuration data)? Similar to ghc- 
> paths.
> That way, the tool would be represented in the package database, and
> the paths would make use and configuration in dependent packages
> simpler.

I think this is a hack. For instance, it means that any application  
that uses any Gtk2Hs package would depend on gtk2hs-buildtools which  
is not really true and unnecessary. Does one really want extra  
executables (aka the build tools) lying around for any Gtk2Hs  
application? I think not. This is the case at the moment, but I think  
cabal should have the ability to install build tools for a package and  
possibly even remove them once the package has been built.

>>>> b) putting Gtk2HsSetup.hs in either gtk2hs-buildtools or any  
>>>> other library
>>>> means that ./Setup.hs has to run to realize that this library  is  
>>>> missing
>>>> and that it needs to be downloaded. However, ./Setup.hs  cannot  
>>>> be run
>>>> because it imports Gtk2HsSetup.hs which is not yet  available.
>>> There is MIN_VERSION_<package>(), so you might be able to check
>>> whether it is defined/has the right version, if it comes with the  
>>> tools
>>> package.
>> Does that work in Setup.hs? I thought that these CPP macros were
>> generated by the 'confgure' step, which may not have been run yet.
> argh. You're right - the macros are not available in Setup.hs. I
> keep forgetting that because it would be useful to have them
> there
>   http://hackage.haskell.org/trac/hackage/ticket/326
> So, if putting the file into the tools package doesn't suffice, we'd
> be back to passing in CPP macros from .cabal files (or using a front
> Setup.hs to check the configuration info before calling out to a
> version-specific SetupX.hs).

I tend to think that a recursive call to a different Setup.hs would be  
the best solution. The question is what features must be available in  
the outer Setup (checking for installed packages and being able to  
install those that are missing, for example) and which ones do we only  
need in the inner Setup (knowing the exact cabal version).


More information about the Libraries mailing list