summaryrefslogtreecommitdiff
path: root/repo/cabal/cabal.xibuild
blob: 64bcd18048b3e75a6337fa9f521335f52729fb37 (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
#!/bin/sh

NAME="cabal"
DESC="The Haskell Cabal"

MAKEDEPS="ghc gmp libffi zlib cabal-bootstrap"

PKG_VER=3.8.1.0
SOURCE="https://hackage.haskell.org/package/cabal-install-$PKG_VER/cabal-install-$PKG_VER.tar.gz"

ADDITIONAL="
cabal.project.freeze
"

cabal_update() {
	cd $BUILD_ROOT
	# Build a freeze file to make the build reproducible.
	# This freeze file is stored in $source and thus tracked in Git.
	HOME="$_cabal_home" cabal v2-update --allow-newer
	(
		cd "$BUILD_ROOT"
		HOME="$_cabal_home" cabal v2-freeze \
			--allow-newer --shadow-installed-packages
		mv cabal.project.freeze "$startdir/"
	)
}

prepare() {
	apply_patches
	ln -sf "$BUILD_ROOT/cabal.project.freeze" \
		"$BUILD_ROOT/cabal.project.freeze"
}

build() {
	HOME="$_cabal_home" cabal v2-update
	HOME="$_cabal_home" cabal v2-build all \
		--allow-newer \
		--jobs=${JOBS:-1} \
		--prefix=/usr \
		--docdir=/usr/share/doc/cabal \
		--sysconfdir=/etc
}

package() {
	# With v2- cabal no longer wants us to separate v2-build and
	# v2-install, however, we don't want to build everything in a
	# fakeroot. We work around this by copying binaries build in the
	# previous step manually.
	#
	# See https://github.com/haskell/cabal/issues/6919#issuecomment-761563498
	HOME="$_cabal_home" cabal list-bin --allow-newer all:exes | \
		xargs install -Dm755 -t "$PKG_DEST"/usr/bin

	mkdir -p "$PKG_DEST"/usr/share/man/man1
	HOME="$_cabal_home" cabal man --raw \
		> "$PKG_DEST"/usr/share/man/man1/cabal.1

	install -Dm644 LICENSE "$PKG_DEST/usr/share/licenses/cabal/LICENSE"
}