Contents of /branches/R11-unstable/include/haskell.sminc
Parent Directory | Revision Log
Revision 5538 -
(show annotations)
(download)
Thu Jul 1 15:25:35 2010 UTC (14 years, 4 months ago) by niro
Original Path: trunk/core/include/haskell.sminc
File size: 4663 byte(s)
Thu Jul 1 15:25:35 2010 UTC (14 years, 4 months ago) by niro
Original Path: trunk/core/include/haskell.sminc
File size: 4663 byte(s)
-moved source build in its on function
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 || die "haskell feature '${feature}' not supported!" |
65 | export HASKELL_FEATURES="${HASKELL_FEATURES/${feature}/}" |
66 | } |
67 | |
68 | haskell_enable_feature() |
69 | { |
70 | local feature="$1" |
71 | haskell_feature_is_supported || die "haskell feature '${feature}' not supported!" |
72 | export HASKELL_FEATURES+=" ${feature}" |
73 | } |
74 | |
75 | haskell_ghc_version() |
76 | { |
77 | local ver |
78 | ver=$(ghc --numeric-version) |
79 | echo "${ver}" |
80 | } |
81 | |
82 | haskell_ghc_setup_script() |
83 | { |
84 | local setup |
85 | if [[ -e Setup.lhs ]] |
86 | then |
87 | setup="Setup.lhs" |
88 | elif [[ -e Setup.hs ]] |
89 | then |
90 | setup="Setup.hs" |
91 | else |
92 | die "unkown setup script" |
93 | fi |
94 | |
95 | echo "${setup}" |
96 | } |
97 | |
98 | haskell_install_register() |
99 | { |
100 | runhaskell $(haskell_ghc_setup_script) register --gen-script || die |
101 | runhaskell $(haskell_ghc_setup_script) unregister --gen-script || die |
102 | |
103 | minstalldir /usr/share/haskell/${PNAME} || die |
104 | minstallexec register.sh /usr/share/haskell/${PNAME} || die |
105 | minstallexec unregister.sh /usr/share/haskell/${PNAME} || die |
106 | } |
107 | |
108 | haskell_src_prepare() |
109 | { |
110 | munpack ${SRCFILE} || die |
111 | } |
112 | |
113 | haskell_src_configure() |
114 | { |
115 | local configure_opts="$@" |
116 | |
117 | haskell_feature split-objs && configure_opts+=" --enable-split-objs" |
118 | haskell_feature shared && configure_opts+=" --enable-shared" |
119 | |
120 | runhaskell $(haskell_ghc_setup_script) configure \ |
121 | --ghc \ |
122 | --prefix=/usr \ |
123 | --libdir=/usr/$(mlibdir) \ |
124 | --libsubdir=ghc-$(haskell_ghc_version)/${PNAME/#haskell-/}-${PVER} \ |
125 | --datadir=/usr/share \ |
126 | --datasubdir=ghc-$(haskell_ghc_version)/${PNAME/#haskell-/}-${PVER} \ |
127 | ${configure_opts} \ |
128 | || die |
129 | } |
130 | |
131 | haskell_src_build() |
132 | { |
133 | runhaskell $(haskell_ghc_setup_script) build || die |
134 | } |
135 | |
136 | haskell_src_compile() |
137 | { |
138 | cd ${SRCDIR} |
139 | haskell_src_configure || die |
140 | haskell_src_build || die |
141 | } |
142 | |
143 | haskell_src_install() |
144 | { |
145 | cd ${SRCDIR} |
146 | runhaskell $(haskell_ghc_setup_script) copy --destdir=${BINDIR} || die |
147 | |
148 | # create register scripts |
149 | haskell_feature register && haskell_install_register || die |
150 | |
151 | # install docs |
152 | local i |
153 | for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ |
154 | FAQ LICENSE NEWS README TODO prologue.txt |
155 | do |
156 | if [ -f ${SRCDIR}/${i} ] |
157 | then |
158 | minstalldocs ${i} || die |
159 | fi |
160 | done |
161 | } |
162 | |
163 | haskell_preinstall() |
164 | { |
165 | if [[ -x ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/unregister.sh ]] |
166 | then |
167 | echo "unregister haskell module ${HASKELL_PNAME} ..." |
168 | ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/unregister.sh |
169 | fi |
170 | } |
171 | |
172 | haskell_postinstall() |
173 | { |
174 | if [[ -x ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/register.sh ]] |
175 | then |
176 | echo "register haskell module ${HASKELL_PNAME} ..." |
177 | ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/register.sh |
178 | fi |
179 | } |
180 | |
181 | # haskell_preremove() |
182 | # { |
183 | # if [[ -x ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/unregister.sh ]] |
184 | # then |
185 | # echo "unregister haskell module ${HASKELL_PNAME} ..." |
186 | # ${MROOT}/usr/share/haskell/${HASKELL_PNAME}/unregister.sh |
187 | # fi |
188 | # } |
189 | |
190 | # to be on the safe side, fix all broken packages afer a package remove |
191 | haskell_postremove() |
192 | { |
193 | if [[ -x $(which ghc-pkg) ]] |
194 | then |
195 | local broken="$(ghc-pkg check --simple-output)" |
196 | if [[ ! -z ${broken} ]] |
197 | then |
198 | echo "fixing broken haskell modules:" |
199 | local pkg |
200 | for pkg in ${broken} |
201 | do |
202 | echo " unregister ${pkg} ..." |
203 | ghc-pkg unregister ${pkg} |
204 | done |
205 | fi |
206 | fi |
207 | } |
208 | |
209 | export_inherits haskell src_prepare src_compile src_install preinstall postinstall postremove #preremove |