On 20 Mar 2009, at 21:05, David Leimbach wrote:

> Since GHC is written in Haskell, do you need to have another Haskell
> compiler installed before GHC 6.10.1 can be installed through MacPorts?

It bootstraps itself.

??? GHC does or MacPorts does. My experience was that you needed GHC to build GHC :-)

MacPort developers tweak sources into packages which can install by themselves. So one just types
  sudo port install ghc
and it does the rest. Here is info about ghc:
$ port info ghc
ghc 6.8.3, Revision 1, lang/ghc (Variants: universal, darwin_6, darwin_7, darwin_8_powerpc, darwin_8_i386, darwin_9_powerpc, darwin_9_i386, no_opengl)
http://haskell.org/

The Glasgow Haskell Compiler is a robust, fully-featured, optimising compiler and interactive environment for Haskell 98, GHC compiles Haskell to either native code or C. It implements numerous experimental language extensions to Haskell 98, for example: concurrency, a foreign language interface, multi-parameter type classes, scoped type variables, existential and universal quantification, unboxed types, exceptions, weak pointers, and so on. GHC comes with a generational garbage collector, and a space and time profiler.

Library Dependencies: readline, gmp
Runtime Dependencies: perl5.8
Platforms: darwin
Maintainers: gwri...@macports.org

However, as someone needs to do the packaging, the versions tend to be older than from direct sources. So the latter is to be preferred, but the package manager does the package chasing for you (which is a problem with Gtk+ installed directly).

Therefore, as mentioned before, it might be best to install the GHC binaries and install libraries like Gtk+ from MacPorts. There is also Intel Gtk+ that binds directly to Aqua, the Mac OS X native GUI (for making native Mac OS X Applications):
  http://www.gtk-osx.org/

You need to set of environmental variables UNIX style, but there is a Mac OS X way, too (see below). In the traditional way, one must be aware of that the shell 'bash' (see 'man bash') reads different startup files when called as a login shell (as from the Terminal) and non-login-shell (as from X11 and xterm). For the former, one can put the stuff in .profile, and the latter .bashrc. To make things simple, one can put in .bashrc:
  source ~/.profile
thus reading .profile. In .profile, one might put something like the stuff at the bottom of this letter (which also adds support for the other package manager, as well admitting user binaries to be installed).

There is another, Mac OS X specific way (also see below): go to Terminal, and make a directory:
  cd
  mkdir .MacOSX
  cd .MacOSX
  touch environment.plist
  open -a Xcode environment.plist
The last command opens the file into the Xcode editor, which has a facility to create the special format for these files. Pne drawback of this method is the one has to log out and login again to set them.

This assumes you have installed Xcode, wither from the installation disk, or by signing up as a developer at http://developer.apple.com/

When working with files, it is convenient to set them so that they open in your favorite program. For that, I have found it convenient to install a System Preferences panel 'Default Apps' found at
  http://www.rubicode.com/Software/
I see now they have one for editing the environment.plist file.

If you come from a non-UNIX (POSIX) platform, then note that in order to work as root, it is most of the time sufficient to use (from an administrator account)
  sudo -s
The 'root' account is by default disabled (can be started from the Directory Utility). Also never edit in /usr/ outside /usr/local/, the other system directories, or /System/ as they belong to the system installation (Mac OS X user modified system files are out into / Library/, but often via some other program which does safety checks.)

  Hans Aberg


----
# Add to end of searchpath:
append_path()
{
if ! eval test -z "\"\${$1##*:$2:*}\"" -o -z "\"\${$1%%*:$2}\"" -o - z "\"\${$1##$2:*}\"" -o -z "\"\${$1##$2}\"" ; then
    eval "$1=\$$1:$2"
  fi
}

# Add to beginning of searchpath:
prepend_path()
{
if ! eval test -z "\"\${$1##*:$2:*}\"" -o -z "\"\${$1%%*:$2}\"" -o - z "\"\${$1##$2:*}\"" -o -z "\"\${$1##$2}\"" ; then
    eval "$1=$2:\$$1"
  fi
}

# Set system searchpaths:

# In the case a directory may exist (depending on the program) both with and without # parent directory 'share/' (like in the cae of MANPATH and INFOPATH), the 'share/' # version is put first, as it is what is used in /usr on Mac OS X FreeSD UNIX. # The idea is that if a program is somehow adapted to this platform, the the stuff will # be moved to the 'share/' variation, and should thus be ovverride the unadapted versions.

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
MANPATH=/usr/share/man:/usr/X11R6/man
INFOPATH=/usr/share/info
LIBPATH=/usr/lib:/usr/X11R6/lib

# Prepend Fink searchpaths:
test -r /sw/bin/init.sh && . /sw/bin/init.sh

# Prepend MacPorts (former DarwinPorts) searchpaths:
prepend_path PATH /opt/local/bin:/opt/local/sbin
prepend_path MANPATH /opt/local/share/man:/opt/local/man
prepend_path INFOPATH /opt/local/share/info:/opt/local/info
prepend_path LIBPATH /opt/local/lib

# Prepend MacTeX paths
prepend_path PATH /usr/texbin
prepend_path MANPATH /usr/local/texlive/2007/texmf/doc/man
prepend_path INFOPATH /usr/local/texlive/2007/texmf/doc/info

# Prepend /usr/local/ searchpaths:
prepend_path PATH /usr/local/bin:/usr/local/X11R6/bin
prepend_path MANPATH /usr/local/share/man:/usr/local/man
prepend_path INFOPATH /usr/local/share/info:/usr/local/info
prepend_path LIBPATH /usr/local/lib

# Prepend $HOME searchpaths:
prepend_path PATH $HOME/local/bin
prepend_path MANPATH $HOME/local/share/man:$HOME/local/man
prepend_path INFOPATH $HOME/local/share/info:$HOME/local/info
prepend_path LIBPATH $HOME/local/lib

# Export changed paths:
export PATH
export MANPATH
export INFOPATH
export LIBPATH
----

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to