Magellan Linux

Contents of /branches/R11-unstable/include/haskell.sminc

Parent Directory Parent Directory | Revision Log 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)
-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