void-packages/srcpkgs/ghc/template
slotThe bbbb1efebc ghc: update to 8.8.3
Incorporates #20368

Also uses a recent libffi tarball for generating bindists.
This may not matter so much for x86_64 but the libffi tarball
ghc bundles by default is from 2017 and there is an assortment
of bugs that would be too much effort to patch. Instead just fetch
a fresh, confirmed-to-work tarball from upstream source.

Currently selected revision is 4d6d286 because that's almost just
the official 3.3 release, but with a bunch of fixes applied (which
we are patching in in our own libffi). It was selected to predate
some more invasive changes made in libffi master.
2020-04-14 21:24:20 +02:00

93 lines
2.9 KiB
Bash

# Template file for 'ghc'
pkgname=ghc
# Keep this synchronized with http://www.stackage.org/lts
version=8.8.3
revision=1
wrksrc="ghc-${version%[!0-9]}"
build_style=gnu-configure
configure_args="--with-system-libffi"
hostmakedepends="automake docbook-xsl ghc-bin libxslt python3-Sphinx"
makedepends="gmp-devel libffi-devel libnuma-devel ncurses-devel"
depends="perl gcc libffi-devel gmp-devel libnuma-devel"
short_desc="Glorious Haskell Compiler"
maintainer="Leah Neukirchen <leah@vuxu.org>"
license="BSD-3-Clause"
homepage="http://www.haskell.org/ghc/"
distfiles="http://www.haskell.org/ghc/dist/${version%[!0-9]}/${pkgname}-${version%[!0-9]}-src.tar.xz"
checksum=e0dcc0aaf3e234c5978f29e6df62947e97720ab404ec0158343df211c5480f89
patch_args="-Np1"
nocross=yes # ask leah2 before wasting time trying to do that
_bindir="/usr/lib/${pkgname}-${version}/bin"
nopie_files="
${_bindir}/ghc
${_bindir}/ghc-iserv
${_bindir}/ghc-iserv-dyn
${_bindir}/ghc-iserv-prof
${_bindir}/ghc-pkg
${_bindir}/haddock
${_bindir}/hp2ps
${_bindir}/hpc
${_bindir}/hsc2hs
${_bindir}/runghc
${_bindir}/unlit
"
build_options="bindist"
desc_option_bindist="Create a binary distribution"
# Recent safe to use tarball
# GHC's bundled tarball is from 2017, buggy on some archs
_ffi_rev=4d6d2866ae43e55325e8ee96561221804602cd7a
if [ "$build_option_bindist" ]; then
# Strip --with-system-libffi from configuration
configure_args=${configure_args/--with-system-libffi/}
# Required to make the binary distribution tarball
hostmakedepends+=" tar xz libtool libltdl-devel"
# Fetch a safe libffi tarball
distfiles+=" https://github.com/libffi/libffi/archive/${_ffi_rev}.tar.gz>libffi-${_ffi_rev}.tar.gz"
checksum+=" f7a17fa61261942e93450ec52272b5f09d8f42cfffd147867587f969ee01b739"
skip_extraction+=" libffi-${_ffi_rev}.tar.gz"
fi
post_extract() {
[ "$build_option_bindist" ] || return 0
rm -f libffi-tarballs/libffi-*.tar.gz
cp ${XBPS_SRCDISTDIR}/${pkgname}-${version}/libffi-${_ffi_rev}.tar.gz \
libffi-tarballs
}
pre_configure() {
export CONF_CC_OPTS_STAGE0=$CFLAGS_FOR_BUILD
export CONF_CC_OPTS_STAGE1=$CFLAGS
export CONF_CC_OPTS_STAGE2=$CFLAGS
export CONF_GCC_LINKER_OPTS_STAGE0=$LDFLAGS_FOR_BUILD
export CONF_GCC_LINKER_OPTS_STAGE1=$LDFLAGS
export CONF_GCC_LINKER_OPTS_STAGE2=$LDFLAGS
export CONF_CPP_OPTS_STAGE0=$CPPFLAGS_FOR_BUILD
export CONF_CPP_OPTS_STAGE1=$CPPFLAGS
export CONF_CPP_OPTS_STAGE2=$CPPFLAGS
autoreconf -fi
}
post_install() {
sed -i 's#/usr/lib/ccache/bin/##g' ${DESTDIR}/usr/lib/ghc-${version%[!0-9]}/settings
vlicense LICENSE
if [ "$build_option_bindist" ]; then
msg_normal "Creating binary distribution for ${XBPS_TARGET_MACHINE}...\n"
make ${makejobs} binary-dist
dest="${XBPS_SRCDISTDIR}"/distfiles/ghc-${version}-void-linux-${XBPS_TARGET_LIBC}.tar.xz
install -d -m 0644 ghc-${version}-*-unknown-linux.tar.xz "${dest}"
msg_normal "Installed in ${dest}\n"
fi
}
ghc-doc_package() {
archs=noarch
short_desc+=" -- documentation"
pkg_install() {
vmove usr/share/doc
}
}