summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Shapovalov <george@gentoo.org>2002-08-08 19:36:40 +0000
committerGeorge Shapovalov <george@gentoo.org>2002-08-08 19:36:40 +0000
commite4c57cd011f57e9157179d8a1a573bd343c1d6a2 (patch)
tree471efbac5e7a05a95b6f25477acc10b554505d88 /dev-lang
parentnew version of ghc, mased for testing (diff)
downloadgentoo-2-e4c57cd011f57e9157179d8a1a573bd343c1d6a2.tar.gz
gentoo-2-e4c57cd011f57e9157179d8a1a573bd343c1d6a2.tar.bz2
gentoo-2-e4c57cd011f57e9157179d8a1a573bd343c1d6a2.zip
new version
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/ghc/files/digest-ghc-5.043
-rw-r--r--dev-lang/ghc/ghc-5.04.ebuild266
2 files changed, 269 insertions, 0 deletions
diff --git a/dev-lang/ghc/files/digest-ghc-5.04 b/dev-lang/ghc/files/digest-ghc-5.04
new file mode 100644
index 000000000000..8fed72214c50
--- /dev/null
+++ b/dev-lang/ghc/files/digest-ghc-5.04
@@ -0,0 +1,3 @@
+MD5 e2abcdfdc7bc6d6ec46c7f7a57fff819 ghc-5.04-src.tar.bz2 4774830
+MD5 c5199db1c12cc633970dfe920f50244d ghc-4.08.2-src.tar.bz2 2920865
+MD5 d25dd1062b09af699f8361fb35394587 ghc-4.08.2-x86-hc.tar.bz2 3901838
diff --git a/dev-lang/ghc/ghc-5.04.ebuild b/dev-lang/ghc/ghc-5.04.ebuild
new file mode 100644
index 000000000000..ee59246b8d5b
--- /dev/null
+++ b/dev-lang/ghc/ghc-5.04.ebuild
@@ -0,0 +1,266 @@
+# Copyright 1999-2002 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License v2
+$ $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-5.04.ebuild,v 1.1 2002/08/08 19:36:40 george Exp $
+
+
+# ebuild for Glorious Glasgow Haskell
+#
+# The build takes as many as three stages:
+#
+# - Stage 1 (may not be required):
+# If no GHC is found installed, we bootstrap an old one from HC files
+# - Stage 2 (may not be required):
+# If the (now) available GHC is of an earlier version than the one
+# we want, we build an extra intermediate one for bootstrapping the
+# final stage. This is necessary because GHCi will only build with
+# a matching version of GHC.
+# - Stage 3:
+# The full and final GHC is built, including HOpenGL (if using
+# opengl), and GHCi.
+#
+# Set the GHC environment variable to your GHC executable if it's not
+# in your PATH.
+#
+# USE variable summary:
+# opengl - Build HOpenGL (OpenGL binding for Haskell).
+#
+# 2002-05-22 Sven Moritz Hallberg <pesco@gmx.de>
+
+inherit base
+
+
+DESCRIPTION="The Glasgow Haskell Compiler"
+HOMEPAGE="http://www.haskell.org/ghc/"
+
+LICENSE="as-is"
+SLOT="0"
+KEYWORDS="x86"
+
+
+# FIXME: Add USE support for parallel haskell (requires PVM)
+# Get PVM from ftp://ftp.netlib.org/pvm3/
+DEPEND="virtual/glibc
+ >=sys-devel/perl-5.6.1
+ >=sys-devel/gcc-2.95.3
+ >=sys-devel/make-3.79.1
+ >=sys-apps/sed-3.02.80
+ >=sys-devel/flex-2.5.4a
+ opengl? ( virtual/opengl
+ virtual/glu
+ virtual/glut )"
+
+RDEPEND="virtual/glibc
+ >=sys-devel/gcc-2.95.3
+ >=sys-devel/perl-5.6.1
+ opengl? ( virtual/opengl virtual/glu virtual/glut )"
+
+
+# Settings for the individual stages...
+
+STAGE1_PV="4.08.2"
+STAGE1_S="${WORKDIR}/ghc-${STAGE1_PV}"
+STAGE1_B="${WORKDIR}/stage1-build"
+STAGE1_D="${BUILDDIR}/stage1-image"
+
+# Stage 2 version is ${PV}
+# Stage 2 source is in ${S}
+STAGE2_B="${WORKDIR}/stage2-build"
+STAGE2_D="${BUILDDIR}/stage2-image"
+
+# Stage 3 version is ${PV}
+# Stage 3 source is in ${S}
+STAGE3_B="${WORKDIR}/stage3-build"
+# Stage 3 destination is ${D}
+
+
+# --- What to Build ---
+
+# Try to find an already-running GHC.
+if test -z "${GHC}"; then
+ if which_ghc=`which ghc`; then
+ GHC="${which_ghc}"
+ fi
+fi
+# If none was found, we need to bootstrap from HC files.
+if test -z "${GHC}"; then
+ echo It seems you do not have any version of GHC available yet.
+ echo I will bootstrap from HC files.
+ boot_from_hc=yes
+
+ # This is the version of our "base GHC", that is, the one we will use
+ # for the first build from Haskell source. It's the stage 1's
+ # version if there is no outside GHC, or that one's version
+ # otherwise (see else clause below).
+ BASE_GHC_VERSION=${STAGE1_PV}
+else
+ boot_from_hc=no
+ BASE_GHC_VERSION=`"$GHC" --version | sed 's/^.*version //'`
+fi
+
+
+# If the base GHC already has the same version as the one we want
+# to build, stage 2 can be skipped.
+if test x${BASE_GHC_VERSION} = x${PV}; then
+ need_stage2=no
+else
+ need_stage2=yes
+fi
+
+
+# Determine which source files to download:
+# - We always need the source distribution for the final version.
+# - If bootstrap from HC files is required:
+# - We need the corresponding source distribution.
+# - We need a set of HC files suitable for our architecture.
+
+# List of platforms for which registerised HC files are available.
+HC_PLATS="x86 sparc"
+
+SRC_URI="http://www.haskell.org/ghc/dist/${PV}/ghc-${PV}-src.tar.bz2"
+if test x$boot_from_hc = xyes; then
+ SRC_URI="$SRC_URI http://www.haskell.org/ghc/dist/${STAGE1_PV}/ghc-${STAGE1_PV}-src.tar.bz2"
+
+ # First pick out the ARCH variable from
+ # /etc/make.profile/make.defaults .
+ arch=`source /etc/make.profile/make.defaults; echo -n $ARCH`
+
+ # Try to pick the correct set of HC files for our architecture.
+ use_unreg=yes
+ for i in $HC_PLATS; do
+ if test x$arch = x$i; then
+ SRC_URI="$SRC_URI http://www.haskell.org/ghc/dist/${STAGE1_PV}/ghc-${STAGE1_PV}-$i-hc.tar.bz2"
+ use_unreg=no
+ break
+ fi
+ done
+ if test x$use_unreg = xyes; then
+ SRC_URI="$SRC_URI http://www.haskell.org/ghc/dist/${STAGE1_PV}/ghc-${STAGE1_PV}-unreg-hc.tar.bz2"
+ fi
+fi
+
+
+# --- Function Entry Points ---
+
+src_unpack() {
+ base_src_unpack
+
+ if test x$boot_from_hc = xyes; then
+ # Patch GHC 4's hc-build script to check for GNU Make's name.
+ echo '>>> Patching stage 1 sources.'
+ bzcat ${FILESDIR}/ghc-${STAGE1_PV}-gentoo.patch.bz2 | patch -d ${STAGE1_S} -p1 || die
+ fi
+
+ # Patch GHC 5's configure script to recognize --without-happy
+ echo '>>> Patching stage 2/3 sources.'
+ bzcat ${FILESDIR}/ghc-${PV}-gentoo.patch.bz2 | patch -d ${S} -p1 || die
+
+ # Create our own lndir if none installed.
+ local LNDIR
+ if which lndir; then
+ LNDIR=lndir
+ else
+ # Current directory should be $WORKDIR.
+ echo "You don\'t seem to have lndir available, building my own"
+ echo "version..."
+ cp ${FILESDIR}/lndir.c . || die
+ make lndir || die
+ LNDIR=./lndir
+ fi
+
+ # Create build directories.
+ if test x$boot_from_hc = xyes; then
+ echo '>>> Creating stage 1 build dir'
+ mkdir ${STAGE1_B} || die
+ ${LNDIR} ${STAGE1_S} ${STAGE1_B} || die
+ fi
+ if test x$need_stage2 = xyes; then
+ echo '>>> Creating stage 2 build dir'
+ mkdir ${STAGE2_B} || die
+ ${LNDIR} ${S} ${STAGE2_B} || die
+ fi
+ echo '>>> Creating stage 3 build dir'
+ mkdir ${STAGE3_B} || die
+ ${LNDIR} ${S} ${STAGE3_B} || die
+}
+
+src_compile() {
+ if test x$boot_from_hc = xyes; then
+ echo ">>> Bootstrapping GHC ${STAGE1_PV} from HC files"
+ build_stage1 # bootstrap from HC files
+ fi
+ if test x$need_stage2 = xyes; then
+ echo ">>> Bootstrapping intermediate GHC ${PV} using GHC ${BASE_GHC_VERSION}"
+ build_stage2 # bootstrap intermediate GHC
+ fi
+ echo ">>> Building complete GHC ${PV} using GHC ${PV} itself"
+ build_stage3 # final build
+}
+
+src_install() {
+ pushd ${STAGE3_B} || die
+ make install \
+ prefix="${D}/usr" \
+ infodir="${D}/usr/share/info" \
+ mandir="${D}/usr/share/man" || die
+
+ # Documentation
+ pushd ghc || die
+
+ # Misc
+ dodoc README ANNOUNCE LICENSE || die
+
+ # End documentation
+ popd
+ popd
+}
+
+
+# --- Build Stages ---
+
+build_stage1() {
+ pushd "${STAGE1_B}" || die
+
+ GMAKE=make distrib/hc-build \
+ --prefix="${STAGE1_D}/usr" \
+ --host="${CHOST}" || die
+ make install || die
+ GHC=${STAGE1_D}/usr/bin/ghc
+
+ popd
+}
+
+build_stage2() {
+ pushd "${STAGE2_B}" || die
+
+ ./configure \
+ --host="${CHOST}" \
+ --prefix="${STAGE2_D}/usr" \
+ --with-ghc="${GHC}" \
+ --without-happy || die
+ # I experienced strange failures during the make process when
+ # using emake (which sets -j 2 in my (default) config).
+ # I hope this will fix that.
+ make || die
+ make install || die
+ GHC=${STAGE2_D}/usr/bin/ghc
+
+ popd
+}
+
+build_stage3() {
+ pushd "${STAGE3_B}" || die
+
+ local myconf
+ use opengl && myconf="--enable-hopengl"
+ ./configure \
+ --host="${CHOST}" \
+ --prefix=/usr \
+ --infodir=/usr/share/info \
+ --mandir=/usr/share/man \
+ --with-ghc="${GHC}" \
+ --without-happy \
+ ${myconf} || die
+ make || die
+
+ popd
+}