
-----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-----

Hello there, On 01/02/10 00:59, Ashish SHUKLA wrote:
Happy New Year to everyone.
Happy New Year!
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).
Great news! So we can deliver a complete port for GHC 6.12 soon :P
Jacula, can you test other haskell ports with GHC 6.12.1 ?
Do not forget that we might duplicate lang/ghc as lang/ghc-devel (as Jacula proposed earlier) where we could put GHC 6.12 without any fear of build problems, since I think Haskell ports would use the actual ghc installed on the system (independently of its package). That would enable the curious users to spot potential problems with 6.12.x without risking the ports officially.
Gabor, Samy, can you guys generate bootstrap tarballs for 32-bit architectures.
Now I have a FreeBSD/amd64 9-current installed on my notebook, I can build bootstrap tarballs for both i386/amd64 and 6/7/8/9 systems, it is only matter of jail and free time :P Cheers, :g

Happy New Year,
On Sat, Jan 02, 2010 at 05:29:31AM +0530, Ashish SHUKLA
Hi everyone,
Happy New Year to everyone.
I'm always slow in my answer :-), I'm sorry.
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 ?
I have only i386 systems and I'm using my free time (at this moment very little) to add new haskell ports, then if Gabor or Samy could build a bootstrap tarball for i386 systems, I try to test other haskell ports with ghc 6.12.1. Jacula

Jacula Modyun writes: [...]
I'm always slow in my answer :-), I'm sorry.
I bet not slower than me ;). Okay, as mentioned by you about putting GHC 6.12.1 in a separate ghc-devel package and keeping it there until ports are working with GHC 6.12.1. I agree to your solution. Related to bsd.haskell.mk, I'm proposing to defer working on bsd.haskell.mk. But instead I want to propose something else, like Makefile.haskell which in concept is similar to Makefile.xpi and doesn't require fiddling with ${PORTSDIR}/Mk/bsd.port.mk files. Current ports work fine but they contains lots of redundant stuff, and if there happens to be any update with GHC, Haddock, HsColour, and any other common ports Makefiles of all of the ports needs to be updated, which makes it PITA to update even single port. So Makefile.haskell shall take care of this by gathering all common definitions at one place, and then every port is only required to include Makefile.haskell like XPI ports do. I'll post an initial Makefile.haskell in a day or two. What do you think about this idea ? [...]
I have only i386 systems and I'm using my free time (at this moment very little) to add new haskell ports, then if Gabor or Samy could build a bootstrap tarball for i386 systems, I try to test other haskell ports with ghc 6.12.1.
Cool, Gabor has started uploading bootstrap tarballs for i386 architecture, so hopefully you'll be playing with GHC 6.12.1 soon ;) In addition to that, I'm having a issue with latest haddock port with GHC 6.12.1. It depends on 'mtl' module which isn't provided by GHC anymore. So I created a port for 'mtl' and that port depends on 'haddock' for documentation generation. This is kind of circular dependency and can only be resolved if mtl is built with NOPORTDOCS flag set. So how is user going to build 'haddock' port, if mtl isn't installed and he doesn't have NOPORTDOCS set. Should 'haddock' port install 'mtl' port in SLAVE mode like GHC installs haddock and other ports. Or there is any other neat way of doing it ? 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

Hi Ashish,
On Wed, Jan 06, 2010 at 12:02:33AM +0530, Ashish SHUKLA
Related to bsd.haskell.mk, I'm proposing to defer working on bsd.haskell.mk. But instead I want to propose something else, like Makefile.haskell which in concept is similar to Makefile.xpi and doesn't require fiddling with ${PORTSDIR}/Mk/bsd.port.mk files.
So Makefile.haskell shall take care of this by gathering all common definitions at one place, and then every port is only required to include Makefile.haskell like XPI ports do. I'll post an initial Makefile.haskell in a day or two. What do you think about this idea ?
I think this is a good idea. My first idea about bsd.haskell.mk was to put it into lang/ghc directory, but it exist a problem: this system isn't scalable. Actually you could have some problems with the expansion of some variables defined into a Mk/*.mk file.
In addition to that, I'm having a issue with latest haddock port with GHC 6.12.1. It depends on 'mtl' module which isn't provided by GHC anymore. So I created a port for 'mtl' and that port depends on 'haddock' for documentation generation. This is kind of circular dependency and can only be resolved if mtl is built with NOPORTDOCS flag set. So how is user going to build 'haddock' port, if mtl isn't installed and he doesn't have NOPORTDOCS set. Should 'haddock' port install 'mtl' port in SLAVE mode like GHC installs haddock and other ports. Or there is any other neat way of doing it ?
Yes, it exists a different way of doing it; that one I used for lang/ghc. An inplace installation of haddock into mtl/work directory, but I don't know if this is a neat way also for a simple port with a short time installation. Jacula Modyun

Jacula Modyun writes:
Hi Ashish,
On Wed, Jan 06, 2010 at 12:02:33AM +0530, Ashish SHUKLA
wrote:
Related to bsd.haskell.mk, I'm proposing to defer working on bsd.haskell.mk. But instead I want to propose something else, like Makefile.haskell which in concept is similar to Makefile.xpi and doesn't require fiddling with ${PORTSDIR}/Mk/bsd.port.mk files.
So Makefile.haskell shall take care of this by gathering all common definitions at one place, and then every port is only required to include Makefile.haskell like XPI ports do. I'll post an initial Makefile.haskell in a day or two. What do you think about this idea ?
I think this is a good idea. My first idea about bsd.haskell.mk was to put it into lang/ghc directory, but it exist a problem: this system isn't scalable. Actually you could have some problems with the expansion of some variables defined into a Mk/*.mk file.
Thanks. I'm attaching a prototype Makefile.haskell (incomplete and completely GHC specific) which needs to be placed in ${PORTSDIR}/lang/ghc directory. I'm also attaching a Makefile of modified devel/hs-utf8-string-ghc port for this Makefile.haskell. The Makefile.haskell is not documented. If you guys like this idea and this prototype, then I suggest we work on it together and enhance it. We can get it committed as soon as we are done and it is also environment friendly (doesn't require a portbuild run :p). What say you ? I'm new to authoring such BSD Makefiles, please don't flame me :). But ofcourse point, where I can improvise. And if you guys are happy with the idea, we can host it on some public git repository, and start working on it.
In addition to that, I'm having a issue with latest haddock port with GHC 6.12.1. It depends on 'mtl' module which isn't provided by GHC anymore. So I created a port for 'mtl' and that port depends on 'haddock' for documentation generation. This is kind of circular dependency and can only be resolved if mtl is built with NOPORTDOCS flag set. So how is user going to build 'haddock' port, if mtl isn't installed and he doesn't have NOPORTDOCS set. Should 'haddock' port install 'mtl' port in SLAVE mode like GHC installs haddock and other ports. Or there is any other neat way of doing it ?
Yes, it exists a different way of doing it; that one I used for lang/ghc. An inplace installation of haddock into mtl/work directory, but I don't know if this is a neat way also for a simple port with a short time installation.
Sorry about that, I didn't noticed that we already have a port for mtl. Thanks to dezzy for reminding me that. I think we can solve this problem by creating a separate -docs port like we have for haddock, hscolour, etc. 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
participants (3)
-
Gabor PALI
-
Jacula Modyun
-
wahjava.ml@gmail.com