
Hi Yusaku, On Tue, Feb 7, 2012 at 00:27, HASHIMOTO, Yusaku wrote:
Hi, I wrote a simple shell function for switching GHC version on the system. It works only under Mac OSX, and only switch GHCs installed via .pkg installers. It's useful to experiment newer features without worrying breaking environment.
GHC_BASE_DIR=/Library/Frameworks/GHC.framework/Versions/
ghcs () { VERSION=$1 sudo $GHC_BASE_DIR/$VERSION/Tools/create-links . /Library/Frameworks / }
I have something quite similar, though mine depends on just one symbolic link, "Current". See the end of this email. This approach also works with GHC installed from source. I use the following script to run 'configure' in the GHC source: $ cat configure.mine VERSION=7.4.1 ./configure \ --prefix=/Library/Frameworks/GHC.framework/Versions/$VERSION/usr \ --with-gmp-libraries=/Library/Frameworks/GMP.framework \ --with-gmp-includes=/Library/Frameworks/GMP.framework/Headers For me, the 'ghc-ver' script is useful since I'm often just want to quickly play with something in one version of GHC and not create a development environment. Other tools and approaches that have already been mentioned are also useful. Regards, Sean ---- $ cat ~/bin/ghc-ver #!/bin/sh ECHO="/bin/echo" PROGNAME=`basename $0` if [ -z "$1" ]; then $ECHO "Usage: $PROGNAME <version>" $ECHO " $PROGNAME list" exit 1 fi VERSIONS_DIR="/Library/Frameworks/GHC.framework/Versions" if [ "$1" = "list" ]; then /usr/bin/find $VERSIONS_DIR -type d -depth 1 | xargs basename exit 0 fi CHOSEN_DIR="$VERSIONS_DIR/$1" $ECHO -n "Checking for $CHOSEN_DIR ... " if [ -d "$CHOSEN_DIR" ]; then rm $VERSIONS_DIR/Current ln -sf $CHOSEN_DIR $VERSIONS_DIR/Current $ECHO "Success!" else $ECHO "Not found!" fi ghc --version $ ls -l /usr/bin/ghc # as well as ghci, ghc-pkg, etc. lrwxr-xr-x [...] /usr/bin/ghc -> /Library/Frameworks/GHC.framework/Versions/Current/usr/bin/ghc