testing/ghc: improve and fix abuild

This commit is contained in:
Jakub Jirutka 2017-04-10 23:52:24 +02:00
parent 1bc6e9463b
commit ad037349e2
2 changed files with 63 additions and 45 deletions

View File

@ -2,14 +2,14 @@
# Maintainer: Mitch Tishmack <mitch.tishmack@gmail.com>
pkgname=ghc
pkgver=8.0.2
pkgrel=4
pkgrel=5
pkgdesc="The Glasgow Haskell Compiler"
url="http://haskell.org"
arch="x86_64 armhf"
# Note ghc's license is basically BSD-3. If you'd like to know more visit:
# * https://www.haskell.org/ghc/license
# * https://ghc.haskell.org/trac/ghc/wiki/Licensing
license="custom:bsd3"
license="custom:BSD-3"
# Note, gcc supports --no-pie on alpine linux 3.5+ only. We test for
# that version as it greatly simplifies the apkbuild process. The
# apks built on 3.5 will not work on any prior version of Alpine Linux.
@ -52,8 +52,9 @@ provides="ghc-bootstrap=$pkgver-r$pkgrel
"
subpackages="$pkgname-doc $pkgname-dev"
install="$pkgname.post-install"
source="http://downloads.haskell.org/~ghc/${pkgver}/ghc-${pkgver}-src.tar.xz
http://downloads.haskell.org/~ghc/${pkgver}/ghc-${pkgver}-testsuite.tar.xz
options="!strip" # we strip it manually in build()
source="http://downloads.haskell.org/~ghc/$pkgver/ghc-$pkgver-src.tar.xz
http://downloads.haskell.org/~ghc/$pkgver/ghc-$pkgver-testsuite.tar.xz
0000-alpine.patch
0000-bootstrap.patch
0001-rm-ghc-pwd.patch
@ -68,8 +69,10 @@ source="http://downloads.haskell.org/~ghc/${pkgver}/ghc-${pkgver}-src.tar.xz
builddir="$srcdir/$pkgname-$pkgver"
prepare() {
default_prepare || return 1
cp mk/build.mk.sample mk/build.mk || return 1
default_prepare
cp mk/build.mk.sample mk/build.mk
cat >> mk/build.mk <<-EOF
BuildFlavour = perf-llvm
INTEGER_LIBRARY = integer-gmp
@ -90,13 +93,14 @@ prepare() {
fi
# Due to patches to the configure script
autoreconf || return 1
autoreconf
}
build() {
cd "$builddir"
local _ffi_inc=$(pkg-config libffi --cflags-only-I); _ffi_inc="${_ffi_inc%% }"
local _ffi_lib=$(pkg-config libffi --libs-only-L); _ffi_lib="${_ffi_lib%% }"
local ffi_inc=$(pkg-config libffi --cflags-only-I); ffi_inc="${ffi_inc%% }"
local ffi_lib=$(pkg-config libffi --libs-only-L); ffi_lib="${ffi_lib%% }"
# NOTE: ghc build system requires host == build, and it ends up
# compiling the cross-compiler (stage1) and cross-compiling with
@ -107,71 +111,85 @@ build() {
--target=$CTARGET \
--prefix=/usr \
--with-system-libffi \
${_ffi_inc:+--with-ffi-includes="${_ffi_inc#-I}"} \
${_ffi_lib:+--with-ffi-libraries="${_ffi_lib#-L}"} \
${ffi_inc:+--with-ffi-includes="${ffi_inc#-I}"} \
${ffi_lib:+--with-ffi-libraries="${ffi_lib#-L}"} \
--with-ar=${CROSS_COMPILE}ar \
--with-nm=${CROSS_COMPILE}nm \
--with-ranlib=${CROSS_COMPILE}ranlib \
--with-objdump=${CROSS_COMPILE}objdump \
--with-ld=${CROSS_COMPILE}ld.gold \
--with-ld.gold=${CROSS_COMPILE}ld.gold \
|| return 1
make || return 1
--with-ld.gold=${CROSS_COMPILE}ld.gold
make
}
check() {
cd "$builddir/testsuite"
make fast THREADS=$JOBS || return 1
make fast THREADS=$JOBS
}
doc() {
default_doc
install -Dm644 "$builddir/LICENSE" "$subpkgdir/usr/share/licenses/$subpkgname/LICENSE" || return 1
install -Dm644 "$builddir/LICENSE" \
"$subpkgdir/usr/share/licenses/$subpkgname/LICENSE"
}
package() {
local ghclib="usr/lib/ghc-$pkgver"
local newpath path target
cd "$builddir"
make -j1 DESTDIR="$pkgdir" install || return 1
make -j1 DESTDIR="$pkgdir" install
local _ghclib="usr/lib/ghc-$pkgver"
cd "$pkgdir"
# Fixup install tree if needed
if [ -d "$pkgdir/usr/lib/$CTARGET-ghc-$pkgver" ]; then
# Fixup install tree if needed.
if [ -d usr/lib/$CTARGET-ghc-$pkgver ]; then
# different location
_ghclib="usr/lib/$CTARGET-ghc-$pkgver"
# rename binaries, and fix links
local fn; for fn in "$pkgdir"/usr/bin/"$CTARGET"-*; do
local _new="${fn//${CTARGET}-/}"
if [ -h "$fn" ]; then
local _target="$(readlink $fn)"
ln -sf "${_target//${CTARGET}-/}" "$_new" || return 1
rm "$fn" || return 1
ghclib="usr/lib/$CTARGET-ghc-$pkgver"
# Rename binaries and fix links.
local path; for path in usr/bin/"$CTARGET"-*; do
newpath="${path//$CTARGET-/}"
if [ -h "$path" ]; then
target="$(readlink $path)"
ln -sf "${target//$CTARGET-/}" "$newpath"
rm "$path"
else
mv "$fn" "$_new" || return 1
mv "$path" "$newpath"
fi
done
# remove triplet prefix from settings -- the intention is
# that the native compiler will use native gcc/ld on the target
sed -ie "s|$CTARGET-||g" "$pkgdir"/usr/lib/${CTARGET}-ghc-$pkgver/settings || return 1
# Remove triplet prefix from settings -- the intention is
# that the native compiler will use native gcc/ld on the target.
sed -i "s|$CTARGET-||g" usr/lib/$CTARGET-ghc-$pkgver/settings
fi
# Can't do a full strip on archives.
find "$pkgdir" -type f \( -name "*.so" -o -name "*.a" \) -exec ${CROSS_COMPILE}strip --strip-unneeded {} \;
find "$pkgdir/$_ghclib/bin" -type f -exec ${CROSS_COMPILE}strip {} \;
paxmark -m "$pkgdir/$_ghclib/bin/ghc" \
"$pkgdir/$_ghclib/bin/ghc-iserv" \
"$pkgdir/$_ghclib/bin/ghc-iserv-dyn" \
"$pkgdir/$_ghclib/bin/ghc-iserv-prof"
find . -type f \( -name "*.so" -o -name "*.a" \) \
-exec ${CROSS_COMPILE}strip --strip-unneeded {} \;
find $ghclib/bin -type f -exec ${CROSS_COMPILE}strip {} \;
paxmark -m \
$ghclib/bin/ghc \
$ghclib/bin/ghc-iserv \
$ghclib/bin/ghc-iserv-dyn \
$ghclib/bin/ghc-iserv-prof
}
# Like debian, we split apart the profiled archives/etc...
# This drastically reduces the install size of the ghc pkg.
dev() {
# Like debian, we split apart the profiled archives/etc...
# This drastically reduces the install size of the ghc pkg.
cd "${pkgdir}" || return 1
install -dm755 "${subpkgdir}" || return 1
local PFILES=$(find . \( -type f -o -type l \) \( -name "*.p_*" -o -name "lib*_p.a" \))
echo "${PFILES}" | cpio -pamVd "${subpkgdir}" || return 1
echo "${PFILES}" | xargs rm -fr || return 1
pkgdesc="$pkgdesc (development files)"
depends="$pkgname=$pkgver-r$pkgrel"
cd "$pkgdir"
install -dm755 "$subpkgdir"
local pfiles=$(find . \( -type f -o -type l \) \( -name "*.p_*" -o -name "lib*_p.a" \))
echo "$pfiles" | cpio -pamVd "$subpkgdir"
echo "$pfiles" | xargs rm -fr
}
sha512sums="58ea3853cd93b556ecdc4abd0be079b2621171b8491f59004ea4e036a4cba4470aaafe6591b942e0a50a64bdc47540e01fe6900212a1ef7087850112d9bfc5ef ghc-8.0.2-src.tar.xz

0
testing/ghc/ghc.post-install Executable file → Normal file
View File