forked from hasufell/hasufell-repository
		
	[dev-lang/GHC] Add GHC-8.8.3
This also introduces the bootstrap option, to use an official bindist for bootstrapping instead of an existing install.
This commit is contained in:
		
							parent
							
								
									e8c3869265
								
							
						
					
					
						commit
						f05ef97410
					
				
							
								
								
									
										188
									
								
								packages/dev-lang/GHC/GHC-8.8.3.exheres-0
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										188
									
								
								packages/dev-lang/GHC/GHC-8.8.3.exheres-0
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,188 @@
 | 
			
		||||
# Copyright 2008 Santiago M. Mola
 | 
			
		||||
# Copyright 2008, 2009, 2010, 2011 Ingmar Vanhassel
 | 
			
		||||
# Copyright 2011 Markus Rothe
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# Based in part upon 'ghc-6.8.2.ebuild' from Gentoo, which is:
 | 
			
		||||
#     Copyright 1999-2008 Gentoo Foundation
 | 
			
		||||
# Copyright 2018 Julian Ospald <hasufell@posteo.de>
 | 
			
		||||
 | 
			
		||||
MY_PN="ghc"
 | 
			
		||||
MY_PNV="${MY_PN}-${PV}"
 | 
			
		||||
MY_PNVR="${MY_PN}-${PVR}"
 | 
			
		||||
BOOTSTRAP_PV="8.6.5"
 | 
			
		||||
 | 
			
		||||
require bash-completion flag-o-matic alternatives
 | 
			
		||||
require autotools [ supported_autoconf=[ 2.5 ] supported_automake=[ 1.15 ] ]
 | 
			
		||||
 | 
			
		||||
SUMMARY="The Glorious Glasgow Haskell Compilation System (non-haskell packages version)"
 | 
			
		||||
DESCRIPTION="
 | 
			
		||||
GHC is a state-of-the-art, open source, compiler and interactive environment for the functional
 | 
			
		||||
language Haskell.
 | 
			
		||||
"
 | 
			
		||||
HOMEPAGE="https://www.haskell.org/ghc/"
 | 
			
		||||
