[Freebsd-haskell] GHC 6.12.1 Port

Ashish SHUKLA wahjava.ml at gmail.com
Fri Jan 1 18:59:31 EST 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi everyone,

Happy New Year to everyone.

As mentioned earlier that I was working on updating port of lang/ghc port for
GHC 6.12.1, I'm partially done.

I've produced packages for GHC 6.12.1 for FreeBSD 7 (amd64/generic
optimization) and FreeBSD 8 (amd64/optimized for Intel Core 2 Duo).

GHC 6.12.1 for FreeBSD 7 (amd64)
SHA256: a6d97fc6f759f48056fb4aee9c560556d3bcc096586b442c127df0136ff2d75d
http://code.haskell.org/~abbe/7-amd64/ghc-6.12.1.tbz

GHC 6.12.1 for FreeBSD 8 (amd64)
SHA256: 8f5c717ce4266d3b8b05059bcedbcbb8d2bed8adb0e91041349883675ed5be40
http://code.haskell.org/~abbe/8-amd64/ghc-6.12.1.tbz

tcb on #haskell-FreeBSD reported that he is able to run GHC 6.12.1 package on
his FreeBSD 9-current (amd64) Core 2 Duo box.

For users interested in testing the port:

0) You'll need write access to /usr/ports like tree which is from now on
   referred as ${PORTSDIR}. You can use /usr/ports tree. Following is how I
   built my tree in my $PORTSDIR (= $HOME/freebsd-haskell).

#v+
% mkdir ~/freebsd-haskell
% cd ~/freebsd-haskell
% for i in distfiles Mk Tools Templates converters; do ln -s /usr/ports/$i ; done
% mkdir devel lang print
% cd devel
% for i in /usr/ports/devel/auto*; do ln -s $i ; done
% cd ..
% ls -l  . devel lang
.:
total 117754
lrwxr-xr-x  1 abbe  abbe         13 Dec 28 13:19 Mk -> /usr/ports/Mk
lrwxr-xr-x  1 abbe  abbe         20 Dec 28 15:00 Templates -> /usr/ports/Templates
lrwxr-xr-x  1 abbe  abbe         16 Dec 28 15:01 Tools -> /usr/ports/Tools
lrwxr-xr-x  1 abbe  abbe         21 Dec 29 00:02 converters -> /usr/ports/converters
drwxr-xr-x  8 abbe  abbe       1024 Dec 28 16:23 devel
lrwxr-xr-x  1 abbe  abbe         20 Dec 28 22:14 distfiles -> /usr/ports/distfiles
drwxr-xr-x  4 abbe  abbe        512 Jan  2 03:12 lang
drwxr-xr-x  4 abbe  abbe        512 Dec 28 15:06 print

devel:
total 36
lrwxr-xr-x  1 abbe  abbe    25 Dec 28 14:59 autobook -> /usr/ports/devel/autobook
lrwxr-xr-x  1 abbe  abbe    33 Dec 28 14:59 autoconf-archive -> /usr/ports/devel/autoconf-archive
lrwxr-xr-x  1 abbe  abbe    33 Dec 28 14:59 autoconf-wrapper -> /usr/ports/devel/autoconf-wrapper
lrwxr-xr-x  1 abbe  abbe    28 Dec 28 14:59 autoconf213 -> /usr/ports/devel/autoconf213
lrwxr-xr-x  1 abbe  abbe    28 Dec 28 14:59 autoconf262 -> /usr/ports/devel/autoconf262
lrwxr-xr-x  1 abbe  abbe    24 Dec 28 14:59 autodia -> /usr/ports/devel/autodia
lrwxr-xr-x  1 abbe  abbe    25 Dec 28 14:59 autodist -> /usr/ports/devel/autodist
lrwxr-xr-x  1 abbe  abbe    24 Dec 28 14:59 autogen -> /usr/ports/devel/autogen
lrwxr-xr-x  1 abbe  abbe    33 Dec 28 14:59 automake-wrapper -> /usr/ports/devel/automake-wrapper
lrwxr-xr-x  1 abbe  abbe    28 Dec 28 14:59 automake110 -> /usr/ports/devel/automake110
lrwxr-xr-x  1 abbe  abbe    27 Dec 28 14:59 automake14 -> /usr/ports/devel/automake14
lrwxr-xr-x  1 abbe  abbe    27 Dec 28 14:59 automake15 -> /usr/ports/devel/automake15
lrwxr-xr-x  1 abbe  abbe    27 Dec 28 14:59 automake16 -> /usr/ports/devel/automake16
lrwxr-xr-x  1 abbe  abbe    27 Dec 28 14:59 automake17 -> /usr/ports/devel/automake17
lrwxr-xr-x  1 abbe  abbe    27 Dec 28 14:59 automake18 -> /usr/ports/devel/automake18
lrwxr-xr-x  1 abbe  abbe    27 Dec 28 14:59 automake19 -> /usr/ports/devel/automake19
lrwxr-xr-x  1 abbe  abbe    25 Dec 28 14:59 automoc4 -> /usr/ports/devel/automoc4
lrwxr-xr-x  1 abbe  abbe    26 Dec 28 14:59 autotools -> /usr/ports/devel/autotools
#v-

1) This version of GHC depends on haddock 2.6.0 which has more dependencies
   than its earlier versions. So I've packaged all dependencies in one shar
   file[1]. Download and extract in ${PORTSDIR}.

abbe [freebsd-haskell] chateau % sh ports-alex_ghcpaths_haddock_happy_hscolour.sh

