blob: d1d0bb873e0fa6beda9a64302f2e48eb904273aa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
#-*-mode: Shell-script; coding: utf-8;-*-
# Maintainer: Mitch Tishmack <mitch.tishmack@gmail.com>
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"
|