Magellan Linux

Annotation of /branches/mage-next/src/smage2.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 40 - (hide annotations) (download) (as text)
Thu Jan 6 23:28:28 2005 UTC (19 years, 4 months ago) by niro
Original Path: trunk/mage/usr/lib/mage/smage2.sh
File MIME type: application/x-sh
File size: 8631 byte(s)
updated revision tags

1 niro 24 #!/bin/bash
2    
3     # compiles/installs .smage2 source install scripts
4     # needs pkgbuild_dir (mage)
5    
6     # SMAGE2
7 niro 40 # version: 0.3.6-r10
8 niro 24
9     #01.10.2004
10     # added ccache support
11     # added distcc support
12    
13     ## setup ##
14 niro 40 SMAGEVERSION=0.3.6-r10
15 niro 24 PKGSUFFIX="mpk"
16     SMAGENAME="$1"
17     SMAGESUFFIX="smage2"
18     #SOURCEDIR="/bootstrap/sources"
19     #SMAGESCRIPTSDIR="/bootstrap/smage2-install-scripts"
20     #SMAGE2RSYNC="rsync://192.168.0.2/smage2-scripts"
21     MLIBDIR=/usr/lib/mage
22    
23     source /etc/mage.rc
24    
25     showversion() {
26     echo -en "Magellan Source Install v${SMAGEVERSION} "
27     echo -e "-- Niels Rogalla (niro@magellan-linux.de)"
28     }
29    
30     die() {
31     xtitleclean
32     echo "SMAGE failed: $@"
33     exit 1
34     }
35    
36     xtitle() {
37     if [ ${TERM} == "xterm" ]
38     then
39     echo -ne "\033]0;[sMage: $@]\007"
40     fi
41     return 0
42     }
43    
44     xtitleclean() {
45     if [ ${TERM} == "xterm" ]
46     then
47     echo -ne "\033]0;\007"
48     fi
49     return 0
50     }
51    
52     syncsmage2() {
53     xtitle "Updating smage2-script tree ..."
54     local i
55     for i in ${SMAGE2RSYNC}
56     do
57     rsync \
58     --recursive \
59     --links \
60     --perms \
61     --times \
62     --devices \
63     --timeout=600 \
64     --verbose \
65     --compress \
66     --progress \
67     --stats \
68     --delete \
69     --delete-after \
70     ${i} ${SMAGESCRIPTSDIR}
71    
72     if [ "$?" == "0" ]
73     then
74     break
75     else
76     continue
77     fi
78    
79     done
80    
81     #clean up backup files (foo~)
82     find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'
83    
84     xtitleclean
85     }
86    
87     # dummy function, used if that not exist in smage file
88     src_prepare() {
89     echo "no src_prepare defined"
90     sleep 2
91     return 0
92     }
93    
94     # dummy function, used if that not exist in smage file
95     src_compile() {
96     echo "no src_compile defined"
97     sleep 2
98     return 0
99     }
100    
101     # dummy function, used if that not exist in smage file
102     src_install() {
103     echo "no src_install defined"
104     sleep 2
105     return 0
106     }
107    
108    
109     build_mage_script() {
110     return 0
111     }
112    
113     mconfigure() {
114     if [ -x ./configure ]
115     then
116     ./configure \
117     --prefix=/usr \
118     --host=${CHOST} \
119     --mandir=/usr/share/man \
120     --infodir=/usr/share/info \
121     --datadir=/usr/share \
122     --sysconfdir=/etc \
123     --localstatedir=/var/lib \
124     "$@" || die "mconfigure failed"
125     else
126     echo "configure is not an executable ..."
127     exit 1
128     fi
129     }
130    
131     minstall() {
132     if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then
133     make prefix=${BINDIR}/usr \
134     datadir=${BINDIR}/usr/share \
135     infodir=${BINDIR}/usr/share/info \
136     localstatedir=${BINDIR}/var/lib \
137     mandir=${BINDIR}/usr/share/man \
138     sysconfdir=${BINDIR}/etc \
139     "$@" install || die "minstall failed"
140     else
141     die "no Makefile found"
142     fi
143     }
144    
145     mmake() {
146     make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
147     }
148    
149     munpack() {
150     local SRCFILE
151     local IFTAR
152     local DEST
153    
154     SRCFILE=$1
155    
156     if [ -z "$2" ]
157     then
158     DEST=${BUILDDIR}
159     else
160     DEST=$2
161     fi
162    
163     case "${SRCFILE##*.}" in
164     bz2)
165     IFTAR="$(basename $SRCFILE .bz2)"
166     IFTAR="${IFTAR##*.}"
167     if [ "${IFTAR}" == "tar" ]
168     then
169     tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
170     fi
171     ;;
172     gz)
173     IFTAR="$(basename $SRCFILE .gz)"
174     IFTAR="${IFTAR##*.}"
175     if [ "${IFTAR}" == "tar" ]
176     then
177     tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
178     fi
179     ;;
180     tbz2)
181     tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
182     ;;
183     tgz)
184     tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
185     ;;
186     *)
187     die "munpack failed"
188     ;;
189     esac
190     }
191    
192     mpatch() {
193     local PATCHOPTS
194     local PATCHFILE
195    
196     PATCHOPTS=$1
197     PATCHFILE=$2
198    
199     patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}
200     }
201    
202    
203     minstalldocs() {
204     local docfiles
205    
206     docfiles="$@"
207    
208     if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
209     then
210     install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
211     fi
212    
213     for i in ${docfiles}
214     do
215     cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."
216     install -m 0644 ${SRCDIR}/${i}.gz \
217     ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "coping docs."
218     done
219     }
220    
221     setup_distcc_environment(){
222     if [ -x /usr/bin/distcc ]
223     then
224     echo "Using DistCC for compilation ..."
225     export PATH=/usr/lib/distcc/bin:${PATH} || die "distcc: could not export new $PATH"
226    
227     #export distcc as compiler
228     # export CC="distcc"
229     # export CXX=distcc
230    
231     export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"
232    
233    
234     #ccache + distcc together
235     if [ "${SMAGE_USE_CCACHE}" == "true" ]
236     then
237     if [ -x /usr/bin/ccache ]
238     then
239     echo "Preparing DistCC to work together with CCache ..."
240     #export CCACHE_PREFIX="distcc" || die "distcc: could not set ccach_prefix"
241     # export CC="ccache distcc"
242     # export CXX="ccache distcc"
243     fi
244     fi
245    
246     #creating distcc tempdir
247     install -o distcc -g daemon -d ${DISTCC_DIR}
248     chmod 1777 ${DISTCC_DIR}
249     fi
250     }
251    
252     setup_ccache_environment(){
253     if [ -x /usr/bin/ccache ]
254     then
255     echo "Using CCache for compilation ..."
256     export PATH=/usr/lib/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
257     #unset CC CXX
258     fi
259     }
260    
261     if [ -z "$1" ]
262     then
263     showversion
264     echo
265     echo "No .smage2 file given. Exiting."
266     echo
267     exit 1
268     fi
269    
270     #updating smage2-scripts
271     if [ "$1" == "update" ]
272     then
273     showversion
274     if [ ! -d ${SMAGESCRIPTSDIR} ]
275     then
276     install -d ${SMAGESCRIPTSDIR}
277     fi
278     syncsmage2
279     exit 0
280     fi
281    
282    
283     if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]
284     then
285     die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
286     fi
287    
288     if [ -z "`basename ${SMAGENAME}|grep .${SMAGESUFFIX}`" ]
289     then
290     die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."
291     fi
292    
293     if [ -z "${SOURCEDIR}" ]
294     then
295     die "\$SOURCEDIR not found. Please setup your mage.rc correctly."
296     fi
297    
298     if [ -z "${SMAGESCRIPTSDIR}" ]
299     then
300     die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."
301     fi
302    
303     if [ -z "${SMAGE2RSYNC}" ]
304     then
305     echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."
306     exit 1
307     fi
308    
309     if [ -z "${BINDIR}" ]
310     then
311     die "no BINDIR variable found in /etc/mage.rc"
312     fi
313    
314     if [ -z "${CHOST}" ]
315     then
316     die "no CHOST variable found in /etc/mage.rc"
317     fi
318    
319     if [ -z "${CFLAGS}" ]
320     then
321     die "no CFLAGS variable found in /etc/mage.rc"
322     fi
323    
324     if [ -z "${CXXFLAGS}" ]
325     then
326     die "no CXXFLAGS variable found in /etc/mage.rc"
327     fi
328    
329    
330     source ${SMAGENAME} || die "source failed"
331     PKGNAME="${PNAME}-${PVER}-${CHOST%%-*}-${PBUILD}"
332    
333     xtitle "Compiling ${PKGNAME}"
334     #fixes some issues with these functions
335     export -f src_prepare || die "src_prepare export failed"
336     export -f src_compile || die "src_compile export failed"
337     export -f src_install || die "src_install export failed"
338    
339     #fixes some compile issues
340     export CHOST="${CHOST}" || die "CHOST export failed"
341     export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
342     export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
343     export BINDIR="${BINDIR}" || die "BINDIR export failed"
344     export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
345    
346    
347     #setup distcc
348     #distcc mus be setup *before* ccache, as ccache need to be before distcc in path
349     if [ "${SMAGE_USE_DISTCC}" == "true" ]
350     then
351     setup_distcc_environment
352     fi
353    
354     #setup ccache
355     if [ "${SMAGE_USE_CCACHE}" == "true" ]
356     then
357     setup_ccache_environment
358     fi
359    
360    
361     # small sleep to show our settings
362     sleep 1
363    
364     #debug
365     #echo "CC=${CC}"
366     #echo "CXX=${CXX}"
367     #echo "DISTCC_DIR=${DISTCC_DIR}"
368     #echo "PATH: ${PATH}"
369     #echo "--------------------------------------"
370     #env
371     #echo "--------------------------------------"
372     #read
373     #debug end
374    
375     #cleans up build if a previously one exists
376     if [ -d ${BUILDDIR} ]
377     then
378     rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
379     fi
380     install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
381    
382     #cleans up srcdir if a previously unpacked one exists
383     if [ -d ${SRCDIR} ]
384     then
385     rm -rf ${SRCDIR}
386     fi
387    
388     #cleans up bindir if a previous build exists or creates a new one
389     if [ -d ${BINDIR} ]
390     then
391     rm -rf ${BINDIR}
392     fi
393     install -d ${BINDIR} || die "couldn't create \$BINDIR."
394    
395     #cleans up package temp dir if a previous build exists
396     if [ -d ${BUILDDIR}/${PKGNAME} ]
397     then
398     rm -rf ${BUILDDIR}/${PKGNAME}
399     fi
400    
401     #cleans up timestamp if one exists
402     if [ -f /var/tmp/timestamp ]
403     then
404     mage rmstamp
405     fi
406    
407     src_prepare || die "src_prepare failed"
408     src_compile || die "src_compile failed"
409     src_install || die "src_install failed"
410    
411    
412     #compressing doc, info & man files
413     echo -e "Compressing man-pages ..."
414     if [ -d ${BUILDDIR}/builded/usr/share/man ]
415     then
416     ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man
417     fi
418    
419     echo -e "Compressing info-pages ..."
420     if [ -d ${BUILDDIR}/builded/usr/share/info ]
421     then
422     ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info
423     fi
424    
425     #the new buildpkg command
426     case ${NOPKGBUILD} in
427     true|TRUE|yes|y)
428     echo -e "NOPGKBUILD=true detected; Package will not be build ..."
429     ;;
430     *)
431     ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
432     echo -e "\nPackage ${PKGNAME} successfully builded.\n"
433     ;;
434     esac
435    
436     #for sure
437     unset NOPKGBUILD
438    
439     xtitleclean
440     #echo -e "\nPackage ${PKGNAME} successfully builded.\n"

Properties

Name Value
svn:executable *