Magellan Linux

Annotation of /trunk/core/include/haskell.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5540 - (hide annotations) (download)
Thu Jul 1 15:30:26 2010 UTC (13 years, 10 months ago) by niro
File size: 4689 byte(s)
-typos
1 niro 5489 # $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 niro 5499 SDEPEND="${SDEPEND}
13 niro 5489 >= 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 niro 5492 SRC_URI=(
19     ${SRC_URI[*]}
20     http://hackage.haskell.org/packages/archive/${PNAME/#haskell-/}/${PVER}/${SRCFILE}
21     mirror://${PNAME}/${SRCFILE}
22     )
23 niro 5489
24 niro 5537 # 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 niro 5489 HASKELL_PNAME="${PNAME}"
30 niro 5537 SPECIAL_VARS="${SPECIAL_VARS} HASKELL_PNAME"
31 niro 5502 SPECIAL_FUNCTIONS="${SPECIAL_FUNCTIONS} haskell_preinstall haskell_postinstall haskell_preremove haskell_postremove"
32 niro 5489
33 niro 5537 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 niro 5540 haskell_feature_is_supported "${feature}" || die "haskell feature '${feature}' not supported!"
65 niro 5537 export HASKELL_FEATURES="${HASKELL_FEATURES/${feature}/}"
66     }
67    
68     haskell_enable_feature()
69     {
70     local feature="$1"
71 niro 5540 haskell_feature_is_supported "${feature}" || die "haskell feature '${feature}' not supported!"
72 niro 5537 export HASKELL_FEATURES+=" ${feature}"
73     }
74    
75 niro 5489 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 niro 5537 haskell_feature split-objs && configure_opts+=" --enable-split-objs"
118     haskell_feature shared && configure_opts+=" --enable-shared"
119 niro 5500
120 niro 5489 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 niro 5538 haskell_src_build()
132     {
133     runhaskell $(haskell_ghc_setup_script) build || die
134     }
135    
136 niro 5489 haskell_src_compile()
137     {
138     cd ${SRCDIR}
139     haskell_src_configure || die
140 niro 5538 haskell_src_build || die
141 niro 5489 }
142    
143     haskell_src_install()
144     {
145     cd ${SRCDIR}
146     runhaskell $(haskell_ghc_setup_script) copy --destdir=${BINDIR} || die
147    
148 niro 5493 # create register scripts
149 niro 5537 haskell_feature register && haskell_install_register || die
150 niro 5493
151 niro 5489 # 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 niro 5502 # 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