Skip to content

23Skidoo/haskell-platform-windows

Repository files navigation

Windows installer for the Haskell Platform.

This is a legacy repo, most current version lives in https://github.com/haskell/haskell-platform/ 
(specifically, https://github.com/haskell/haskell-platform/tree/master/hptool/os-extras/win).

How to make an installer
------------------------

0. Install the prerequisites: Python, MSYS and NSIS.
   Install GHC.
   Make sure that you have the special build of NSIS with large strings support.
   Add $GHCDIR/mingw/bin to PATH.
   Add $GHCDIR/perl to PATH.

1. Manually install cabal-install's dependencies: zlib, transformers,
   mtl, text, parsec, network, HTTP, random (in this order). Make sure
   to use appropriate versions (see haskell-platform.cabal).

   To install libraries manually:
   	 $ wget http://...$PACKAGE.tar.gz
         $ tar xzf $PACKAGE.tar.gz
	 $ cd $PACKAGE
	 $ ghc-install.sh

2. Manually install cabal-install:
   	 $ wget http://...cabal-install-$VERSION.tar.gz
         $ tar xzf cabal-install-$VERSION.tar.gz
         $ cd cabal-install-$VERSION
         $ runghc Setup.hs configure
	 $ runghc Setup.hs build
 	 $ runghc Setup.hs install

3. $ cabal update

4. $ git clone https://github.com/haskell/haskell-platform.git
   $ cd haskell-platform
   $ git checkout pre-release

5. Make sure that you have 'library-profiling' set to True, 'shared' set to
   True, 'split-objs' set to True, 'user-install' set to False, and
   'documentation' set to True in $APPDATA/cabal/config.

   Make sure that you have glut.h and libglut32.a in
   $GHCDIR/mingw/{include/GL,lib} (can be copied from the previous Platform
   files).

   In the haskell-platform directory:
   $ cabal install
   $ cabal install alex-$ALEX_VERSION happy-$HAPPY_VERSION

6. Move all stuff from $PROGRAMFILES/Haskell/{bin,lib} to
$GHCDIR/{lib/extralibs/bin,lib/extralibs}.

7. Run recache.py (editing it beforehand to fix the paths).
   Run ghc-pkg recache.
   Run 'ghc-pkg check' to check that recaching caused no problems.

8. Go to $GHCDIR/doc/html/libraries and run $THISDIR/haddock-gen-index.py
(editing it beforehand)

9. Copy the contents of $GHCDIR to $THISDIR/files & uninstall GHC.

   Don't forget to remove unins000.dat and unins000.exe from $THISDIR/files.

10. Build winghci (or just copy from the previous HP files) & put it into
$THISDIR/files/winghci.

    Don't forget the runtime library (depends on the Visual Studio version:
    e.g. for MSVC 9 it's msvcr900.dll, can be checked with dependency walker).

11. Update GHC_VERSION and PLATFORM_VERSION variables in Nsisfile.nsi.

12. Copy $THISDIR/icons/*.ico to $THISDIR/files/icons

13. $ gen_list_files_for_nsis.py files inst.dat uninst.dat

14. Build the installer (right-click Nsisfile.nsi -> Compile NSIS Script).

15. Test the installer (see the 'test' dir).

    I usually check that regex-posix and glut work.

16. Don't forget to publish the MD5 sig when doing the release announcement.