
In celebration of Hackage reachin over 1,000 unique packages, I decided that I would re-visit the problem of attempting to build them on Windows. I began by removing all existing Haskellness from my PC. I now have a vanilla Windows XP (32-bit) system with Service Pack 3. So, let's see what we can do here... - Install GHC 6.10.1. As you'd expect, no issues here. - Now, let's install stream-fusion. First let me ch... woah! What the hell? OK, it seems that Google is temporarily "broken". (All websites show up as "this site may damange your computer".) Obviously this has nothing to do with Haskell, but it makes navigating Hackage moderately more tedious. Oh well, anyway, where was I? Ah yes, I already have the tarball for stream-fusion-0.1.1, but I see that the latest release is 0.1.2.1. (Unfortunately, there doesn't appear to be any way to determine what the difference is between the two versions...) - Right, I've got the tarball for stream-fusion. Now let's see if it will install... J:\Haskell\unpack> runhaskell Setup configure J:\Haskell\unpack> runhaskell Setup build J:\Haskell\unpack> runhaskell Setup install J:\Haskell\unpack> ghc-pkg list ...stream-fusion-0.1.2.1... OK, nothing much wrong with that then. :-D - Hmm, doesn't GHC 6.10.1 now come with Haddock included? I wonder if there's a way to ask Cabal to build the docs for me... [Grr! Google is still busted.] Ah, yes there is. OK, let's try this: J:\Haskell\unpack> runhaskell Setup haddock ... Data\Stream.hs:292:33: parse error on input `!' haddock: Failed to check module: Data.Stream Uh... OK. So I guess I *won't* build the docs for that one then. :-/ Oh well, maybe it's a one-off failure? Let's try some more packages... - Next up, let's try the excellent ansi-terminal package. Checking Hackage [again without Google] and I see that the tarball I've got is still the latest version (0.5.0). Let's see what happens now... J:\Haskell\unpack> runhaskell Setup configure J:\Haskell\unpack> runhaskell Setup build J:\Haskell\unpack> runhaskell Setup haddock J:\Haskell\unpack> runhaskell Setup install J:\Haskell\unpack> ghc-pkg list ...ansi-terminal-0.5.0... Well, that installed OK. And look... it's given me a little folder full of Haddock documentation. How nice! Pitty it's burried 5 subfolders deep on the system drive with no hyperrefs to it... but I guess I could just bookmark the root folder or something? That'll work. (I.e., when I add more packages, it'll still be easy to navigate to their documentation this way.) - Now on to the ambiguously-named "binary" package. Again, I have a tarball for 0.4.2 but the latest is 0.4.4. (And, again, no indication of how this is different. But let's hope the difference is that it's fixed to work with GHC 6.10...) Configure, build, Haddock, install... no issues. That's refreshing. - OK, so what have we done? We've done stream-fusion, which is 100% Haskell. We've done ansi-terminal, which only links to standard Win32 headers [which, oddly, seem to come bundled with GHC]. And we've done binary, which (I think!) comes bundled with a few small snippets of C. Now let's try something harder... - Gtk2hs doesn't seem to want to work with GHC 6.10 yet; that's a pitty. It's a nice library. OTOH, how many Windows users have GTK+ installed? It's fairly uncommon. Fortunately you can just bundle the DLLs along with your app; unfortunately there's *a lot* of them, and they're quite large. And, obviously, you get a very non-native look & feel. Still, it *is* a nice library, and I'm sure at some point people will hassle Duncan to the point where an update appears. ;-) - A better choice, theoretically, should be wxHaskell. As I understand it, wxWidgets is supposed to look native. (Do you still have to bundle a DLL? Or is it statically linked in? Or...?) Oh well, I'd like to at least try it out and see how it works... Hmm, looks like you can obtain it via Cabal, or there's a special Windows build where you just run a BAT file and it registers everything for you. Let's try that first... "Click on the newly created wxhaskell-0.11.0\bin\wxhaskell-register.bat program to register the wxHaskell package. To uninstall, you can click on wxhaskell-0.11.0\bin\wxhaskell-unregister.bat and than remove the wxhaskell-0.11.0 directory." That sounds easy. Let's try it... 1 file(s) copied. 1 file(s) copied. 1 file(s) copied. - register packages 'ghc-pkg' is not recognized as an internal or external command, operable program or batch file. 'ghc-pkg' is not recognized as an internal or external command, operable program or batch file. error: Unable to register the package using "ghc-pkg". Maybe you have an incompatible version of ghc installed? Press any key to continue . . . Uh... what? OK, let's see if I can figure out what this batch file is trying to do... Er... wow. o_O Alright, there's no way I'm going to figure this out. I can't even tell where it's trying to install to or anything. Hmm. Well, it looks like it's all compiled and it's just trying to copy a few files and register them with GHC. That's probably a lot simpler than trying to actually compile from source using Cabal. I don't know what's confusing it, but maybe somebody in HCafe will know? I'm going to leave this one for now... - Another exciting package is the Haskell binding for libSDL. I am just *dying* to start doing some sound coding with Haskell, so I'm very interested in getting this one to work. Last time I tried it failed miserably, but let's see what we get this time around... Hmm, OK. Well let me see now... There's a project on Sourceforge called "hSDL" which seems to be dated Apr 2005. Then there's a thing called "hsSDL" on somebody's website dated around Feb 2008. And finally on Hackage itself there's a "SDL-0.5.4" dated Apr 2008. Oh... goodie. Well, let's go with the latest date, shall we? OK, download SDL-0.5.4. Unpack. Let's see if there's any useful documentation in here... Ah, "Win32". What does that contain? Mmm, looks useful. OK, let's follow these instructions and see what I get... Need to grab libSDL... Downloaded SDL-devel-1.2.13-mingw32.tar.gz. Unpacked it to C:\SDL. OK, now what? Ooo, manually edit the Cabal file... goodie! OK, well this shouldn't be too hard... Right, now... configure... That looked OK... build... Preprocessing library SDL-0.5.4... Graphics\UI\SDL\General.hsc:1:17: SDL.h: No such file or directory Graphics\UI\SDL\General.hsc: In function `main': Graphics\UI\SDL\General.hsc:57: error: `SDL_INIT_TIMER' undeclared (first use in this function) Graphics\UI\SDL\General.hsc:57: error: (Each undeclared identifier is reported o nly once Graphics\UI\SDL\General.hsc:57: error: for each function it appears in.) Graphics\UI\SDL\General.hsc:58: error: `SDL_INIT_AUDIO' undeclared (first use in this function) Graphics\UI\SDL\General.hsc:59: error: `SDL_INIT_VIDEO' undeclared (first use in this function) Graphics\UI\SDL\General.hsc:60: error: `SDL_INIT_CDROM' undeclared (first use in ...etc... OK, that's fantastic. Now what? So where *is* SDL.H then? Ah, it's in C:\SDL\include\SDL. Maybe if I adjust the Cabal path... configure... build... OMG! It looks like that might even have worked... Haddock... install... Well, well! That seems to have worked! Right, are there any example programs with this puppy?... No, there aren't. Apparently. Well that keeps things interesting... OK, well it looks like Graphcs.UI.SDL.CPUInfo is trivial, so let's see if I can compile a short program that calls it. Right, well it compiles. Does it run? ...no. It can't find SDL.dll. Presumably if I insert that into my search path somewhere... woo! It works! :-D Right, well. I guess if I can find some nontrivial examples from somewhere, I can try this thing out properly. (Looking at the API documentation, it's not very obvious how to do anything with it...) - OK, well I guess this message is long enough already. I notice there's a brand new version of HDBC out, so tomorrow I'm going to attempt to finally make a Haskell program actually talk to a database. ;-) TO BE CONTINUED...

andrewcoppin:
In celebration of Hackage reachin over 1,000 unique packages, I decided that I would re-visit the problem of attempting to build them on Windows.
Ah yes, I already have the tarball for stream-fusion-0.1.1, but I see that the latest release is 0.1.2.1. (Unfortunately, there doesn't appear to be any way to determine what the difference is between the two versions...)
the true way to install all of hackage is: cabal install $(all my packages) where cabal install solves it all. -- Don

the true way to install all of hackage is:
cabal install $(all my packages)
where cabal install solves it all.
not really :) e.g. my output on a Windows Vista system with GHC 6.10.1 cabal install sdl Resolving dependencies... Downloading SDL-0.5.4... [1 of 1] Compiling Main ( C:\Users\Peter\AppData\Local\Temp\TMPSDL-0.5.4\SDL-0.5.4\Setup.lhs, C:\Users\Peter \AppData\Local\Temp\TMPSDL-0.5.4\SDL-0.5.4\dist\setup\Main.o ) C:\Users\Peter\AppData\Local\Temp\TMPSDL-0.5.4\SDL-0.5.4\Setup.lhs:2:2: Warning: In the use of `defaultUserHooks' (imported from Distribution.Simple): Deprecated: "Use simpleUserHooks or autoconfUserHooks, unless you need Cabal-1.2 compatibility in which case you must stick with defaultUserHooks" Linking C:\Users\Peter\AppData\Local\Temp\TMPSDL-0.5.4\SDL-0.5.4\dist\setup\setup.exe ... Warning: defaultUserHooks in Setup script is deprecated. Configuring SDL-0.5.4... setup.exe: sh: runGenProcess: does not exist (No such file or directory) cabal: Error: some packages failed to install: SDL-0.5.4 failed during the configure step. The exception was: exit: ExitFailure 1 To build this I guess I would have to install MinGW and MSYS (which is already insanely hard to unzip all the latest development stuff in the right places and configure it correctly, especially for a windows user), and then do all kinds of tricky things that are obvious for unix people but alien for dummy windows users like me :) Anyway, support for Windows users gets better each year, which is great!

bugfact:
the true way to install all of hackage is:
cabal install $(all my packages)
where cabal install solves it all.
not really :) e.g. my output on a Windows Vista system with GHC 6.10.1 cabal install sdl Resolving dependencies... Downloading SDL-0.5.4... [1 of 1] Compiling Main ( C:\Users\Peter\AppData\Local\Temp\TMPSDL-0.5.4\SDL-0.5.4\Setup.lhs, C:\Users\Peter \AppData\Local\Temp\TMPSDL-0.5.4\SDL-0.5.4\dist\setup\Main.o ) C:\Users\Peter\AppData\Local\Temp\TMPSDL-0.5.4\SDL-0.5.4\Setup.lhs:2:2: Warning: In the use of `defaultUserHooks' (imported from Distribution.Simple): Deprecated: "Use simpleUserHooks or autoconfUserHooks, unless you need Cabal-1.2 compatibility in which case you must stick with defaultUserHooks" Linking C:\Users\Peter\AppData\Local\Temp\TMPSDL-0.5.4\SDL-0.5.4\dist\setup\setup.exe ... Warning: defaultUserHooks in Setup script is deprecated. Configuring SDL-0.5.4... setup.exe: sh: runGenProcess: does not exist (No such file or directory) cabal: Error: some packages failed to install: SDL-0.5.4 failed during the configure step. The exception was: exit: ExitFailure 1
Isn't this missing C library dependencies, which cabal head now warns about? -- Don

On Sat, 2009-01-31 at 14:02 -0800, Don Stewart wrote:
not really :) e.g. my output on a Windows Vista system with GHC 6.10.1 cabal install sdl
Configuring SDL-0.5.4... setup.exe: sh: runGenProcess: does not exist (No such file or directory)
Isn't this missing C library dependencies, which cabal head now warns about?
No, it's about packages using configure scripts which require MSYS on Windows. In principle we should be able to notice this while doing the package dependency planning and report that we cannot install the package because it needs sh.exe. Duncan

