Re: [Haskell-cafe] Using cmake with haskell

2011-06-21 Thread Evan Laforge
On Sun, May 15, 2011 at 8:21 AM, Malcolm Wallace malcolm.wall...@me.com wrote:
 On 5/14/11 6:12 PM, Nathan Howell wrote:
 Waf supports parallel builds and works with GHC without too much trouble.

 I'm surprised no-one has yet mentioned Shake, a build tool/library written in 
 Haskell.  It does parallel builds, multi-language working, accurate 
 dependencies, etc etc.  I use it every day at work, and it is robust, 
 scalable, and relatively easy to use.

It's not surprising if it's not public.  No one is surprised that no
one has mentioned the internal Google build system, for instance.

 Open source implementation here:
    https://github.com/batterseapower/openshake

It's good to see this, but is it usable yet?  I was assuming from the
fact that it's not on hackage yet that it's still experimental.  If
Shake is still hopefully going to be released then maybe there's not
a lot of motivation to work on a replacement, but if it's in no one
knows limbo then that could stall a replacement too.  I don't really
care so much about build systems that I'd write one from scratch or
bootstrap an experiment, but if there were something that was already
usable that would be a different story...

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-17 Thread Maciej Marcin Piechotka
On Sat, 2011-05-14 at 17:32 -0700, Gregory Crosswhite wrote:
 On 5/14/11 1:25 PM, Maciej Marcin Piechotka wrote:
  (to mention
  one which is often neglected - parallel build).
 
 While I do appreciate you stepping in to defend autotools (if for no 
 other reason then because someone has to so that the discussion is 
 balanced :-) ), I think that you are wrong to say that autotools is 
 unusual in getting the idea of parallel builds right, since in my 
 experience the opposite is the case:  most systems support parallel 
 builds --- such as SCons, CMake, I think waf, etc. --- with Cabal being 
 an outlier here.
 
 Cheers,
 Greg

Hmm. I could bet I have read it somewhere but I cannot find it right
now. Assume I haven't said it.

Regards


signature.asc
Description: This is a digitally signed message part
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-15 Thread Nathan Howell
For some projects, the overhead of building proper Haskell bindings is far
greater than coding more in C++ and having a simple binding layer. The same
goes for Scala and Python. We've been using Protocol Buffers as the common
pickling engine, which alleviates us from porting everything (lots of
libraries...) to Haskell. Similar enough to using JSON or XML to interop
between Warp, Yesod, Happstack, etc... and a web client running javascript.
I'm sure many of us would much rather code in Haskell everywhere but it's
not practical all the time, at least not yet.

Waf supports building code in dependent order, providing it knows about the
dependencies. A simple regex based Haskell scanner does the job for me,
describing dependencies within a single package. Cross package dependencies
need to be explicit (as with cabal) because of overlapping/conflicting
module names across packages. Overall it comes out to about 200 lines of
Python, and does enough that I don't use cabal-install for my own projects.
Building Haskell code in parallel with C++ can save quite a bit of time, and
I personally don't enjoy waiting for unnecessarily serialized builds
regardless of language.

-n

