At long last: 2014.2.0.0 Release Candidate 1

*Even I find it hard to believe that it's finally here!* *I'm happy to announce the RC1 release of Haskell Platform 2014.2.0.0.* You can find builds for Windows (32bit and 64bit), Mac (64bit), as well as a source tarball, and a tag in the repo: - source tarball: haskell-platform-2014.2.0.0-RC1.tar.gz http://www.ozonehouse.com/mark/platform/haskell-platform-2014.2.0.0-RC1.tar.... - source repo: https://github.com/haskell/haskell-platform/tree/2014.2.0.0-RC1 - windows 32bit: HaskellPlatform-2014.2.0.0-i386-RC1-setup.exe http://www.ozonehouse.com/mark/platform/HaskellPlatform-2014.2.0.0-i386-RC1-... - windows 64bit: HaskellPlatform-2014.2.0.0-x86_64-RC1-setup.exe http://www.ozonehouse.com/mark/platform/HaskellPlatform-2014.2.0.0-x86_64-RC... - os x 64bit: Haskell Platform 2014.2.0.0 64bit RC1.signed.pkg http://www.ozonehouse.com/mark/platform/Haskell%20Platform%202014.2.0.0%2064... - travis-ci build: 20 https://travis-ci.org/haskell/haskell-platform/builds/30723884 *Notes:* General - Built with the new shake based build system - cgi package not included as it doesn't build under 7.8, and no word from the maintainer in quite some time - hscolour is included as a tool, mostly as it is used to build the platform itself on win and mac... but we should probably officially decide to include it - the haskell-platform package itself is not in these releases... not sure if we actually need it as it doesn't contain anything other than dependencies. Windows - The Haskell Platform now provides a native Windows 64-bit installation (haskell-platform issue #54 https://github.com/haskell/haskell-platform/issues/54) - All included packages built without --enable-split-objs (GHC 7.8 FAQ https://ghc.haskell.org/trac/ghc/wiki/GHC-7.8-FAQ#Cabal) - All included packages built without --enable-shared (GHC ticket #8228 https://ghc.haskell.org/trac/ghc/ticket/8228) - All html document links are relative and everything links nicely together now, including the master index and cross-package links - If other Haskell Platform installations are detected during the installation of Haskell Platform 2014.2.0.0, a warning is displayed to the user that this is not recommended since problems will arise due to how the PATH is used in many cases to find ancillary build tools - Using ghci to build an executable that links against a DLL may result in numerous warnings about symbols (GHC ticket #9297 https://ghc.haskell.org/trac/ghc/ticket/9297) - On Windows 64-bit, some unneeded python files are included (GHC ticket #9014 https://ghc.haskell.org/trac/ghc/ticket/9014) - The Haskell Platform for Windows, both 32-bit and 64-bit, now includes an updated version of the OpenGL Utility Toolkit (GLUT) from the FreeGLUT project, utilizing the pre-built distribution from http://www.transmissionzero.co.uk/software/freeglut-devel/ with the MinGW build (freeglut-MinGW-2.8.1-1.mp.zip). (haskell-platform issue #81 https://github.com/haskell/haskell-platform/issues/81) Mac OS X - Distributed with a build of 7.8.3 that differs from the released bindist in two ways: a) it was built split-objs for smaller resulting executables, b) it includes Cabal-1.18.1.4 which fixes a particularly nasty problem with haddock, -XCPP, and clang based systems. This ghc-7.8.3 bindist is available as well: - ghc-7.8.3-x86_64-apple-darwin-r3.tar.bz2 http://www.ozonehouse.com/mark/platform/ghc-7.8.3-x86_64-apple-darwin-r3.tar... - haddocks finally cross link between packages correctly - includes a new experimental activate-hs command that can switch between multiple installed versions of the platform - includes a slightly updated uninstall-hs command - the cabal command is wrapped to provide a smoother file layout on the Mac... the wrapping only updates the ~/.cabal/config file the first time you run it.. please pay attention to its output - if you have a custom config file, you'll want to update it, as Cabal's defaults have changed - works on 10.7 (tested), 10.8 (assumed!), 10.9 (tested) - both with gcc and clang based Xcode installs. (Next RC will support back to 10.6!) - 64bit only build this time... anyone still want the 32bit build? Source tarball - Quite some changes from last time - notably now includes the new build machinery, not the old. - The build machinery is well tested (see the travis-ci link above) from a repo... not tested much from a source repo - It isn't clear the source repo is of much interest... anyone need it? anyone need anything beyond the haskell-platform.cabal file in it? Timetable - These can "soak" amongst the intreped on these lists for 48 hours. - On Saturday, I'll release any needed updated RCs, and announce to a wider audience - End of next week (from my vacation, I'll point out), we'll declare success and ship. — Mark P.S.: sha256 sums for the reasonably wary: 860cba2d65bc1790ec3b8a0a62c8aaf19f5b18e9070aa1ec3c468b7c6ca82697 Haskell Platform 2014.2.0.0 64bit RC1.signed.pkg 8ca8a994334bf846ac6a41ada381c51634b2fce0d68dc70b2dadf59cb8748397 haskell-platform-2014.2.0.0-RC1.tar.gz b034e2daa595e0d3827860b062afca05f62df64434b0923559acc99bd82ef1e9 HaskellPlatform-2014.2.0.0-i386-RC1-setup.exe e31fe5e0cb9dca330e6f0c62ac49bf70b79f555bfe11e8f04c47739fef224145 HaskellPlatform-2014.2.0.0-x86_64-RC1-setup.exe 8e479d9dd504b1c603cd51f3be0fa57ecdc996e842d655e39d97faafff3c2d31 ghc-7.8.3-x86_64-apple-darwin-r3.tar.bz2

