[Haskell-cafe] Switching GHC Version
Sean Leather
leather at cs.uu.nl
Tue Feb 7 15:38:53 CET 2012
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120207/868c78eb/attachment.htm>
More information about the Haskell-Cafe
mailing list