aboutsummaryrefslogtreecommitdiffstats
path: root/testing/ghc/APKBUILD
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"