The source tarball is missing a few files for hptool: hptool/src/HaddockMaster.hs hptool/src/OS/Win.hs hptool/src/Releases.hs hptool/src/Releases2012.hs hptool/src/Releases2013.hs hptool/src/Templates.hs hptool/src/Website.hs I guess these are missing from https://github.com/haskell/haskell-platform/blob/2014.2.0.0-RC1/hptool/hptoo.... I've just copied those missing files from GitHub, let's see how the installation from source continues on an x64 Linux...

2014-07-24 10:25 GMT+02:00 Sven Panne
[...] let's see how the installation from source continues on an x64 Linux...
After the missing hptool sources have been copied manually, platform.sh seems to have completed successfully. But I'm a bit clueless how to proceed from that point: What I actually want is a complete installation of the HP under a given prefix. The stuff below haskell-platform-2014.2.0.0/build/target looks almost like that, but with a prefix of /usr/local. Would it be OK to just copy this? How can I change the prefix? The README doesn't describe this AFAICT.

2014-07-24 13:22 GMT+02:00 Sven Panne
How can I change the prefix? The README doesn't describe this AFAICT.
Hmmm, it looks like the install paths are hardwired in hptool/src/OS/Internal.hs. Do I see this correctly? If yes, that's a bit unfortunate, an additional parameter to platform.sh or an environment variable would be nice. Furthermore, the executables are scattered around: build/target/usr/local/haskell-platform/2014.2.0.0/lib/alex-3.1.3/bin/alex build/target/usr/local/haskell-platform/2014.2.0.0/lib/cabal-install-1.18.0.5/bin/cabal build/target/usr/local/haskell-platform/2014.2.0.0/lib/happy-1.19.4/bin/happy build/target/usr/local/haskell-platform/2014.2.0.0/lib/hscolour-1.20.3/bin/HsColour Even if one copies this to /usr/local, extending the PATH would be tiresome. Is this intended or is a common bin directory below usr/local/haskell-platform/2014.2.0.0 missing? The whole layout below build/target is somehow un-Linux-esque (it's basically structured the Windows way): Normal packages put their binaries below /usr/bin, their libs below /usr/lib, their docs below /usr/share/doc etc. How are other packagers on this list handling this?