On Sat, May 14, 2011 at 8:54 PM, Gregory Crosswhite 
gcr...@phys.washington.edu wrote:

  What on earth are you doing that mixes Haskell, C++, Scala, and Python?  I
 am very intrigued by the very idea of such a project.  :-)

 I have to confess that don't care for waf myself because I had unpleasant
 experiences using it which stemmed in part from its design which I also
 didn't like.  For example, if you don't get the proper complex incantations
 correct then it will simply fail silently without giving you any hint as to
 what you might have gotten wrong, even for the most basic of tasks!  Also,
 the last time I looked into waf in depth a couple of years ago the basic
 task model was designed around a language like C++  where there is a build
 phase and then a link phase and everything within a phase can be built in
 any order, so to compile something like Haskell code you need to essentially
 put every file in its own phase, but the scheduler they used for phases was
 not optimized at all precisely because they were assuming a C++-like model
 where there were only a couple of phases;  they could have changed this
 since then, though.

 But anyway, I am always willing to keep an open mind about tools if someone
 convinces me that my current negative impressions about them is wrong or
 outdated, so if you got waf to build a project with all four of those
 languages then that does definitely give it extra points in my book.  :-)

 Cheers,
 Greg


 On 5/14/11 6:12 PM, Nathan Howell wrote:

 Waf supports parallel builds and works with GHC without too much trouble. I
 use it in a mixed Haskell, C++, Scala and Python build. If there is interest
 I could conceivably clean up the ghc waf tool and release it.

 On Sat, May 14, 2011 at 5:32 PM, Gregory Crosswhite 
 gcr...@phys.washington.edu wrote:

 On 5/14/11 1:25 PM, Maciej Marcin Piechotka wrote:

 (to mention
 one which is often neglected - parallel build).


  While I do appreciate you stepping in to defend autotools (if for no
 other reason then because someone has to so that the discussion is balanced
 :-) ), I think that you are wrong to say that autotools is unusual in
 getting the idea of parallel builds right, since in my experience the
 opposite is the case:  most systems support parallel builds --- such as
 SCons, CMake, I think waf, etc. --- with Cabal being an outlier here.


 Cheers,
 Greg

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe




___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-15 Thread Malcolm Wallace
 On 5/14/11 6:12 PM, Nathan Howell wrote:
 Waf supports parallel builds and works with GHC without too much trouble. 

I'm surprised no-one has yet mentioned Shake, a build tool/library written in 
Haskell.  It does parallel builds, multi-language working, accurate 
dependencies, etc etc.  I use it every day at work, and it is robust, scalable, 
and relatively easy to use.

Introductory video here:
http://vimeo.com/15465133

Open source implementation here:
https://github.com/batterseapower/openshake

Regards,
Malcolm

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-15 Thread Rogan Creswick
On Sun, May 15, 2011 at 8:21 AM, Malcolm Wallace malcolm.wall...@me.com wrote:
 On 5/14/11 6:12 PM, Nathan Howell wrote:
 Waf supports parallel builds and works with GHC without too much trouble.

 I'm surprised no-one has yet mentioned Shake, a build tool/library written in 
 Haskell.  It does parallel builds, multi-language working, accurate 
 dependencies, etc etc.  I use it every day at work, and it is robust, 
 scalable, and relatively easy to use.

I didn't realize Shake had been released! Thanks for pointing that out!

--Rogan


 Introductory video here:
    http://vimeo.com/15465133

 Open source implementation here:
    https://github.com/batterseapower/openshake

 Regards,
    Malcolm

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-15 Thread Max Bolingbroke
On 15 May 2011 18:46, Rogan Creswick cresw...@gmail.com wrote:
 On Sun, May 15, 2011 at 8:21 AM, Malcolm Wallace malcolm.wall...@me.com 
 wrote:
 On 5/14/11 6:12 PM, Nathan Howell wrote:
 Waf supports parallel builds and works with GHC without too much trouble.

 I'm surprised no-one has yet mentioned Shake, a build tool/library written 
 in Haskell.  It does parallel builds, multi-language working, accurate 
 dependencies, etc etc.  I use it every day at work, and it is robust, 
 scalable, and relatively easy to use.

 I didn't realize Shake had been released! Thanks for pointing that out!

The version Malcolm uses is closed source - he has pointed you to my
poorly-documented open-source reimplementation. Any bugs+infelicities
you find are my fault rather than problems with the Shake concept :-)

Max

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-14 Thread Maciej Marcin Piechotka
On Wed, 2011-05-11 at 18:13 -0700, Gregory Crosswhite wrote:
 on top of it and have to start from scratch --- or worse, *autotools* 
 (SHUDDER!) 

While i don't have much experience autotools seems to be villainize.
Sure it's old and have it's quirks. It is hard to learn and many people
use it improperly. It have horrible libtool - but on the other hand it
have many features that others had not in any sane manner (to mention
one which is often neglected - parallel build).

Regards


signature.asc
Description: This is a digitally signed message part
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-14 Thread Gregory Crosswhite

On 5/14/11 1:25 PM, Maciej Marcin Piechotka wrote:

(to mention
one which is often neglected - parallel build).


While I do appreciate you stepping in to defend autotools (if for no 
other reason then because someone has to so that the discussion is 
balanced :-) ), I think that you are wrong to say that autotools is 
unusual in getting the idea of parallel builds right, since in my 
experience the opposite is the case:  most systems support parallel 
builds --- such as SCons, CMake, I think waf, etc. --- with Cabal being 
an outlier here.


Cheers,
Greg

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-14 Thread Nathan Howell
Waf supports parallel builds and works with GHC without too much trouble. I
use it in a mixed Haskell, C++, Scala and Python build. If there is interest
I could conceivably clean up the ghc waf tool and release it.

On Sat, May 14, 2011 at 5:32 PM, Gregory Crosswhite 
gcr...@phys.washington.edu wrote:

 On 5/14/11 1:25 PM, Maciej Marcin Piechotka wrote:

 (to mention
 one which is often neglected - parallel build).


 While I do appreciate you stepping in to defend autotools (if for no other
 reason then because someone has to so that the discussion is balanced :-) ),
 I think that you are wrong to say that autotools is unusual in getting the
 idea of parallel builds right, since in my experience the opposite is the
 case:  most systems support parallel builds --- such as SCons, CMake, I
 think waf, etc. --- with Cabal being an outlier here.


 Cheers,
 Greg

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-14 Thread Gregory Crosswhite
What on earth are you doing that mixes Haskell, C++, Scala, and Python?  
I am very intrigued by the very idea of such a project.  :-)


I have to confess that don't care for waf myself because I had 
unpleasant experiences using it which stemmed in part from its design 
which I also didn't like.  For example, if you don't get the proper 
complex incantations correct then it will simply fail silently without 
giving you any hint as to what you might have gotten wrong, even for the 
most basic of tasks!  Also, the last time I looked into waf in depth a 
couple of years ago the basic task model was designed around a language 
like C++  where there is a build phase and then a link phase and 
everything within a phase can be built in any order, so to compile 
something like Haskell code you need to essentially put every file in 
its own phase, but the scheduler they used for phases was not optimized 
at all precisely because they were assuming a C++-like model where there 
were only a couple of phases;  they could have changed this since then, 
though.


But anyway, I am always willing to keep an open mind about tools if 
someone convinces me that my current negative impressions about them is 
wrong or outdated, so if you got waf to build a project with all four of 
those languages then that does definitely give it extra points in my 
book.  :-)


Cheers,
Greg

On 5/14/11 6:12 PM, Nathan Howell wrote:


Waf supports parallel builds and works with GHC without too much 
trouble. I use it in a mixed Haskell, C++, Scala and Python build. If 
there is interest I could conceivably clean up the ghc waf tool and 
release it.



On Sat, May 14, 2011 at 5:32 PM, Gregory Crosswhite 
gcr...@phys.washington.edu mailto:gcr...@phys.washington.edu wrote:


On 5/14/11 1:25 PM, Maciej Marcin Piechotka wrote:

(to mention
one which is often neglected - parallel build).


While I do appreciate you stepping in to defend autotools (if for
no other reason then because someone has to so that the discussion
is balanced :-) ), I think that you are wrong to say that
autotools is unusual in getting the idea of parallel builds right,
since in my experience the opposite is the case:  most systems
support parallel builds --- such as SCons, CMake, I think waf,
etc. --- with Cabal being an outlier here.


Cheers,
Greg

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org mailto:Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe




___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-13 Thread Yves Parès
Talking about that, what are the differences between cabal-install and
cabal-dev? Is cabal-dev (which I've never used nor installed) more suited
for incremental development?


2011/5/12 Jason Dagit dag...@gmail.com



 On Wed, May 11, 2011 at 6:13 PM, Gregory Crosswhite 
 gcr...@phys.washington.edu wrote:
 [snip]

  1) Cabal is a tool that can only be used to build Haskell packages with
 some supporting C/C++ code thrown in

 and

 2) Cabal is currently the only tool that can realistically be used to
 properly build and install Haskell packages due to the great complexity
 involved with getting all the details right


  I agree with much of what you said.  I created this feature request for
 cabal, that I think would go quite aways towards addressing the problem, but
 someone marked it as wontfix:
   http://hackage.haskell.org/trac/hackage/ticket/815

 In my opinion, the two most valuable things about cabal are its good
 dependency calculation and it allowed hackage to gain momentum.
  Unfortunately, we are also forced to use it as a build system and it's
 quite inadequate for that task.  I say forced because there is no standard
 way to extract the dependency calculations from it.  You have to write a
 Setup.hs file to extract it and it's not trivial. If you succeed at that
 task, then you can't even reuse the code without copypasting it later.

 In fact, I never invoke cabal-install directly anymore.  I've corrupted my
 package databases too many times.  I make sure to always use cabal-dev for
 everything.  I think that says something about cabal's efficacy as a build
 system.

 Jason
 ps. As soon as I figure out a way to get infinite free time I'll implement
 the translation to makefiles myself...

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-13 Thread Jason Dagit
On Fri, May 13, 2011 at 7:47 AM, Yves Parès limestr...@gmail.com wrote:

 Talking about that, what are the differences between cabal-install and
 cabal-dev? Is cabal-dev (which I've never used nor installed) more suited
 for incremental development?


Cabal-dev is a wrapper around caba-install that primarily adds sandboxing
but also adds support for loading your project into ghci.  The sandboxing
makes it possible to install multiple versions without disrupting other
things.  It gives you isolation so that if cabal-install overwrites a
package it only affects your current build dir.  I've completely stopped
getting the diamond of death in my dependencies since I started using it.

Someone made a great write up of how to get started with cabal-dev:
http://www.reddit.com/r/haskell/comments/f3ykj/psa_use_cabaldev_to_solve_dependency_problems/

It's actually very easy to get started with but extra documentation never
hurts :)

Jason
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-13 Thread Mats Rauhala
A little self-promotion, but I wrote this today:
http://users.utu.fi/machra//posts/2011-05-13-environment.html

A post about interfacing vim and cabal-dev.


pgpE2vFrpuUPH.pgp
Description: PGP signature
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-12 Thread Jason Dagit
On Wed, May 11, 2011 at 6:13 PM, Gregory Crosswhite 
gcr...@phys.washington.edu wrote:
[snip]

 1) Cabal is a tool that can only be used to build Haskell packages with
 some supporting C/C++ code thrown in

 and

 2) Cabal is currently the only tool that can realistically be used to
 properly build and install Haskell packages due to the great complexity
 involved with getting all the details right


I agree with much of what you said.  I created this feature request for
cabal, that I think would go quite aways towards addressing the problem, but
someone marked it as wontfix:
  http://hackage.haskell.org/trac/hackage/ticket/815

In my opinion, the two most valuable things about cabal are its good
dependency calculation and it allowed hackage to gain momentum.
 Unfortunately, we are also forced to use it as a build system and it's
quite inadequate for that task.  I say forced because there is no standard
way to extract the dependency calculations from it.  You have to write a
Setup.hs file to extract it and it's not trivial. If you succeed at that
task, then you can't even reuse the code without copypasting it later.

In fact, I never invoke cabal-install directly anymore.  I've corrupted my
package databases too many times.  I make sure to always use cabal-dev for
everything.  I think that says something about cabal's efficacy as a build
system.

Jason
ps. As soon as I figure out a way to get infinite free time I'll implement
the translation to makefiles myself...
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Using cmake with haskell

2011-05-11 Thread Robert Clausecker
Hello readers of haskell-cafe!

I asked this question on Stackoverflow:

http://stackoverflow.com/q/5969616/417501

Because I want to get a good answer, I cross post it here. It may be
interesting:

Is it possible to use cmake for Haskell projects?

I am planning a project written in Haskell, maybe there are some
parts in C as well. For the buildsystem I decided against the
common choice for Haskell programs cabal, mainly because I want
to learn how building programs in other languages works.