--------------------------------------------------
From: "Duncan Coutts"
On Sat, 2009-01-31 at 14:02 -0800, Don Stewart wrote:
not really :) e.g. my output on a Windows Vista system with GHC 6.10.1 cabal install sdl
Configuring SDL-0.5.4... setup.exe: sh: runGenProcess: does not exist (No such file or directory)
Isn't this missing C library dependencies, which cabal head now warns about?
No, it's about packages using configure scripts which require MSYS on Windows.
In principle we should be able to notice this while doing the package dependency planning and report that we cannot install the package because it needs sh.exe.
I wonder *why* packages need sh though? Isn't cabal supposed to allow you to do that kind of scripting in Haskell rather than calling into platform-dependent shell scripts? Are there any specific reasons why people feel the need to use sh? If the package is unix-only for other reasons (e.g. bindings to X or whatever) then it's obviously not a problem, but it appears to me that there's lots of packages that should be portable in principle that won't build on windows because it needs to run sh...

On Sun, 2009-02-01 at 16:50 +0000, Sebastian Sylvan wrote:
Isn't this missing C library dependencies, which cabal head now warns about?
No, it's about packages using configure scripts which require MSYS on Windows.
In principle we should be able to notice this while doing the package dependency planning and report that we cannot install the package because it needs sh.exe.
I wonder *why* packages need sh though? Isn't cabal supposed to allow you to do that kind of scripting in Haskell rather than calling into platform-dependent shell scripts?
It does enable people to make portable packages, yes. It does not prevent people from using ./configure scripts, though as a community we do try to encourage people only to use them where it is essential.
Are there any specific reasons why people feel the need to use sh?
If you look at existing packages that use configure scripts you'll see some are pretty tricky, doing lots of checks in system header files for sizes of structures, values of constants and the presence of C functions in various header files. Some are trivial and should be done away with. For example the ones that just check if a C header / lib is present are unnecessary (and typically do not work correctly). The next point release of Cabal can do these checks automatically, eg: Configuring foo-1.0... cabal: Missing dependencies on foreign libraries: * Missing header file: foo.h * Missing C libraries: foo, bar, baz This problem can usually be solved by installing the system packages that provide these libraries (you may need the "-dev" versions). If the libraries are already installed but in a non-standard location then you can use the flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are.
If the package is unix-only for other reasons (e.g. bindings to X or whatever) then it's obviously not a problem, but it appears to me that there's lots of packages that should be portable in principle that won't build on windows because it needs to run sh...
We need to do a survey of the existing packages that use configure scripts and identify what they are doing exactly. What we want to do is work out what checks they are performing and which ones could be turned into portable checks in cabal or in Setup.hs scripts. We want to know, if we added feature X to Cabal, then Y packages could give up their configure scripts. This would be an excellent task for some volunteer to take on. http://hackage.haskell.org/trac/hackage/ticket/482 Duncan