Hmmm, even after copying the stuff below build/target to /usr/local and extending my PATH things don't work, because the packages are not registered with GHC. Somehow I get the impression that I misunderstand how things are supposed to work, so let's repeat my use case: * Download the right bindist from http://www.haskell.org/ghc/download_ghc_7_8_3#x86_64linux * Download and unpack the 2014.2.0.0 RC1 (and add the missing hptool files). * Do ??? to compile and install GHC 7.8.3 and the 2014.2.0.0 to a given prefix, e.g. ~/local. So my question is: What exactly is "???"? :-)

On Thu, Jul 24, 2014 at 1:25 AM, Sven Panne
The source tarball is missing a few files for hptool:
I'll try to catch them the next round... or pull requests on github welcome!
On Thu, Jul 24, 2014 at 4:22 AM, Sven Panne
...But I'm a bit clueless how to proceed from that point: What I actually want is a complete installation of the HP under a given prefix.
Your build is using the *genericOS* set up in src/OS/Internal.hs. In the
past, linux/unix distribution packagers have worked from the src tarball,
and when I queired in the past, none said they used the build scripts HP
had, but used their own. And in turn, no one put in any effort over the
last six months to add a build decription using the new build system other
than OS X and Windows.
SO - what you, and we, need is a src/OS/GenericLinux.hs file so that it
does you/we think is the generic layout for where things should live. For
your own, peronsal install, you could start by just hacking on the
*genericOS* structure in src/OS/Internal.hs. That strucutre is currently
set up to build something which is unpacked over /, which is probably what
most people *don't want, *but is agnostic to the variety of layouts
possible.
On Thu, Jul 24, 2014 at 4:48 AM, Sven Panne
Hmmm, it looks like the install paths are hardwired in hptool/src/OS/Internal.hs. Do I see this correctly? If yes, that's a bit unfortunate, an additional parameter to platform.sh or an environment variable would be nice.
Yes - it would need to be added to Main.hs, and then plumbed to the right point in the code. Sound great.... I can haz pull request plz? (you knew that was coming... :-) )
Furthermore, the executables are scattered around:
build/target/usr/local/haskell-platform/2014.2.0.0/lib/alex-3.1.3/bin/alex
build/target/usr/local/haskell-platform/2014.2.0.0/lib/cabal-install-1.18.0.5/bin/cabal
build/target/usr/local/haskell-platform/2014.2.0.0/lib/happy-1.19.4/bin/happy
build/target/usr/local/haskell-platform/2014.2.0.0/lib/hscolour-1.20.3/bin/HsColour ...
Normal packages put their binaries below /usr/bin, their
libs below /usr/lib, their docs below /usr/share/doc etc. How are other packagers on this list handling this?
My rationale is that if you install things under /usr/bin, /usr/lib, /usr/share/doc - then it becomes essentially impossible to remove easily: There are just far too many files in those trees intermingled with files from other things. Same is true if you do /usr/local/... My preferred approach is to put the whole installation under one prefix, say /usr/loca/ghc/ghc-7.8.3/, in there there are /bin, /lib, and /share. As you point out, this is a pain for PATH... so what I do is have an "activation" script that symlinks all the executables in that tree up and over into /usr/bin (or /usr/local/bin). Now clean up is a snap: Remove the ghc-<version> tree you want gone, and then remove all the symlinks in /usr/bin and/or /usr/local/bin that are now dangling into it. Does this make sense for simple "untar, run a script" kind of distributions? For people packaging for OS distributions, using a host OS package manager, I suspect they prefer the "overlay it all" approach, because the package managers take care of the chore of remembering which files go with which thing and handle uninstallation. I could easily imagine two or more styles under src/OS for hptool: PosixLocalTarball.hs, PosixPackaged.hs, Ubuntu.hs, FreeBSD.hs, etc... - Mark

