#-*-mode: Shell-script; coding: utf-8;-*- # Maintainer: Mitch Tishmack pkgname=ghc pkgver=8.0.2 pkgrel=1 pkgdesc="The Glasgow Haskell Compiler" url="http://haskell.org" subpackages="$pkgname-doc $pkgname-dev" arch="x86_64" builddir="$srcdir/$pkgname-$pkgver" source="http://downloads.haskell.org/~ghc/${pkgver}/ghc-${pkgver}-src.tar.xz 0001-rm-ghc-pwd.patch 0002-Correct-issue-with-libffi-and-glibc.patch 0003-do-not-use-SHELL.patch 0004-reproducible-tmp-names.patch 0005-buildpath-abi-stability.patch 0006-fix-madvise.patch " # Note ghc's license is basically bsd3. If you'd like to know more visit: # https://www.haskell.org/ghc/license # https://ghc.haskell.org/trac/ghc/wiki/Licensing # # Note also that ghc is sensitive to the version of llvm used, hence the # llvm3.7 package. # # Ref: https://ghc.haskell.org/trac/ghc/wiki/Status/GHC-8.0.1 # https://ghc.haskell.org/trac/ghc/wiki/ImprovedLLVMBackend license="custom:bsd3" # 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. depends="gmp-dev perl gcc>=6.2.1 llvm3.7" provides="ghc-bootstrap=$pkgver-r$pkgrel haskell-cabal=1.24.2.0 haskell-bytestring=0.10.8.1 haskell-containers=0.5.7.1 haskell-deepseq=1.4.2.0 haskell-directory=1.3.0.0 haskell-filepath=1.4.1.1 haskell-ghc=8.0.2 haskell-ghc-boot=8.0.2 haskell-ghc-boot-th=8.0.2 haskell-ghc-prim=0.5.0.0 haskell-ghci=8.0.2 haskell-haskeline=0.7.3.0 haskell-hoopl=3.10.2.1 haskell-hpc=0.6.0.3 haskell-integer-gmp=1.0.0.1 haskell-pretty=1.1.3.3 haskell-process=1.4.3.0 haskell-rts=1.0 haskell-template-haskell=2.11.1.0 haskell-terminfo=0.4.0.2 haskell-time=1.6.0.1 haskell-transformers=0.5.2.0 haskell-unix=2.7.2.1 haskell-xhtml=3000.2.1 " install="$pkgname.post-install" # ghc build dependencies makedepends=" $depends autoconf cpio linux-headers musl-dev ncurses-dev libffi-dev zlib-dev binutils-dev binutils-gold paxmark ghc-bootstrap " build() { cd "$builddir" cp mk/build.mk.sample mk/build.mk || return 1 cat >> mk/build.mk <<-EOF BuildFlavour = perf-llvm INTEGER_LIBRARY = integer-gmp BeConservative = YES V = 0 GhcStage3HcOpts += -O3 SplitSections = YES EOF # Due to patches to the configure script autoreconf || return 1 ./configure \ --prefix=/usr \ --with-ld=ld.gold || return 1 make || return 1 } doc() { default_doc install -Dm644 "$builddir/LICENSE" "$subpkgdir/usr/share/licenses/$subpkgname/LICENSE" || return 1 } package() { cd "$builddir" make -j1 DESTDIR="$pkgdir" install || return 1 # Can't do a full strip on archives. find "$pkgdir" -type f \( -name "*.so" -o -name "*.a" \) -exec strip --strip-unneeded {} \; find "$pkgdir/usr/lib/ghc-$pkgver/bin" -type f -exec strip {} \; paxmark -m "$pkgdir/usr/lib/ghc-$pkgver/bin/ghc" paxmark -m "$pkgdir/usr/lib/ghc-$pkgver/bin/ghc-iserv" paxmark -m "$pkgdir/usr/lib/ghc-$pkgver/bin/ghc-iserv-dyn" paxmark -m "$pkgdir/usr/lib/ghc-$pkgver/bin/ghc-iserv-prof" } 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 } sha512sums="58ea3853cd93b556ecdc4abd0be079b2621171b8491f59004ea4e036a4cba4470aaafe6591b942e0a50a64bdc47540e01fe6900212a1ef7087850112d9bfc5ef ghc-8.0.2-src.tar.xz 128eece1b103f286b915a1563a628b638f03509d18cdb2e6510957d26eb56a4ae66e33c946c0e6c2aac2f947b9646dc88c1f390c69ea21f9dc64e0bef4de4e97 0001-rm-ghc-pwd.patch 6f90b0de1e34c286e54ef14514ffabe17f9012fbc5448b4aacb3687aac065942e0a3a2c1c57b6338121140369a8870b4ce2a6b355c83c43344d4de8909a253a4 0002-Correct-issue-with-libffi-and-glibc.patch 59194e6994c8344c579ec16c3adf3e0cdc7c356b524b12f8b10ec940191463d686782e525537c94ffa8e1bf9efcc36a2b3da3004183586ab0e354ab0a7036e0a 0003-do-not-use-SHELL.patch b5a5e73a2f01c0cabc96a49776d0d0f3d1d7a10759bb0b2982e7c7f6dc525d0559c0183ee779feb77ec6f2cec3bac17c1a5ba4c3bc0c6f780dfc1ed3dcf6c80e 0004-reproducible-tmp-names.patch e1c2cef06d307eda4b35521204e95eb54ace5dbcd22de659e95356f884b4424d6304365e4ab45c5116192cba4c095e2e91114bc7cb73d7c7173a7035287d0854 0005-buildpath-abi-stability.patch 478f9c9990ee01b70e88daf97138f853816d862731a02e9286ad787845dcb40c1443a30520598d805d0ff7cea8c3d604ed5d9033dbe8e572e8a85911ee739ff7 0006-fix-madvise.patch"