Contents of /branches/R11-stable/include/haskell.sminc
Parent Directory | Revision Log
Revision 5542 -
(show annotations)
(download)
Thu Jul 1 15:34:06 2010 UTC (14 years, 2 months ago) by niro
Original Path: trunk/core/include/haskell.sminc
File size: 4865 byte(s)
Thu Jul 1 15:34:06 2010 UTC (14 years, 2 months ago) by niro
Original Path: trunk/core/include/haskell.sminc
File size: 4865 byte(s)
-fixed whitespaces
1 | # $Id$ |
2 | |
3 | # default includes |
4 | sminclude mtools |
5 | |
6 | # some sane default values |
7 | : ${PCATEGORIE="dev-haskell"} |
8 | : ${DESCRIPTION="${PNAME}"} |
9 | : ${HOMEPAGE="http://hackage.haskell.org/package/${PNAME/#haskell-/}"} |
10 | |
11 | # some sane default dependencies |
12 | SDEPEND="${SDEPEND} |
13 | >= dev-lang/ghc-6.12" |
14 | |
15 | # default SRCFILE SRCDIR and SRC_URI |
16 | : ${SRCFILE="${PNAME/#haskell-/}-${PVER}.tar.gz"} |
17 | : ${SRCDIR="${BUILDDIR}/${PNAME/#haskell-/}-${PVER}"} |
18 | SRC_URI=( |
19 | ${SRC_URI[*]} |
20 | http://hackage.haskell.org/packages/archive/${PNAME/#haskell-/}/${PVER}/${SRCFILE} |
21 | mirror://${PNAME}/${SRCFILE} |
22 | ) |
23 | |
24 | # possible features which are supported atm |
25 | HASKELL_POSSIBLE_FEATURES="split-objs shared register haddock" |
26 | # default haskell features |
27 | HASKELL_FEATURES="split-objs shared register" |
28 | |
29 | HASKELL_PNAME="${PNAME}" |
30 | SPECIAL_VARS="${SPECIAL_VARS} HASKELL_PNAME" |
31 | SPECIAL_FUNCTIONS="${SPECIAL_FUNCTIONS} haskell_preinstall haskell_postinstall haskell_preremove haskell_postremove" |
32 | |
33 | haskell_feature() |
34 | { |
35 | local search="$1" |
36 | local feature |
37 | for feature in ${HASKELL_FEATURES} |
38 | do |
39 | # feature was found |
40 | [[ ${search} = ${feature} ]] && return 0 |
41 | done |
42 | |
43 | # feature was *not* found |
44 | return 1 |
45 | } |
46 | |
47 | haskell_feature_is_supported() |
48 | { |
49 | local search="$1" |
50 | local feature |
51 | for feature in ${HASKELL_POSSIBLE_FEATURES} |
52 | do |
53 | # feature was found |
54 | [[ ${search} = ${feature} ]] && return 0 |
55 | done |
56 | |
57 | # feature was *not* found |
58 | return 1 |
59 | } |
60 | |
61 | haskell_disable_feature() |
62 | { |
63 | local feature="$1" |
64 | haskell_feature_is_supported "${feature}" || die "haskell feature '${feature}' not supported!" |
65 | echo -e "${COLBLUE}--- ${COLGRED} disabled haskell feature '${feature}'${COLDEFAULT}" |
66 | export HASKELL_FEATURES="${HASKELL_FEATURES/${feature}/}" |
67 | } |
68 | |
69 | haskell_enable_feature() |
70 | { |
71 | local feature="$1" |
72 | haskell_feature_is_supported "${feature}" || die "haskell feature '${feature}' not supported!" |
73 | echo -e "${COLBLUE}--- ${COLGREEN} enabled haskell feature '${feature}'${COLDEFAULT}" |
74 | export HASKELL_FEATURES+=" ${feature}" |
75 | } |
76 | |
77 | haskell_ghc_version() |
78 | { |
79 | local ver |
80 | ver=$(ghc --numeric-version) |
81 | echo "${ver}" |
82 | } |
83 | |
84 | haskell_ghc_setup_script() |
85 | { |
86 | local setup |
87 | if [[ -e Setup.lhs ]] |
88 | then |
89 | setup="Setup.lhs" |
90 | elif [[ -e Setup.hs ]] |
91 | then |
92 | setup="Setup.hs" |
93 | else |
94 | die "unkown setup script" |
95 | fi |
96 | |
97 | echo "${setup}" |
98 | } |
99 | |
100 | haskell_install_register() |
101 | { |
102 | runhaskell $(haskell_ghc_setup_script) register --gen-script || die |
103 | runhaskell $(haskell_ghc_setup_script) unregister --gen-script || die |
104 | |
105 | minstalldir /usr/share/haskell/${PNAME} || die |
106 | minstallexec register.sh /usr/share/haskell/${PNAME} || die |
107 | minstallexec unregister.sh /usr/share/haskell/${PNAME} || die |
108 | } |
109 | |
110 | haskell_src_prepare() |
111 | { |
112 | munpack ${SRCFILE} || die |
113 | } |
114 | |
115 | haskell_src_configure() |
116 | { |
117 | local configure_opts="$@" |
118 | |
119 | haskell_feature split-objs && configure_opts+=" --enable-split-objs" |
120 | haskell_feature shared && configure_opts+=" --enable-shared" |
121 | |
122 | runhaskell $(haskell_ghc_setup_script) configure \ |
123 | --ghc \ |
124 | --prefix=/usr \ |
125 | --libdir=/usr/$(mlibdir) \ |
126 | --libsubdir=ghc-$(haskell_ghc_version)/${PNAME/#haskell-/}-${PVER} \ |
127 | --datadir=/usr/share \ |
128 | --datasubdir=ghc-$(haskell_ghc_version)/${PNAME/#haskell-/}-${PVER} \ |
129 | ${configure_opts} \ |
130 | || die |
131 | } |
132 | |
133 | haskell_src_build() |
134 | { |
135 | runhaskell $(haskell_ghc_setup_script) build || die |
136 | } |
137 | |
138 | haskell_src_compile() |
139 | { |
140 | cd ${SRCDIR} |
141 | haskell_src_configure || die |
142 | haskell_src_build || die |
143 | } |
144 | |
145 | haskell_src_install() |
146 | { |
147 | cd ${SRCDIR} |
148 | runhaskell $(haskell_ghc_setup_script) copy --destdir=${BINDIR} || die |
149 | |
150 | # create register scripts |
151 | haskell_feature register && haskell_install_register || die |
152 | |
153 | # install docs |
154 | local i |
155 | for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ |
156 | FAQ LICENSE NEWS README TODO prologue.txt |
157 | do |
158 | if [ -f ${SRCDIR}/${i} ] |
159 | then |
160 | minstalldocs ${i} || die |
161 | fi |
162 | done |
163 | } |
164 | |
165 | haskell_preinstall() |
166 | { |
167 | if [[ -x ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/unregister.sh ]] |
168 | then |
169 | echo "unregister haskell module ${HASKELL_PNAME} ..." |
170 | ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/unregister.sh |
171 | fi |
172 | } |
173 | |
174 | haskell_postinstall() |
175 | { |
176 | if [[ -x ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/register.sh ]] |
177 | then |
178 | echo "register haskell module ${HASKELL_PNAME} ..." |
179 | ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/register.sh |
180 | fi |
181 | } |
182 | |
183 | # haskell_preremove() |
184 | # { |
185 | # if [[ -x ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/unregister.sh ]] |
186 | # then |
187 | # echo "unregister haskell module ${HASKELL_PNAME} ..." |
188 | # ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/unregister.sh |
189 | # fi |
190 | # } |
191 | |
192 | # to be on the safe side, fix all broken packages afer a package remove |
193 | haskell_postremove() |
194 | { |
195 | if [[ -x $(which ghc-pkg) ]] |
196 | then |
197 | local broken="$(ghc-pkg check --simple-output)" |
198 | if [[ ! -z ${broken} ]] |
199 | then |
200 | echo "fixing broken haskell modules:" |
201 | local pkg |
202 | for pkg in ${broken} |
203 | do |
204 | echo " unregister ${pkg} ..." |
205 | ghc-pkg unregister ${pkg} |
206 | done |
207 | fi |
208 | fi |
209 | } |
210 | |
211 | export_inherits haskell src_prepare src_compile src_install preinstall postinstall postremove #preremove |