
-----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.ta... FreeBSD 8 (amd64) SHA256: fb174e46ebb3086b43510f8337dc7c6f2e396a15269ddc3c6599f7131577b272 http://code.haskell.org/~abbe/8-amd64/ghc-6.12.1-amd64-ash0-freebsd8-boot.ta... 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-----