2) Now, if you're on FreeBSD 7/8 (amd64), then goto step N, otherwise goto
   next step.

3) You've to build a GHC 6.12.1 bootstrap tarball for your platform using GHC
   6.10.4 bootstrap tarballs. Download the ghc-bootstrap.sh shar[2] file, and
   extract it in ${PORTSDIR}/lang which will create a 'ghc' directory.

abbe [lang] chateau % sh bootstrap-ghc.sh

3) Now start building ghc tarball:

abbe [lang] chateau % sudo make -C ghc PORTSDIR=$HOME/freebsd-haskell
...
...

4) Now after the build is successfully completed, you'll see a .tar.bz2, which
   is the desired bootstrap tarball, move it to $PORTSDIR/distfiles.

5) Now you need to build another GHC 6.12.1 bootstrap tarball using GHC 6.12.1
   bootstrap tarball. This will be the final bootstrap tarball. For that
   download bootstrap-ghc-2.sh shar[3] file, move the existing 'lang/ghc'
   directory to somewhere else and extract the shar file there.

abbe [lang] chateau % sh bootstrap-ghc-2.sh

6) Now edit Makefile and locate following block and update it with name of
   your tarball:

#v+
.if ${ARCH} == "i386"
.if ${OSVERSION} >= 800000
DISTFILES+=	ghc-${BOOT_GHC_VERSION}-i386-jm0-freebsd8-boot${EXTRACT_SUFX}:boot
.elif ${OSVERSION} >= 700000
DISTFILES+=	ghc-${BOOT_GHC_VERSION}-i386-jm0-freebsd7-boot${EXTRACT_SUFX}:boot
.elif ${OSVERSION} >= 600000
DISTFILES+=	ghc-${BOOT_GHC_VERSION}-i386-jm0-freebsd6-boot${EXTRACT_SUFX}:boot
.endif
.elif ${ARCH} == "amd64"
.if ${OSVERSION} >= 800000
DISTFILES+=	ghc-${BOOT_GHC_VERSION}-amd64-ash0-freebsd8-boot${EXTRACT_SUFX}:boot
.elif ${OSVERSION} >= 700000
DISTFILES+=	ghc-${BOOT_GHC_VERSION}-amd64-ash0-freebsd7-boot${EXTRACT_SUFX}:boot
.else
IGNORE=		unsupported at the moment
.endif
.endif
#v-

7) And now, do 'make makesum' to generate the checksums.

abbe [ghc] chateau % sudo make PORTSDIR=${PORTD makesum
...
...

8) Start building tarball again.

abbe [ghc] chateau % sudo make PORTSDIR=$HOME/freebsd-haskell
...
...

9) After build is over move the tarball again to ${PORTSDIR}/distfiles, move
   the lang/ghc directory to somewhere else and goto step 11.

10) Download appropriate bootstrap tarball for your platform from following
    URLs and place in ${PORTSDIR}/distfiles directory. SHA256 hashes are
    provided for verification.

FreeBSD 7 (amd64)
SHA256: 3cf81e2f1b79e6c67fd22c1b67c06d3b8b8ffd6c371ac364d6f3754fdb09330b
http://code.haskell.org/~abbe/7-amd64/ghc-6.12.1-amd64-ash0-freebsd7-boot.tar.bz2

FreeBSD 8 (amd64)
SHA256: fb174e46ebb3086b43510f8337dc7c6f2e396a15269ddc3c6599f7131577b272
http://code.haskell.org/~abbe/8-amd64/ghc-6.12.1-amd64-ash0-freebsd8-boot.tar.bz2

11) Download the ghc.sh shar[4] file, and extract it in ${PORTSDIR}/lang which
    will create a 'ghc' directory. After this

abbe [lang] chateau % sh ghc.sh

12) If you've built your own bootstrap tarball, you'll need to update the name
    in the Makefile, and generate the regenerate the distinfo file

13) Now time to build, install and package GHC 6.12.1.

abbe [ghc] chateau % sudo make install PORTSDIR=$HOME/freebsd-haskell

14) After installation is over, packages generated, you  can clean $PORTSDIR,
and start playing with ports.

If you've generated a fresh bootstrap tarball, then please upload it somewhere
so it can be used by others, and post a link to it here. If there are any
problems building the port, please post them here:

Jacula, can you test other haskell ports with GHC 6.12.1 ?

Gabor, Samy, can you guys generate bootstrap tarballs for 32-bit
architectures.

References:
[1]  http://code.haskell.org/~abbe/ports-alex_ghcpaths_haddock_happy_hscolour.sh
[2]  http://code.haskell.org/~abbe/bootstrap-ghc.sh
[3]  http://code.haskell.org/~abbe/bootstrap-ghc-2.sh
[4]  http://code.haskell.org/~abbe/ghc.sh

Apologies if there is anything I missed.

Thanks
Ashish SHUKLA
- -- 
They who can give up essential liberty to obtain a little temporary safety,
deserve neither liberty nor safety.
  -- Benjamin Franklin, Memoirs of the life and writings of Benjamin Franklin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.13 (FreeBSD)

iEYEARECAAYFAks+jGgACgkQHy+EEHYuXnRGqgCdHvnxhXKW2p+iguM821tQdxp/
BgsAoL9+lnS1nQSbr+kMlXU4oN60A1xA
=+K2x
-----END PGP SIGNATURE-----


More information about the FreeBSD-haskell mailing list