[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