DOWNLOADS="
 | 
			
		||||
    https://downloads.haskell.org/~ghc/${PV}/${MY_PNV}-src.tar.xz
 | 
			
		||||
    https://downloads.haskell.org/~ghc/${PV}/${MY_PNV}-testsuite.tar.xz
 | 
			
		||||
    bootstrap? ( https://downloads.haskell.org/~ghc/${BOOTSTRAP_PV}/ghc-${BOOTSTRAP_PV}-x86_64-fedora27-linux.tar.xz )
 | 
			
		||||
"
 | 
			
		||||
 | 
			
		||||
PLATFORMS="-* ~amd64"
 | 
			
		||||
 | 
			
		||||
BUGS_TO=""
 | 
			
		||||
REMOTE_IDS="freecode:${MY_PN}"
 | 
			
		||||
UPSTREAM_RELEASE_NOTES="http://www.haskell.org/${MY_PN}/docs/${PV}/html/users_guide/release-${PV//./-}.html"
 | 
			
		||||
 | 
			
		||||
LICENCES="BSD-3"
 | 
			
		||||
SLOT="${PV}"
 | 
			
		||||
MYOPTIONS="
 | 
			
		||||
    bootstrap [[ description = [ Use official bindist for bootstrapping ] ]]
 | 
			
		||||
    doc
 | 
			
		||||
    llvm [[ description = [ Code generation using LLVM ] ]]
 | 
			
		||||
"
 | 
			
		||||
 | 
			
		||||
# `make test` takes really long, so disable it. It also succeeds (i.e. returned value is zero) in
 | 
			
		||||
# case of unexpected failures. There are always unexpected failures.
 | 
			
		||||
# If you really want to run the tests, then enable expensive tests in order to run `make fulltest`,
 | 
			
		||||
# which runs the same tests as `make test`, but includes more test cases per test.
 | 
			
		||||
RESTRICT="test"
 | 
			
		||||
 | 
			
		||||
DEPENDENCIES="
 | 
			
		||||
    build:
 | 
			
		||||
        dev-python/Sphinx
 | 
			
		||||
        !bootstrap? (
 | 
			
		||||
            dev-lang/GHC:${BOOTSTRAP_PV}
 | 
			
		||||
        )
 | 
			
		||||
    build+run:
 | 
			
		||||
        dev-lang/perl:*[>=5.6.1]
 | 
			
		||||
        dev-libs/gmp:=[>=5]
 | 
			
		||||
        dev-libs/libffi
 | 
			
		||||
        llvm? ( dev-lang/llvm[>=2.7] )
 | 
			
		||||
        !dev-lang/ghc [[ resolution = uninstall-blocked-before ]]
 | 
			
		||||
        !dev-lang/ghc-bin [[ resolution = uninstall-blocked-before ]]
 | 
			
		||||
"
 | 
			
		||||
 | 
			
		||||
WORK=${WORKBASE}/${MY_PNV}
 | 
			
		||||
 | 
			
		||||
src_unpack() {
 | 
			
		||||
    if option bootstrap ; then
 | 
			
		||||
        unpack ghc-${BOOTSTRAP_PV}-x86_64-fedora27-linux.tar.xz
 | 
			
		||||
        edo mv ghc-${BOOTSTRAP_PV} "bootstrap-ghc"
 | 
			
		||||
    fi
 | 
			
		||||
    unpack ${MY_PNV}-src.tar.xz
 | 
			
		||||
    unpack ${MY_PNV}-testsuite.tar.xz
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
src_prepare() {
 | 
			
		||||
    if option bootstrap ; then
 | 
			
		||||
        # prepare pre-built ghc
 | 
			
		||||
        edo pushd "${WORKBASE}/bootstrap-ghc"
 | 
			
		||||
        edo ./configure \
 | 
			
		||||
            --prefix="${TEMP}/ghc-pre" \
 | 
			
		||||
            --target=$(exhost --target)
 | 
			
		||||
        emake install
 | 
			
		||||
        edo popd
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    autotools_src_prepare
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
src_configure() {
 | 
			
		||||
    # Initialize build.mk
 | 
			
		||||
    echo '# Exherbo changes' > mk/build.mk
 | 
			
		||||
 | 
			
		||||
    cat <<EOF >> mk/build.mk
 | 
			
		||||
# Put docs into the right place
 | 
			
		||||
docdir = /usr/share/doc/${MY_PNVR}
 | 
			
		||||
htmldir = /usr/share/doc/${MY_PNVR}/html
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
    if option doc; then
 | 
			
		||||
        echo "BUILD_SPHINX_HTML=YES" >> mk/build.mk
 | 
			
		||||
        echo "BUILD_SPHINX_PDF=NO" >> mk/build.mk
 | 
			
		||||
        echo "HADDOCK_DOCS=YES" >> mk/build.mk
 | 
			
		||||
    else
 | 
			
		||||
        echo "BUILD_SPHINX_HTML=NO" >> mk/build.mk
 | 
			
		||||
        echo "BUILD_SPHINX_PDF=NO" >> mk/build.mk
 | 
			
		||||
        echo "HADDOCK_DOCS=NO" >> mk/build.mk
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    export PATH="${WORKBASE}/usr/bin:${PATH}"
 | 
			
		||||
 | 
			
		||||
    if option llvm; then
 | 
			
		||||
        echo "GhcWithLlvmCodeGen=YES" >> mk/build.mk
 | 
			
		||||
    else
 | 
			
		||||
        echo "GhcWithLlvmCodeGen=NO" >> mk/build.mk
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    GHC_SRC_CONFIGURE_OPTIONS+=(
 | 
			
		||||
        --with-system-libffi
 | 
			
		||||
        --with-ffi-includes=$(${PKG_CONFIG} --variable includedir libffi)
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    # host and build cause compilation (at least for 7.6.1) to fail, as they're intended for
 | 
			
		||||
    # cross-compilation.
 | 
			
		||||
    GHC=ghc-${BOOTSTRAP_PV} econf \
 | 
			
		||||
        AR=${AR} \
 | 
			
		||||
        CC=${CC} \
 | 
			
		||||
        --target=$(exhost --target) \
 | 
			
		||||
        "${GHC_SRC_CONFIGURE_OPTIONS[@]}"
 | 
			
		||||
 | 
			
		||||
    # don't strip anything. Very useful when stage2 SIGSEGVs on you
 | 
			
		||||
    echo "STRIP_CMD = :" >> mk/build.mk
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
src_install() {
 | 
			
		||||
    default
 | 
			
		||||
 | 
			
		||||
    # libraries/ is a partial dupe of the html/ dir hierarchy, but
 | 
			
		||||
    # containing only LICENSE files
 | 
			
		||||
    edo rm -rf "${IMAGE}"/usr/share/doc/${MY_PNVR}/{LICENSE,libraries}
 | 
			
		||||
 | 
			
		||||
    dobashcompletion "${FILES}/ghc-bash-completion"
 | 
			
		||||
    alternatives_for ghc ${SLOT} ${SLOT} \
 | 
			
		||||
        /usr/share/bash-completion/completions/ghc-bin{,-${SLOT}}
 | 
			
		||||
 | 
			
		||||
    # some scripts are not versioned, move
 | 
			
		||||
    edo mv "${IMAGE}"/usr/$(exhost --target)/bin/{hp2ps,hp2ps-${SLOT}}
 | 
			
		||||
    edo mv "${IMAGE}"/usr/$(exhost --target)/bin/{hpc,hpc-${SLOT}}
 | 
			
		||||
    edo mv "${IMAGE}"/usr/$(exhost --target)/bin/{hsc2hs,hsc2hs-${SLOT}}
 | 
			
		||||
 | 
			
		||||
    # remove unversioned symlinks, we create alternatives later
 | 
			
		||||
    local ghc_bin
 | 
			
		||||
    for ghc_bin in ghc ghci ghc-pkg $(optionq doc && echo "haddock") runghc runhaskell ; do
 | 
			
		||||
        edo rm "${IMAGE}"/usr/$(exhost --target)/bin/${ghc_bin}
 | 
			
		||||
    done
 | 
			
		||||
    unset ghc_bin
 | 
			
		||||
 | 
			
		||||
    # create alternatives for scripts/binaries
 | 
			
		||||
    alternatives_for ghc ${SLOT} ${SLOT} \
 | 
			
		||||
        /usr/$(exhost --target)/bin/ghc{,-${SLOT}} \
 | 
			
		||||
        /usr/$(exhost --target)/bin/ghci{,-${SLOT}} \
 | 
			
		||||
        /usr/$(exhost --target)/bin/ghc-pkg{,-${SLOT}} \
 | 
			
		||||
        $(optionq doc &&  echo "/usr/$(exhost --target)/bin/haddock{,-ghc-${SLOT}}") \
 | 
			
		||||
        /usr/$(exhost --target)/bin/hp2ps{,-${SLOT}} \
 | 
			
		||||
        /usr/$(exhost --target)/bin/hpc{,-${SLOT}} \
 | 
			
		||||
        /usr/$(exhost --target)/bin/hsc2hs{,-${SLOT}} \
 | 
			
		||||
        /usr/$(exhost --target)/bin/runghc{,-${SLOT}} \
 | 
			
		||||
        /usr/$(exhost --target)/bin/runhaskell /usr/$(exhost --target)/bin/runghc-${SLOT}
 | 
			
		||||
 | 
			
		||||
    # alternatives for manpages
 | 
			
		||||
    if [[ -d ${IMAGE}/usr/share/man ]]; then
 | 
			
		||||
        local file alternatives=()
 | 
			
		||||
        for file in "${IMAGE}"/usr/share/man/*/*; do
 | 
			
		||||
            alternatives+=(
 | 
			
		||||
            ${file#${IMAGE}}
 | 
			
		||||
            ${file#${IMAGE}}-${SLOT}
 | 
			
		||||
            )
 | 
			
		||||
        done
 | 
			
		||||
 | 
			
		||||
        alternatives_for \
 | 
			
		||||
            ghc ${SLOT} ${SLOT} \
 | 
			
		||||
            "${alternatives[@]}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
src_test_expensive() {
 | 
			
		||||
    emake fulltest
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user