mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-05 12:26:52 +02:00
testing/ghc: improve and fix abuild
This commit is contained in:
parent
1bc6e9463b
commit
ad037349e2
@ -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
0
testing/ghc/ghc.post-install
Executable file → Normal file
Loading…
x
Reference in New Issue
Block a user