--------------------------------------------------
From: "Don Stewart"
andrewcoppin:
In celebration of Hackage reachin over 1,000 unique packages, I decided that I would re-visit the problem of attempting to build them on Windows.
Ah yes, I already have the tarball for stream-fusion-0.1.1, but I see that the latest release is 0.1.2.1. (Unfortunately, there doesn't appear to be any way to determine what the difference is between the two versions...)
the true way to install all of hackage is:
cabal install $(all my packages)
where cabal install solves it all.
If that had actually worked it would be great.... I must say that my own not-so-random sampling (basically "ooh that looks cool, let's try it") is probably at a 20% success rate or so... It's great when it does work, but it usually doesn't. Usually it fails because some part of it tries to run unix shell scripts (and I try to avoid things which seem like they're unix only, even though they're no easy way of determining this, so these are packages that at least to me seemed like they could be perfectly portable if not for unix-specific installation procedures).

sebastian.sylvan:
-------------------------------------------------- From: "Don Stewart"
Sent: Saturday, January 31, 2009 8:35 PM To: "Andrew Coppin" Cc: Subject: Re: [Haskell-cafe] 1,000 packages, so let's build a few! andrewcoppin:
In celebration of Hackage reachin over 1,000 unique packages, I decided that I would re-visit the problem of attempting to build them on Windows.
Ah yes, I already have the tarball for stream-fusion-0.1.1, but I see that the latest release is 0.1.2.1. (Unfortunately, there doesn't appear to be any way to determine what the difference is between the two versions...)
the true way to install all of hackage is:
cabal install $(all my packages)
where cabal install solves it all.
If that had actually worked it would be great.... I must say that my own not-so-random sampling (basically "ooh that looks cool, let's try it") is probably at a 20% success rate or so... It's great when it does work, but it usually doesn't.
Usually it fails because some part of it tries to run unix shell scripts (and I try to avoid things which seem like they're unix only, even though they're no easy way of determining this, so these are packages that at least to me seemed like they could be perfectly portable if not for unix-specific installation procedures).
Windows people need to set up a windows@haskell.org to sort out their packaging issues, like we have for debian, arch, gentoo, freebsd and other distros. Unless people take action to get things working well on their platform, it will be slow going. -- Don

On Sat, 2009-01-31 at 16:50 -0800, Don Stewart wrote:
Windows people need to set up a windows@haskell.org to sort out their packaging issues, like we have for debian, arch, gentoo, freebsd and other distros.
Unless people take action to get things working well on their platform, it will be slow going.
Actually instead of going off into another mailing list I would encourage them to volunteer on the cabal-devel mailing list to help out. There is lots we could do to improve the experience on Windows and half the problem is we do not have enough people working on it or testing things. Duncan

On Sun, 01 Feb 2009 15:01:28 +0000, Duncan Coutts
On Sat, 2009-01-31 at 16:50 -0800, Don Stewart wrote:
Windows people need to set up a windows@haskell.org to sort out their packaging issues, like we have for debian, arch, gentoo, freebsd and other distros.
Unless people take action to get things working well on their platform, it will be slow going.
Actually instead of going off into another mailing list I would encourage them to volunteer on the cabal-devel mailing list to help out. There is lots we could do to improve the experience on Windows and half the problem is we do not have enough people working on it or testing things.
That sounds like a great idea, but what specifically should Windows users do to help out? If we try to install a package on Windows and encounter a bug that we can't figure out, would it be sufficient to subscribe at http://www.haskell.org/mailman/listinfo/cabal-devel and to submit a bug report to cabal-devel@haskell.org ? -- Benjamin L. Russell -- Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 "Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^

On Mon, 2009-02-02 at 13:49 +0900, Benjamin L.Russell wrote:
On Sun, 01 Feb 2009 15:01:28 +0000, Duncan Coutts
wrote: On Sat, 2009-01-31 at 16:50 -0800, Don Stewart wrote:
Windows people need to set up a windows@haskell.org to sort out their packaging issues, like we have for debian, arch, gentoo, freebsd and other distros.
Unless people take action to get things working well on their platform, it will be slow going.
Actually instead of going off into another mailing list I would encourage them to volunteer on the cabal-devel mailing list to help out. There is lots we could do to improve the experience on Windows and half the problem is we do not have enough people working on it or testing things.
That sounds like a great idea, but what specifically should Windows users do to help out? If we try to install a package on Windows and encounter a bug that we can't figure out, would it be sufficient to subscribe at http://www.haskell.org/mailman/listinfo/cabal-devel and to submit a bug report to cabal-devel@haskell.org ?
So on cabal-devel we are concerned with bugs and missing features in Cabal that make life hard for windows users. We cannot directly fix individual packages, there are too many and that is the job of the package maintainers. We are interested in solving the more systemic problems however. So for example working out if we can replace many of the configure scripts: http://hackage.haskell.org/trac/hackage/ticket/482 Or just improving the error message when we fail to run configure http://hackage.haskell.org/trac/hackage/ticket/403 Or support in the cabal-install planner for non-Haskell dependencies (so we can track dependencies on sh.exe or libs that are not available on Windows.) The point is to make best use of the available information to work out which packages have no hope of building on Windows. We also have a collection of tickets that primarily affect Windows: http://hackage.haskell.org/trac/hackage/query?status=new&status=assigned&status=reopened&platform=Windows&order=priority many of these need help from windows users, either to decide what the solution should be or to test the solution. Having more Cabal volunteers who use Windows would be great. I've recently been trying to solve some permissions problems on Windows which is pretty hard without having proper access to a Windows system. There are also some important tickets that are just sitting around waiting for some policy decision to be made. The couple people who used to advise us on these questions (like what default install locations should be etc) have not had time recently so these things just sit around with no decisions made. So actually just having more Windows users subscribed to cabal-devel and commenting on tickets would be very useful, even if you do not have much time for hacking. Duncan

Hi
So actually just having more Windows users subscribed to cabal-devel and commenting on tickets would be very useful, even if you do not have much time for hacking.
I believe that as soon as a Windows user starts doing that you'll start asking them for patches :-) There are a number of reasons that we have fewer Windows developers: * Some of it comes down to social reasons - for some reason it seems to be socially acceptable to belittle Windows (and Windows users) on the Haskell mailing lists and #haskell. * Some of it comes down to technical issues - for example not having cabal.exe bundled with GHC 6.10.1 on Windows was a massive mistake (although I've heard everyone argue against me, I've not yet heard a Windows person argue against me). * Part of it comes down to most developers not being Windows people. * A little is because Windows is a second class citizen even in the libraries, my OS is NOT mingw32 - mingw32 is not even an OS, its a badly typed expression! How would you like it if your OS was listed as Wine? Things like this tell me that Haskell isn't Windows friendly, at best its windows tolerant. * Things like Gtk2hs, which Windows users need building for them, don't release in sync with GHC, which makes it hard to use. * Windows machines don't usually have a C compiler, and have a very different environment - while the rest of the world is starting to standardise. I gave up on fighting the fight when people decided not to bundle cabal.exe with Windows - and now I'm too busy with my day job... Now I'd say Duncan is the most vocal and practical Windows developer, even overlooking the fact he doesn't run Windows. Thanks Neil

Neil Mitchell wrote:
* Part of it comes down to most developers not being Windows people.
That certainly describes me. I find the platform annoying and stressful (all the worries about security). But another issue is: it's proprietary and expensive. The base OS isn't cheap, and doesn't even come with development tools. While GHC and friends do run on Windows for free, if you are trying to deal certain things (Windows GUIs, ODBC, etc.) it is difficult at best without shelling out the really big bucks for the Microsoft development environment. Having said that, I agree that good Windows support is a worthwhile goal for the community, and I very much appreciate patches and bug reports from Windows users. However, I am in somewhat of a difficult position when it comes to turning the latter into actual patches. Of course, MacOS X is also proprietary and expensive. But it has at least a bastardized POSIX core, and as such seems to never really need much porting from my Linux development environment. At least until Mac users start demanding resource fork and finder info support. ;-) -- John

ndmitchell:
Hi
So actually just having more Windows users subscribed to cabal-devel and commenting on tickets would be very useful, even if you do not have much time for hacking.
I believe that as soon as a Windows user starts doing that you'll start asking them for patches :-)
There are a number of reasons that we have fewer Windows developers:
* Some of it comes down to social reasons - for some reason it seems to be socially acceptable to belittle Windows (and Windows users) on the Haskell mailing lists and #haskell.
* Some of it comes down to technical issues - for example not having cabal.exe bundled with GHC 6.10.1 on Windows was a massive mistake (although I've heard everyone argue against me, I've not yet heard a Windows person argue against me).
* Part of it comes down to most developers not being Windows people.
* A little is because Windows is a second class citizen even in the libraries, my OS is NOT mingw32 - mingw32 is not even an OS, its a badly typed expression! How would you like it if your OS was listed as Wine? Things like this tell me that Haskell isn't Windows friendly, at best its windows tolerant.
* Things like Gtk2hs, which Windows users need building for them, don't release in sync with GHC, which makes it hard to use.
* Windows machines don't usually have a C compiler, and have a very different environment - while the rest of the world is starting to standardise.
I gave up on fighting the fight when people decided not to bundle cabal.exe with Windows - and now I'm too busy with my day job... Now I'd say Duncan is the most vocal and practical Windows developer, even overlooking the fact he doesn't run Windows.
GHC doesn't bundle with cabal-install on any system. What is needed is not for the GHC team to be doing Windows platform packages, but for the Windows Haskell devs to build their own system, as happens on all the Unices. Take GHC's release, wrap it up with native installers, throw in useful libraries and executables like cabal. Done. It's not the GHC compiler team's job to build distro-specific bundles. So, windows@haskell.org anyone? Get the wiki going, get the set of tasks created. -- Don

Don Stewart wrote:
GHC doesn't bundle with cabal-install on any system.
What is needed is not for the GHC team to be doing Windows platform packages, but for the Windows Haskell devs to build their own system, as happens on all the Unices.
Take GHC's release, wrap it up with native installers, throw in useful libraries and executables like cabal. Done.
It's not the GHC compiler team's job to build distro-specific bundles.
So, windows@haskell.org anyone? Get the wiki going, get the set of tasks created.
Isn't the Haskell Platform going to do all this? Shouldn't interested people just help out there? Ganesh ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ==============================================================================

ganesh.sittampalam:
Don Stewart wrote:
GHC doesn't bundle with cabal-install on any system.
What is needed is not for the GHC team to be doing Windows platform packages, but for the Windows Haskell devs to build their own system, as happens on all the Unices.
Take GHC's release, wrap it up with native installers, throw in useful libraries and executables like cabal. Done.
It's not the GHC compiler team's job to build distro-specific bundles.
So, windows@haskell.org anyone? Get the wiki going, get the set of tasks created.
Isn't the Haskell Platform going to do all this? Shouldn't interested people just help out there?
The platform is a set of blessed libraries and tools. The distros will still need to package that. To do that for Windows, we're still going to need a windows packaging team, along side Debian, Arch, Gentoo, Mac etc. -- Don

Don Stewart wrote:
ganesh.sittampalam:
Don Stewart wrote:
So, windows@haskell.org anyone? Get the wiki going, get the set of tasks created.
Isn't the Haskell Platform going to do all this? Shouldn't interested people just help out there?
The platform is a set of blessed libraries and tools. The distros will still need to package that.
To do that for Windows, we're still going to need a windows packaging team, along side Debian, Arch, Gentoo, Mac etc.
http://www.haskell.org/haskellwiki/Haskell_Platform section 4 talks about making distributions. So what should people be trying to do? Focus on (a) general infrastructure for packaging any Haskell library/binary on Windows (etc), or on (b) the specific task of packaging the Haskell Platform? If (b) then I don't think a whole new mailing list/wiki etc is worthwhile. (a) would obviously be nicer but is no doubt a much harder problem - I guess we'd want to start with Bamse and perhaps make use of the "nestedInstalls" feature somehow. Ganesh ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ==============================================================================

Don Stewart wrote:
The platform is a set of blessed libraries and tools. The distros will still need to package that.
To do that for Windows, we're still going to need a windows packaging team, along side Debian, Arch, Gentoo, Mac etc.
Right, so, let me make sure I understand this... 1. We sit down and pick a set of libraries that cover a useful range of subject areas, that are mature and stable, and that work well with each other. This is the "Haskell Platform". 2. For each OS, a team decides how best to deploy this set of libraries on that specific OS. Is that the plan?

On Tue, 2009-02-03 at 19:25 +0000, Andrew Coppin wrote:
Don Stewart wrote:
The platform is a set of blessed libraries and tools. The distros will still need to package that.
To do that for Windows, we're still going to need a windows packaging team, along side Debian, Arch, Gentoo, Mac etc.
Right, so, let me make sure I understand this...
1. We sit down and pick a set of libraries that cover a useful range of subject areas, that are mature and stable, and that work well with each other. This is the "Haskell Platform".
2. For each OS, a team decides how best to deploy this set of libraries on that specific OS.
Is that the plan?
More or less, yes. In practise we expect there to be quite a bit of overlap and communication between the OS teams. Duncan

Hi
GHC doesn't bundle with cabal-install on any system.
What is needed is not for the GHC team to be doing Windows platform packages, but for the Windows Haskell devs to build their own system, as happens on all the Unices.
Take GHC's release, wrap it up with native installers, throw in useful libraries and executables like cabal. Done.
GHC already takes the GHC release, bundles it up with a native installer, and then throws in useful executables like gcc. It just stops one hop short of "done". Windows is special, we already treat Windows special, but currently its just short of useable. Duncan: Saying cabal.exe isn't mature enough to go in 6.10 is a perfect reason, but one that you never gave at the time. If it isn't ready, then that's fine. But if thats the case, will it be in 6.12, or will the standard Windows instructions involve hunting around haskell.org for a prebuild Cabal.exe? Thanks Neil

On Tue, 2009-02-03 at 08:26 +0000, Neil Mitchell wrote:
Hi
GHC doesn't bundle with cabal-install on any system.
What is needed is not for the GHC team to be doing Windows platform packages, but for the Windows Haskell devs to build their own system, as happens on all the Unices.
Take GHC's release, wrap it up with native installers, throw in useful libraries and executables like cabal. Done.
GHC already takes the GHC release, bundles it up with a native installer, and then throws in useful executables like gcc. It just stops one hop short of "done". Windows is special, we already treat Windows special, but currently its just short of useable.
Right, that's the job the platform will take on.
Duncan: Saying cabal.exe isn't mature enough to go in 6.10 is a perfect reason, but one that you never gave at the time. If it isn't ready, then that's fine. But if thats the case, will it be in 6.12, or will the standard Windows instructions involve hunting around haskell.org for a prebuild Cabal.exe?
It'll be in the first platform release which will be well before ghc 6.12. BTW, I think I've been missing your advice and cajoling about Windows platforms. It's been rather quiet recently. Duncan

On Mon, Feb 02, 2009 at 10:07:57AM +0000, Neil Mitchell wrote:
Hi
The nix package manager (although beeing primarly a linux tool) can run on cygwin as well (at least it did some time ago).. I'd suggest trying that to package windows libraries. It dose generate tag files for you automatically as well. At least it can build dependencies such as C libraries and so on for you automatically as well. Unfortunately I don't have time to work on the windows port. The cool thing about nix is: You can always switch back to the previous generation if something breaks. It organizes the packages like a memory management system. You only reference the target and the deps in between will be build / removed automatically for you if they are no longer used when running the nix garbage collector. There is another drawback: It definitely only works on a ntfs partition. On the other hand it does also support binary distributions and install software by clicking on links. In the end this is perfect for developping (IMHO) even if you have to learn a lot at the beginning. My major problem hindering my starting to work on this is that cygwin doesn't run on Vista running in kvm/ qemu. sh.exe exits and that's it. So if you have a solution for that I'd consider resuming work on it Sincerly Marc Weber

On Mon, 2009-02-02 at 10:07 +0000, Neil Mitchell wrote:
* Some of it comes down to technical issues - for example not having cabal.exe bundled with GHC 6.10.1 on Windows was a massive mistake (although I've heard everyone argue against me, I've not yet heard a Windows person argue against me).
There are reasonable arguments both ways. Listening to some people it would seem that cabal.exe is there to taunt people with the potential for usable packaging and then to punish them with broken packages, quirky dependency resolution and twisty inconsistent installed package graphs. There is a tension between getting it out there because it's useful, and not putting out something that is going to frustrate and annoy new users. With the current release that balance seems to be pretty fine. I hope that the next release will make it look a little more mature. For example look at how many people have been getting themselves into a complete mess recently from using cabal upgrade. There is a whole new world of exciting mess you can make when using easy automated tools with no safety catches. These are not problems that emerged at first because it was only developers who knew what they were doing who were using it at first. Now that more and more people are using it we're discovering these usability problems. I fear that if we'd gone any quicker that we'd have been completely swamped with bug reports and users might write the whole thing off. Given the available developer resources I don't see how we could have done significantly better (except perhaps by releasing even later). Duncan

On Mon, 2009-02-02 at 10:07 +0000, Neil Mitchell wrote:
Hi
So actually just having more Windows users subscribed to cabal-devel and commenting on tickets would be very useful, even if you do not have much time for hacking.
I believe that as soon as a Windows user starts doing that you'll start asking them for patches :-)
Actually I deliberately didn't say that. I would be happy even with some people dispensing advise and testing things.
There are a number of reasons that we have fewer Windows developers:
* Some of it comes down to social reasons - for some reason it seems to be socially acceptable to belittle Windows (and Windows users) on the Haskell mailing lists and #haskell.
Yes plenty of it is social issues. Some of the perceptions in the other direction is that Windows users tend to expect everything to work and not be prepared to help. This may be what they're accustomed to but it tends to rub open source programmers up the wrong way.
* Some of it comes down to technical issues - for example not having cabal.exe bundled with GHC 6.10.1 on Windows was a massive mistake (although I've heard everyone argue against me, I've not yet heard a Windows person argue against me).
I think if it had been bundled with ghc-6.10 you'd have heard lots more Windows people complaining.
* Part of it comes down to most developers not being Windows people.
* A little is because Windows is a second class citizen even in the libraries, my OS is NOT mingw32 - mingw32 is not even an OS, its a badly typed expression! How would you like it if your OS was listed as Wine? Things like this tell me that Haskell isn't Windows friendly, at best its windows tolerant.
Note that cabal/hackage does not classify it that way.
* Things like Gtk2hs, which Windows users need building for them, don't release in sync with GHC, which makes it hard to use.
Hardly anything releases in sync with ghc and it's unrealistic to think that it can or should. The special problem for gtk2hs is that it has to be distributed as a binary so it's guaranteed not to work with new ghc releases where as most other packages will still build from source. Again this comes down to lack of developers and lack of access to Windows hardware. If we had the infrastructure we'd have auto-builders to make releases with new ghc releases. Perhaps that's something we can get people to work on. More automation is good. Building all of hackage on windows and reporting the results would be very useful to everyone. Not once but continuously.
* Windows machines don't usually have a C compiler, and have a very different environment - while the rest of the world is starting to standardise.
I gave up on fighting the fight when people decided not to bundle cabal.exe with Windows - and now I'm too busy with my day job... Now
The more I think about it the more I think that we fortuitously made the right decision not to bundle cabal-install with ghc-6.10. We didn't decide to do it due to immaturity but in hindsight that would have been an excellent reason. As I said before, I hope we'll be able to fix enough of the things that it'll be ok for the first platform release.
I'd say Duncan is the most vocal and practical Windows developer, even overlooking the fact he doesn't run Windows.
I'm going to obtain a license and set up a VM. Duncan

2009/1/31 Andrew Coppin
In celebration of Hackage reachin over 1,000 unique packages, I decided that I would re-visit the problem of attempting to build them on Windows.
I began by removing all existing Haskellness from my PC. I now have a vanilla Windows XP (32-bit) system with Service Pack 3. So, let's see what we can do here...
- Install GHC 6.10.1. As you'd expect, no issues here.
- Now, let's install stream-fusion. First let me ch... woah! What the hell?
OK, it seems that Google is temporarily "broken". (All websites show up as "this site may damange your computer".) Obviously this has nothing to do with Haskell, but it makes navigating Hackage moderately more tedious. Oh well, anyway, where was I?
Ah yes, I already have the tarball for stream-fusion-0.1.1, but I see that the latest release is 0.1.2.1. (Unfortunately, there doesn't appear to be any way to determine what the difference is between the two versions...)
- Right, I've got the tarball for stream-fusion. Now let's see if it will install...
J:\Haskell\unpack> runhaskell Setup configure J:\Haskell\unpack> runhaskell Setup build J:\Haskell\unpack> runhaskell Setup install J:\Haskell\unpack> ghc-pkg list ...stream-fusion-0.1.2.1...
OK, nothing much wrong with that then. :-D
- Hmm, doesn't GHC 6.10.1 now come with Haddock included? I wonder if there's a way to ask Cabal to build the docs for me...
[Grr! Google is still busted.]
Ah, yes there is. OK, let's try this:
J:\Haskell\unpack> runhaskell Setup haddock ... Data\Stream.hs:292:33: parse error on input `!' haddock: Failed to check module: Data.Stream
Uh... OK. So I guess I *won't* build the docs for that one then. :-/ Oh well, maybe it's a one-off failure? Let's try some more packages...
The problem there is that stream-fusion is trying to put documentation on individual data constructor arguments which is not supported by Haddock. David
participants (11)
-
Andrew Coppin
-
Benjamin L.Russell
-
David Waern
-
Don Stewart
-
Duncan Coutts
-
John Goerzen
-
Marc Weber
-
Neil Mitchell
-
Peter Verswyvelen
-
Sebastian Sylvan
-
Sittampalam, Ganesh