We use Jenkins to build our applications. You can have Jenkins slaves
for different platforms. We also use cabal-dev to sandbox the builds,
separating the environments for different executables. This solution
does require one server for every OS you develop for, but I guess you
need that anyway, for testing.
Erik
On Thu, Jul 12, 2012 at 11:43 AM, Ivan Perez
wrote:
> Hi,
> I work developing multi-platform applications in Haskell. This poses
> the following problem: I cannot compile binaries for windows from
> linux (AFAIK). I "solved" this problem with the following
> sledgehammer: I installed windows in a VM, I installed GHC, I
> installed all the C/C++ headers & binaries of the libraries that I use
> (Gtk, OpenGL, SDL, OpenCV, etc.) their Haskell counterparts, and I
> created several scripts that connect to the VM using SSH, push the
> changes to the repo, cabal clean & cabal install all my packages in
> sequence without me having to even login into the windows machine. I
> did this because I was unable to get GHC to run properly in Wine at
> that time (over 2 years ago).
>
> This solution is still unsatisfactory because:
> 1) It's slow, even though Windows itself works fine (well, as well as
> windows can work, but it runs at a decent spped, I can play games and
> all).
> 2) When I update a library with lots of dependencies, or GHC itself,
> I have to rebuild almost everything. This is particularly painful with
> big packages like Gtk, for instance. Because I have to tell cabal
> where headers and libraries are located, updating a package is almost
> never an automatic process. I haven't always been able to make GHC
> "just pick them up" properly with pkg-config.
> 3) When I make a change in a library with lots of dependencies,
> recompiling all the packages can take several hours.
>
> I don't think it's a problem with my machine: I'm giving a fair amount
> of resources to windows, and I use a 3Ghz quadcore with 8GB of RAM.
>
> Another relevant fact is: I use this for commercial purposes. I have
> customers, each requiring a completely different program, they do not
> have infinite budgets and, if there's a problem in the compilation
> process and something requires my attention and manual intervention
> too often, my salary per hour can easily drop to a ridiculous amount.
> If I'm going to redo this, I'd rather just redo it once.
>
> Any suggestions? How do you solve this kind of problem in your work
> environment?
>
> Cheers,
> Ivan
>
> ___
> 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