2014-07-24 16:24 GMT+02:00 Mark Lentczner
On Thu, Jul 24, 2014 at 1:25 AM, Sven Panne
wrote: The source tarball is missing a few files for hptool: I'll try to catch them the next round... or pull requests on github welcome!
The structure on GitHub is a bit confusing: It took me some time to figure out that "master" is probably irrelevant by now, and "new-build" contains the stuff for the upcoming HP. Is that correct? If yes, one should probably merge back things to master and base the HP releases directly on that. As it is, for new people things are quite puzzling...
...But I'm a bit clueless how to proceed from that point: What I actually want is a complete installation of the HP under a given prefix. Your build is using the genericOS set up in src/OS/Internal.hs. In the past,
On Thu, Jul 24, 2014 at 4:22 AM, Sven Panne
wrote: linux/unix distribution packagers have worked from the src tarball, and when I queired in the past, none said they used the build scripts HP had, but used their own. And in turn, no one put in any effort over the last six months to add a build decription using the new build system other than OS X and Windows.
Ah, OK, that was unclear to me, and it is a rather serious regression compared to the previous platform release: With 2013.2.0.0 one could easily specify a --prefix in the configure step, and everything worked as expected. I really think that this use case should be resurrected before the new HP is released: There are various reasons why pre-built Linux packages are not an option for many people (having to wait until a package is ready/fixed/etc. for one's distro, no root access, etc.), so the --prefix option was and still is important here. What about packages being unregistered? This seems to be a bug in hptool, and it effectively makes the stuff below build/target unusable.
SO - what you, and we, need is a src/OS/GenericLinux.hs file so that it does you/we think is the generic layout for where things should live. For your own, peronsal install, you could start by just hacking on the genericOS structure in src/OS/Internal.hs. [...]
Guess what I did... ;-)
[...] Furthermore, the executables arescattered around:
build/target/usr/local/haskell-platform/2014.2.0.0/lib/alex-3.1.3/bin/alex build/target/usr/local/haskell-platform/2014.2.0.0/lib/cabal-install-1.18.0.5/bin/cabal build/target/usr/local/haskell-platform/2014.2.0.0/lib/happy-1.19.4/bin/happy build/target/usr/local/haskell-platform/2014.2.0.0/lib/hscolour-1.20.3/bin/HsColour
My rationale is that if you install things under /usr/bin, /usr/lib, /usr/share/doc - then it becomes essentially impossible to remove easily: There are just far too many files in those trees intermingled with files from other things. Same is true if you do /usr/local/...
If you have either --prefix or use the tree below build/target to assemble a package for your distro, that's a non-issue. As mentioned above, we need --prefix anyway, so we should have a single {bin,lib,share,...} structure directly below it. Even keeping the distinction between the GHC parts and the rest of the platform is not useful from a user perspective and to large parts totally artificial: Why e.g. is haddock below GHC part, but alex below the HP part? This is by pure technical accident, and it's unimportant when one installs the HP as a whole.
[...] Does this make sense for simple "untar, run a script" kind of distributions?
Partly, yes. It doesn't matter in detail how things happen, but we need the ability of the simple and easy "./configure --prefix=foo && make && make install" from the 2013.2.0.0 HP back in the new HP source release. I hope that I don't sound too negative, you're doing great (and unpleasant) work, I just want to make sure that we don't regress on Linux platforms...

On Fri, Jul 25, 2014 at 12:32 AM, Sven Panne
The structure on GitHub is a bit confusing
As with past releases, we generally work on a branch until release.
With 2013.2.0.0 one could
easily specify a --prefix in the configure step, and everything worked
as expected.
I didn't realize anyone used it. But it should be easy enough to add. What about packages being unregistered? It is intentional. The package registrations are all prepared, but the final registration should happen after the tree is moved into place. Conventionally this was part of "make install". For the build, there should be an "activation" script added to the tree that the user runs after copying the tree to the final system.
Even keeping the distinction between the GHC parts and the rest of the platform is not useful from a user perspective and to large parts totally artificial: Why e.g. is haddock below GHC part, but alex below the HP part?
Becuase the platform is built from the GHC bindist, and traditionally we've keep the GHC supplied portions "pristine".
Partly, yes. It doesn't matter in detail how things happen, but we need the ability of the simple and easy "./configure --prefix=foo && make && make install" from the 2013.2.0.0 HP back in the new HP source release.
Or equivalent functionality. I don't think we'll be going back to autoconf & make.
I hope that I don't sound too negative, you're doing great (and unpleasant) work, I just want to make sure that we don't regress on Linux platforms...
We need more people involved in the platform! - Mark
participants (2)
-
Mark Lentczner
-
Sven Panne