[C2hs] Re: [Haskell] building c2hs on winows

Manuel M T Chakravarty chak at cse.unsw.edu.au
Thu Jul 6 20:41:55 EDT 2006


Duncan wrote,
> > > Actually it turns out the c2hs is doing a lot of things that are not
> > > portable to windows. It'll need some effort to fix. Any helpers?
> > 
> > What else apart from pathname separators?  It'd be great if somebody
> > could look into that.  
> 
> The use of configure(.in) is the main problem. Most Windows users do not
> have mingw/cygwin.
> 
> I've been looking through what c2hs uses configure for and what portable
> replacements there are:
> 
>       * for finding the os and arch in c2hs/toplevel/C2HSConfig.hs.in
>         for the platform spec system. Perhaps this could be replaced
>         with System.Info.{os,arch} ?

If it is sufficiently accurate.  The handling of bitfields (paddings)
etc depends on the os/arch and we need to know which conventions to
use.  

Another problem is that the current approach allows cross-compilation
(in configure you can specify an os/arch, rather than query).  We need
to support cross-compilation somehow (eg, Tony Sloane needed it for
generating bindings for the PalmPilot).

>       * finding the temp dir. this is not actually used anywhere.

Yes, that may be obsolete now.

>       * substituting the c2hs version into the Version.hs module. This
>         can be replaced with Cabal's new Path_c2hs.hs feature.

My plan was to use VersionTool for c2hs anyway.  That does the version
thing and integrates nicely with darcs:
  
  http://www.cse.unsw.edu.au/~chak/haskell/VersionTool/

> The postinst.sh could be eliminated entirely. All it's used for is
> finding the location where a data file was installed. This can now be
> found using Cabal's new Path_c2hs.hs feature. Cabal generates that
> module which provides a portable way of finding the location of data
> files. Also the field 'Data-Files:' can be added to the c2hs.cabal file
> to specify extra data files that need to be installed.

postInst.sh was only meant as a stop gap measure with older Cabal.  It
should definitely go.

> So I think the only things left are finding the copyright notice and a
> couple other items that are kept centrally in the c2hs.cabal file. For
> the moment they could perhaps just be duplicated. I've got a suggestion
> for how to deal with that case better in future which I posted to the
> cabal-devel list:
> http://www.haskell.org//pipermail/cabal-devel/2006-July/000027.html

Ah!  Interesting.  Issac was wondering whether VersionTool should be
integrated with Cabal.  That's kind of what you propose.  It would
certainly be nice to have it integrated (esp, as Cabal parses the Cabal
file anyways, as you note).  I am not so sure about the darcs features
of VersionTool (as in, not sure how people would feel about having them
in Cabal), but maybe they can be optional in some way (eg, something
that may be activated via some specification in Setup.hs).

Manuel




More information about the Haskell mailing list