I heard about CMake and I think it is a pretty cool product.
Although I have no knowledge in how to use it, I want use CMake
for that project, just to find out how it works. Googleing did
not reveal any facts about how to use cmake with haskell, and
all tutorials I read were rather confusing. Is it possible, and
if yes, how is it possible, to compile a projectwritten in
Haskell using CMake?

Robert Clausecker


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-11 Thread Bryan O'Sullivan
On Wed, May 11, 2011 at 12:54 PM, Robert Clausecker fuz...@gmail.comwrote:

Is it possible to use cmake for Haskell projects?


Yes, but you shouldn't. Just use the cabal build system instead. It solves
the same kinds of problems, but requires far less effort than dealing with
CMake.


I heard about CMake and I think it is a pretty cool product.


It is not. It's a fairly terrible piece of software. It has a grotesque
macro language, lots of strange undocumented behaviours, and is generally a
nightmare to work with. The only thing it's adequate for is managing the
build and packaging of very complex cross-platform software packages. You
certainly shouldn't use it for anything else. In fairness, the CMake
developers are very nice and responsive, which is just as well given the
number of times you'll have to ask them why isn't this doing something
sane? if you use it for a real project.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-11 Thread Marc Weber
Excerpts from Robert Clausecker's message of Wed May 11 21:54:32 +0200 2011:
 Because I want to get a good answer, I cross post it here. It may be
 interesting:
If you do this you should consider adding a reference to this thread on
stackoverflow as well .. You can read this mailinglist online
(haskell.org - mailinglists or such)

why cmake?
+ maybe some paralell compiling possible (that's a make feature)
- ghc has to be run once for each file (slow down)

cabal is a standard. And we all like it for that.
It makes packaging all the libraries for nixos/gentoo/debian/... a *lot*
easier.

Not everything which can be done should be done as well.
Think alone about all the dependency handling done in cabal. There is no
need to duplicate this all.

So the interesting question would be discussing which parts of your
projects are in C for what reason. Then you should consider raising this
question again if cabal can't be made compiling those view files easily.

If you know what you need its also a good time to ask again for other
projects having already solved build tasks like this.

If you're looking for work to learn something new and to get your hands
dirty join darcs, yi, .. or such.
Sourceforge projects can even flag themselves as need help at 

Marc Weber

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Using cmake with haskell

2011-05-11 Thread Gregory Crosswhite

On 5/11/11 3:11 PM, Bryan O'Sullivan wrote:

It's a fairly terrible piece of software.
My experience is that it is the only cross-platform build system I have 
used to date that hasn't made my eyes bleed, though I only use it for 
C/C++/Fortran.  I suppose that counts as a personal testimonial in favor 
of it.  Put another way: it is definitely the worst of all build systems 
--- except for all the rest.  :-)


Also, my most recent experience with Cabal is that it is a serious PITA 
if you want to do any non-trivial cross-language stuff with it, since 
essentially its only support for non-Haskell stuff is its hard-coded 
support for C/C++.  It is true that you can add hooks to do arbitrary 
stuff, but at that point you are basically bolting your own build system 
on top of it and have to start from scratch --- or worse, *autotools* 
(SHUDDER!)


At one point I was working on my own build system Blueprint that was a 
generalized build system where GHC was just one specific tool within the 
system, but although I got it working just fine, at some point 
implementing all of the of the crazy stuff that is needed for proper GHC 
package support burned me out so I stopped short of finishing it since 
it's not like I didn't have other things to do with my time.  :-)  You 
might ask why I didn't just use the Cabal libraries to help myself out, 
and while I was able to get some use out of them unfortunately most the 
functionality in the Cabal libraries is simply not designed to be used 
by third parties.  (For the curious, the sources are available at 
www.github.com/gcross/blueprint;  look at the *blueprint* branch, not 
the *master* branch which was a first attempt that has been superseded 
by a complete rewrite.)


So anyway, what it comes down to in my experience is

1) Cabal is a tool that can only be used to build Haskell packages with 
some supporting C/C++ code thrown in


and

2) Cabal is currently the only tool that can realistically be used to 
properly build and install Haskell packages due to the great complexity 
involved with getting all the details right


Cheers,
Greg

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe