summaryrefslogtreecommitdiff
path: root/cabalize
blob: 407336c9ba7b62707a684e6513743369c5992c3d (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
#!/bin/sh
# Preprocesses cabal file.

BASE_DEPENDS="base haskell98 parsec"

GHC64_DEPENDS=${GHC64_DEPENDS}
GHC66_DEPENDS=${GHC66_DEPENDS-"regex-compat html"}
HCFLAGS=${HCFLAGS-"-O0"}

set -- $(ghc --version)
while [ -n "$1" ] && [ "$1" != 'version' ]; do
	shift
done
shift
ghc_version="$1"

BUILD_DEPENDS="${BASE_DEPENDS}"
case "$ghc_version" in
6.4*)
	BUILD_DEPENDS="${BUILD_DEPENDS} ${GHC64_DEPENDS}"
	;;
6.[5-9]*)
	BUILD_DEPENDS="${BUILD_DEPENDS} ${GHC66_DEPENDS}"
	;;
*)
	echo >&2 "WARNING: Unsupported GHC version '$ghc_version'; proceeding anyway"
	break
	;;
esac
BUILD_DEPENDS=$(echo $BUILD_DEPENDS | sed -e 's# #, #g')

PANDOC_VERSION=$(sed -ne 's/^version[[:space:]]*=[[:space:]]*"\([^"]*\)"/\1/p' src/Main.hs)

# Handle 'Hs-Source-Dir' option name which was deprecated in Cabal > 1.1.3.
HS_SOURCE_DIRS='Hs-Source-Dirs'
cabal_version=$(ghc-pkg -l | sed -ne 's/.*[Cc]abal-\([^,]*\).*/\1/p')
if printf "$cabal_version\n1.1.3" | sort | tail -n 1 | grep -q '1\.1\.3'; then
	HS_SOURCE_DIRS='Hs-Source-Dir'
fi

sed -e "s#@HCFLAGS@#$HCFLAGS#g" \
    -e "s#@BUILD_DEPENDS@#$BUILD_DEPENDS#g" \
    -e "s#@HS_SOURCE_DIRS@#$HS_SOURCE_DIRS#g" \
    -e "s#@VERSION@#$PANDOC_VERSION#g"