Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 192 - (hide annotations) (download) (as text)
Fri Aug 19 03:43:56 2005 UTC (18 years, 8 months ago) by niro
Original Path: trunk/mage/usr/lib/mage/smage2.sh
File MIME type: application/x-sh
File size: 18810 byte(s)
- fixed whitespaces
- do not unset PKGNAME in regen_mage_tree
- renamed helper function to build_mage_srcipt
- added MAGE_TARGETS support for pkgbuild

1 niro 24 #!/bin/bash
2    
3     # compiles/installs .smage2 source install scripts
4     # needs pkgbuild_dir (mage)
5    
6     # SMAGE2
7 niro 192 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.23 2005-08-19 03:43:56 niro Exp $
8 niro 24
9     #01.10.2004
10     # added ccache support
11     # added distcc support
12    
13     ## setup ##
14     PKGSUFFIX="mpk"
15     SMAGENAME="$1"
16     SMAGESUFFIX="smage2"
17     #SOURCEDIR="/bootstrap/sources"
18     #SMAGESCRIPTSDIR="/bootstrap/smage2-install-scripts"
19     #SMAGE2RSYNC="rsync://192.168.0.2/smage2-scripts"
20     MLIBDIR=/usr/lib/mage
21 niro 186 SMAGEVERSION="$( < ${MLIBDIR}/version)"
22 niro 24
23 niro 169 # export default C locale
24     export LC_ALL=C
25    
26 niro 24 source /etc/mage.rc
27    
28     showversion() {
29     echo -en "Magellan Source Install v${SMAGEVERSION} "
30     echo -e "-- Niels Rogalla (niro@magellan-linux.de)"
31     }
32    
33     die() {
34     xtitleclean
35     echo "SMAGE failed: $@"
36     exit 1
37     }
38    
39     xtitle() {
40     if [ ${TERM} == "xterm" ]
41     then
42     echo -ne "\033]0;[sMage: $@]\007"
43     fi
44     return 0
45     }
46    
47     xtitleclean() {
48     if [ ${TERM} == "xterm" ]
49     then
50     echo -ne "\033]0;\007"
51     fi
52     return 0
53     }
54    
55     syncsmage2() {
56     xtitle "Updating smage2-script tree ..."
57     local i
58     for i in ${SMAGE2RSYNC}
59     do
60     rsync \
61     --recursive \
62     --links \
63     --perms \
64     --times \
65     --devices \
66     --timeout=600 \
67     --verbose \
68     --compress \
69     --progress \
70     --stats \
71     --delete \
72     --delete-after \
73     ${i} ${SMAGESCRIPTSDIR}
74    
75     if [ "$?" == "0" ]
76     then
77     break
78     else
79     continue
80     fi
81    
82     done
83    
84     #clean up backup files (foo~)
85     find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'
86    
87     xtitleclean
88     }
89    
90 niro 59 # $1 filename
91     get_db_md5_sum() {
92     local DB_FILE
93     local MD5_FILE
94     local i
95    
96     DB_ENTRY="$(basename $1)"
97     MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} ${SMAGESUFFIX})"
98    
99     i="$(cat ${MD5_FILE}| grep ${DB_ENTRY} | cut -d' ' -f1)"
100    
101     echo "${i}"
102     }
103    
104     download_sources() {
105    
106 niro 61 [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0
107 niro 59
108     local EOA=${#SRC_URI[*]}
109 niro 66 local my_SRC_URI
110     local my_SRC_URI_DEST
111     local my_SRC_URI_MIRROR
112     local my_SOURCEDIR
113 niro 59 local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
114     local FETCHING
115     local i mirror
116    
117    
118     #install SRCDIR/PNAME if not exist
119     [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}
120    
121     # check if FETCHING is needed
122 niro 66 ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )
123 niro 59 if [[ $? == 0 ]]
124     then
125     # md5's ok, not fetching needed
126     FETCHING=false
127     else
128     FETCHING=true
129     fi
130    
131     for ((i=0; i < EOA; i++))
132     do
133 niro 66 # url to file
134     my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)"
135 niro 59
136 niro 66 # subdir in sources dir; the my_SRCI_URI file goes to there
137     my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)"
138    
139     # if my_src_uri_dest is not equal my_src_uri; than an other dir is used
140     if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]]
141     then
142     my_SOURCEDIR="${SOURCEDIR}/${PNAME}/${my_SRC_URI_DEST}"
143     else
144     my_SOURCEDIR="${SOURCEDIR}/${PNAME}"
145     fi
146    
147 niro 59 # if an mirrored file than replace first the mirror uri
148 niro 66 if [ -n "$(echo ${my_SRC_URI} | grep 'mirror://')" ]
149 niro 59 then
150     for mirror in ${MIRRORS}
151     do
152 niro 66 my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")"
153 niro 59
154     #echo "DEBUG: ${MY_SRC_URI}"
155     if [[ ${FETCHING} == true ]]
156     then
157 niro 66 echo "==> fetching ${my_SRC_URI_MIRROR}"
158 niro 59 wget \
159     --passive-ftp \
160     --tries 3 \
161     --continue \
162     --progress bar \
163 niro 66 --directory-prefix="${my_SOURCEDIR}" \
164     "${my_SRC_URI_MIRROR}"
165 niro 59 if [ "$?" == "0" ]
166     then
167     break
168     else
169     continue
170     fi
171     fi
172     done
173     else
174     #echo "DEBUG: ${SRC_URI[${i}]}"
175     if [[ ${FETCHING} == true ]]
176     then
177 niro 66 echo "==> fetching ${my_SRC_URI}"
178 niro 59 wget \
179     --passive-ftp \
180     --tries 3 \
181     --continue \
182     --progress bar \
183 niro 66 --directory-prefix="${my_SOURCEDIR}" \
184     "${my_SRC_URI}"
185 niro 89 # only needed to run through a list of mirrors
186     # if [ "$?" == "0" ]
187     # then
188     # break
189     # else
190     # continue
191     # fi
192 niro 59 fi
193     fi
194 niro 66
195     # unset them to be shure
196     unset my_SRC_URI
197     unset my_SRC_URI_DEST
198     unset my_SRC_URI_MIRROR
199     unset my_SOURCEDIR
200 niro 59 done
201    
202     # recheck md5 sums
203     echo
204     echo ">== Checking MD5 sums:"
205 niro 63 ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} ) || die "md5 failed"
206 niro 59 echo
207    
208     # not needed anymore
209     unset SRC_URI
210     }
211    
212 niro 24 # dummy function, used if that not exist in smage file
213     src_prepare() {
214     echo "no src_prepare defined"
215     sleep 2
216     return 0
217     }
218    
219     # dummy function, used if that not exist in smage file
220     src_compile() {
221     echo "no src_compile defined"
222     sleep 2
223     return 0
224     }
225    
226     # dummy function, used if that not exist in smage file
227     src_install() {
228     echo "no src_install defined"
229     sleep 2
230     return 0
231     }
232    
233     mconfigure() {
234     if [ -x ./configure ]
235     then
236     ./configure \
237     --prefix=/usr \
238     --host=${CHOST} \
239     --mandir=/usr/share/man \
240     --infodir=/usr/share/info \
241     --datadir=/usr/share \
242     --sysconfdir=/etc \
243     --localstatedir=/var/lib \
244     "$@" || die "mconfigure failed"
245     else
246     echo "configure is not an executable ..."
247     exit 1
248     fi
249     }
250    
251     minstall() {
252     if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then
253     make prefix=${BINDIR}/usr \
254     datadir=${BINDIR}/usr/share \
255     infodir=${BINDIR}/usr/share/info \
256     localstatedir=${BINDIR}/var/lib \
257     mandir=${BINDIR}/usr/share/man \
258     sysconfdir=${BINDIR}/etc \
259     "$@" install || die "minstall failed"
260     else
261     die "no Makefile found"
262     fi
263     }
264    
265     mmake() {
266     make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
267     }
268    
269     munpack() {
270     local SRCFILE
271     local IFTAR
272     local DEST
273    
274     SRCFILE=$1
275    
276     if [ -z "$2" ]
277     then
278     DEST=${BUILDDIR}
279     else
280     DEST=$2
281     fi
282    
283     case "${SRCFILE##*.}" in
284     bz2)
285     IFTAR="$(basename $SRCFILE .bz2)"
286     IFTAR="${IFTAR##*.}"
287     if [ "${IFTAR}" == "tar" ]
288     then
289     tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
290     fi
291     ;;
292     gz)
293     IFTAR="$(basename $SRCFILE .gz)"
294     IFTAR="${IFTAR##*.}"
295     if [ "${IFTAR}" == "tar" ]
296     then
297     tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
298     fi
299     ;;
300     tbz2)
301     tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
302     ;;
303     tgz)
304     tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
305     ;;
306     *)
307     die "munpack failed"
308     ;;
309     esac
310     }
311    
312     mpatch() {
313     local PATCHOPTS
314     local PATCHFILE
315    
316     PATCHOPTS=$1
317     PATCHFILE=$2
318    
319     patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}
320     }
321    
322    
323     minstalldocs() {
324     local docfiles
325    
326     docfiles="$@"
327    
328     if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
329     then
330     install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
331     fi
332    
333     for i in ${docfiles}
334     do
335     cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."
336     install -m 0644 ${SRCDIR}/${i}.gz \
337     ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "coping docs."
338     done
339     }
340    
341 niro 79 mstriplibs() {
342     local stripdir="$@"
343    
344     [ -z "${stripdir}" ] && stripdir=${BINDIR}
345     find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
346     }
347    
348     mstripbins() {
349     local stripdir="$@"
350    
351     [ -z "${stripdir}" ] && stripdir=${BINDIR}
352     find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
353     }
354    
355 niro 172 sminclude() {
356     local i
357    
358 niro 183 if [[ -n "$@" ]]
359 niro 172 then
360     for i in $@
361     do
362 niro 175 echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
363 niro 172 source ${SMAGESCRIPTSDIR}/include/${i}.sminc
364     done
365 niro 177 echo
366 niro 172 fi
367     }
368    
369 niro 24 setup_distcc_environment(){
370     if [ -x /usr/bin/distcc ]
371     then
372     echo "Using DistCC for compilation ..."
373     export PATH=/usr/lib/distcc/bin:${PATH} || die "distcc: could not export new $PATH"
374    
375     #export distcc as compiler
376     # export CC="distcc"
377     # export CXX=distcc
378    
379     export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"
380    
381    
382     #ccache + distcc together
383     if [ "${SMAGE_USE_CCACHE}" == "true" ]
384     then
385     if [ -x /usr/bin/ccache ]
386     then
387     echo "Preparing DistCC to work together with CCache ..."
388     #export CCACHE_PREFIX="distcc" || die "distcc: could not set ccach_prefix"
389     # export CC="ccache distcc"
390     # export CXX="ccache distcc"
391     fi
392     fi
393    
394     #creating distcc tempdir
395     install -o distcc -g daemon -d ${DISTCC_DIR}
396     chmod 1777 ${DISTCC_DIR}
397     fi
398     }
399    
400     setup_ccache_environment(){
401     if [ -x /usr/bin/ccache ]
402     then
403     echo "Using CCache for compilation ..."
404     export PATH=/usr/lib/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
405     #unset CC CXX
406     fi
407     }
408    
409 niro 192 # build_mage_script(): helper functions for regen_mage_tree()
410 niro 191 # generates an mage file with given information in smage file
411     # needs at least:
412     # PNAME name of pkg
413     # PVER version
414     # PBUILD revision
415     # PCATEGORIE categorie of the pkg
416     # STATE state of pkg stable|unstable|old
417     # DESCRIPTION va short description (opt)
418     # HOMEPAGE homepage (opt)
419     # DEPEND runtime dependencies (opt)
420     # SDEPEND add. needed deps to build the pkg (opt)
421     # PROVIDE provides a virtual (opt)
422     #
423     # special tags:
424     # PKGTYPE type of pkg
425     # INHERITS which functions get included
426     # SPECIAL_FUNCTIONS special functions wich should also be added
427     # warning: they get killed before the build starts !
428     #
429     # MAGE_TREE_DEST target destination of the generated tree
430     # REGEN_MAGE_TREE set to 'true' to enable this
431 niro 192 build_mage_script()
432 niro 191 {
433     local magefile
434     local dest
435     local suffix
436     local sym
437     local depname
438    
439     # if MAGE_TREE_DEST not set use BUILDDIR
440     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
441    
442     # determinate which suffix this mage file should get, if any
443     suffix="$1"
444    
445     # name of magefile
446     magefile="${PNAME}${suffix}-${PVER}-${PBUILD}.mage"
447    
448     # destination to magefile
449     dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${suffix}/${magefile}"
450    
451     # show what we are doing
452     echo "Generating Mage file:"
453     echo " ${dest}"
454    
455     install -d "$(dirname ${dest})"
456     # now build the mage file
457     > ${dest}
458    
459     # header
460 niro 192 echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.23 2005-08-19 03:43:56 niro Exp $' >> ${dest}
461 niro 191 echo >> ${dest}
462    
463     # pgkname and state
464     echo "PKGNAME=\"${PNAME}${suffix}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest}
465     echo "STATE=\"${STATE}\"" >> ${dest}
466     echo >> ${dest}
467    
468     # description and homepage
469     echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest}
470     echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest}
471     echo >> ${dest}
472    
473     # special tags
474     echo "PKGTYPE=\"${PKGTYPE}\"" >> ${dest}
475     if [ -n "${INHERITS}" ]
476     then
477     echo -n "minclude" >> ${dest}
478     local i
479     for i in ${INHERITS}
480     do
481     echo -n " ${i}" >> ${dest}
482     done
483     echo >> ${dest}
484     fi
485     echo >> ${dest}
486    
487     # deps and provides
488     echo "DEPEND=\"${DEPEND}\"" >> ${dest}
489     echo "SDEPEND=\"${SDEPEND}\"" >> ${dest}
490     echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}
491     echo >> ${dest}
492    
493     # add special functions
494     if [ -n "${SPECIAL_FUNCTIONS}" ]
495     then
496     local i
497     for i in ${SPECIAL_FUNCTIONS}
498     do
499     # add to mage (quotes needed !)
500     typeset -f "${i}" >> ${dest}
501     # unset to be safe (quotes needed !)
502 niro 192 #unset "${i}" <-- later to get every target built
503 niro 191 done
504     fi
505    
506     # pre|post-install|removes
507     typeset -f preinstall >> ${dest}
508     echo >> ${dest}
509     typeset -f postinstall >> ${dest}
510     echo >> ${dest}
511     typeset -f preremove >> ${dest}
512     echo >> ${dest}
513     typeset -f postremove >> ${dest}
514     echo >> ${dest}
515     }
516    
517     regen_mage_tree()
518     {
519     local i
520    
521     # build them only if requested
522     if [[ ${REGEN_MAGE_TREE} = true ]]
523     then
524     # build for each target an mage file
525     for i in ${MAGE_TARGETS}
526     do
527     echo
528 niro 192 build_mage_script "${i}"
529 niro 191 echo
530     done
531     fi
532    
533     # now unset all uneeded vars to be safe
534 niro 192 # unset PKGNAME <-- don't do that; smage needs this var
535     # unset to be safe (quotes needed !)
536     for i in ${SPECIAL_FUNCTIONS}
537     do
538     unset "${i}"
539     done
540     unset SPECIAL_FUNCTIONS
541 niro 191 unset STATE
542     unset DESCRIPTION
543     unset HOMEPAGE
544     unset PKGTYPE
545     unset INHERITS
546     unset DEPEND
547     unset SDEPEND
548     unset PROVIDE
549     unset preinstall
550     unset postinstall
551     unset preremove
552     unset postremove
553     }
554    
555 niro 59 # print out our version
556     showversion
557     echo
558    
559 niro 24 if [ -z "$1" ]
560     then
561     echo "No .smage2 file given. Exiting."
562     echo
563     exit 1
564     fi
565    
566 niro 192 # updating smage2-scripts
567 niro 24 if [ "$1" == "update" ]
568     then
569 niro 59 if [ ! -d ${SOURCEDIR} ]
570     then
571     install -d ${SOURCEDIR}
572     fi
573     syncsmage2
574     exit 0
575     fi
576    
577 niro 192 # creates md5sums for smages to given dir
578 niro 59 if [ "$1" == "calcmd5" ]
579     then
580     if [ $# -ge 3 ]
581     then
582     SMAGENAME="$2"
583     MD5DIR="$3"
584     source ${SMAGENAME} || die "download source failed"
585    
586 niro 66 # overridable sourcedir; must be declared after source of the smage2
587     CALC_SOURCEDIR="${CALC_SOURCEDIR:="${SOURCEDIR}/${PNAME}"}"
588    
589 niro 59 [ -z "${SRC_URI}" ] && die "Nothing declared to calculate."
590    
591     # end of array
592     EOA=${#SRC_URI[*]}
593    
594     [ ! -d ${MD5DIR} ] && install -d ${MD5DIR}
595    
596     # clear md5sum file
597     MY_MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
598     echo -n > ${MY_MD5_FILE}
599    
600     for ((i=0; i < EOA; i++))
601     do
602 niro 66 # url to file
603     my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)"
604    
605     # subdir in sources dir; the my_SRCI_URI file goes to there
606     my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)"
607    
608     # if my_src_uri_dest is not equal my_src_uri; than an other dir is used
609     if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]]
610     then
611     MY_SRC_FILE="${my_SRC_URI_DEST}/$(basename ${SRC_URI[${i}]})"
612     else
613     MY_SRC_FILE="$(basename ${SRC_URI[${i}]})"
614     fi
615    
616 niro 59 if [ -e "${CALC_SOURCEDIR}/${MY_SRC_FILE}" ]
617     then
618     echo "calculating $(basename ${MY_SRC_FILE}) ..."
619     ( cd ${CALC_SOURCEDIR}; md5sum "${MY_SRC_FILE}" ) >> ${MY_MD5_FILE}
620     else
621     echo "WARNING: File '$(basename ${MY_SRC_FILE}) not found in ${CALC_SOURCEDIR}."
622     fi
623 niro 66
624     # unset them to be shure
625     unset my_SRC_URI
626     unset my_SRC_URI_DEST
627     unset my_SRC_URI_MIRROR
628     unset my_SOURCEDIR
629 niro 59 done
630    
631     echo
632     echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
633     echo
634     else
635     echo "Usage: Calculating MD5 Sums:"
636     echo " $(basename $0) calcmd5 /path/to/SMAGENAME /path/to/MD5DIR"
637     echo
638     echo
639     echo "Export the CALC_SOURCEDIR variable to override current SOURCEDIRs."
640     echo
641     exit 1
642     fi
643    
644     exit 0
645     fi
646    
647 niro 192 # download sources
648 niro 59 if [ "$1" == "download" -a -n "$2" ]
649     then
650 niro 24 if [ ! -d ${SMAGESCRIPTSDIR} ]
651     then
652     install -d ${SMAGESCRIPTSDIR}
653     fi
654 niro 59
655     # get smage
656     SMAGENAME="$2"
657     MD5DIR="$(dirname ${SMAGENAME})/md5"
658     source ${SMAGENAME} || die "download source failed"
659    
660     download_sources
661 niro 24 exit 0
662     fi
663    
664     if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]
665     then
666     die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
667     fi
668    
669     if [ -z "`basename ${SMAGENAME}|grep .${SMAGESUFFIX}`" ]
670     then
671     die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."
672     fi
673    
674     if [ -z "${SOURCEDIR}" ]
675     then
676     die "\$SOURCEDIR not found. Please setup your mage.rc correctly."
677     fi
678    
679     if [ -z "${SMAGESCRIPTSDIR}" ]
680     then
681     die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."
682     fi
683    
684     if [ -z "${SMAGE2RSYNC}" ]
685     then
686     echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."
687     exit 1
688     fi
689    
690     if [ -z "${BINDIR}" ]
691     then
692     die "no BINDIR variable found in /etc/mage.rc"
693     fi
694    
695     if [ -z "${CHOST}" ]
696     then
697     die "no CHOST variable found in /etc/mage.rc"
698     fi
699    
700     if [ -z "${CFLAGS}" ]
701     then
702     die "no CFLAGS variable found in /etc/mage.rc"
703     fi
704    
705     if [ -z "${CXXFLAGS}" ]
706     then
707     die "no CXXFLAGS variable found in /etc/mage.rc"
708     fi
709    
710    
711     source ${SMAGENAME} || die "source failed"
712     PKGNAME="${PNAME}-${PVER}-${CHOST%%-*}-${PBUILD}"
713 niro 59 MD5DIR="$(dirname ${SMAGENAME})/md5"
714 niro 24
715     xtitle "Compiling ${PKGNAME}"
716 niro 59 echo "Compiling ${PKGNAME}"
717    
718 niro 191 # auto regen mage tree if requested
719     regen_mage_tree
720    
721 niro 192 # download sources
722 niro 59 download_sources
723    
724 niro 192 # fixes some issues with these functions
725 niro 24 export -f src_prepare || die "src_prepare export failed"
726     export -f src_compile || die "src_compile export failed"
727     export -f src_install || die "src_install export failed"
728    
729 niro 192 # fixes some compile issues
730 niro 24 export CHOST="${CHOST}" || die "CHOST export failed"
731     export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
732     export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
733     export BINDIR="${BINDIR}" || die "BINDIR export failed"
734     export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
735    
736    
737 niro 192 # setup distcc
738     # distcc mus be setup *before* ccache, as ccache need to be before distcc in path
739 niro 24 if [ "${SMAGE_USE_DISTCC}" == "true" ]
740     then
741     setup_distcc_environment
742     fi
743    
744 niro 192 # setup ccache
745 niro 24 if [ "${SMAGE_USE_CCACHE}" == "true" ]
746     then
747     setup_ccache_environment
748     fi
749    
750    
751     # small sleep to show our settings
752     sleep 1
753    
754     #debug
755     #echo "CC=${CC}"
756     #echo "CXX=${CXX}"
757     #echo "DISTCC_DIR=${DISTCC_DIR}"
758     #echo "PATH: ${PATH}"
759     #echo "--------------------------------------"
760     #env
761     #echo "--------------------------------------"
762     #read
763     #debug end
764    
765 niro 192 # cleans up build if a previously one exists
766 niro 24 if [ -d ${BUILDDIR} ]
767     then
768     rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
769     fi
770     install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
771    
772 niro 192 # cleans up srcdir if a previously unpacked one exists
773 niro 24 if [ -d ${SRCDIR} ]
774     then
775     rm -rf ${SRCDIR}
776     fi
777    
778 niro 192 # cleans up bindir if a previous build exists or creates a new one
779 niro 24 if [ -d ${BINDIR} ]
780     then
781     rm -rf ${BINDIR}
782     fi
783     install -d ${BINDIR} || die "couldn't create \$BINDIR."
784    
785 niro 192 # cleans up package temp dir if a previous build exists
786 niro 24 if [ -d ${BUILDDIR}/${PKGNAME} ]
787     then
788     rm -rf ${BUILDDIR}/${PKGNAME}
789     fi
790    
791 niro 192 # cleans up timestamp if one exists
792 niro 24 if [ -f /var/tmp/timestamp ]
793     then
794     mage rmstamp
795     fi
796    
797     src_prepare || die "src_prepare failed"
798     src_compile || die "src_compile failed"
799     src_install || die "src_install failed"
800    
801    
802 niro 192 # compressing doc, info & man files
803 niro 24 echo -e "Compressing man-pages ..."
804     if [ -d ${BUILDDIR}/builded/usr/share/man ]
805     then
806     ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man
807     fi
808    
809     echo -e "Compressing info-pages ..."
810     if [ -d ${BUILDDIR}/builded/usr/share/info ]
811     then
812     ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info
813     fi
814    
815 niro 79 # stripping all bins and libs
816     case ${NOSTRIP} in
817     true|TRUE|yes|y)
818     echo -e "NOSTRIP=true detected; Package will not be stripped ..."
819     ;;
820     *)
821     echo -e "Stripping binaries ..."
822     mstripbins ${BINDIR}
823     echo -e "Stripping libraries ..."
824     mstriplibs ${BINDIR}
825     ;;
826     esac
827    
828 niro 192 # the new buildpkg command
829 niro 24 case ${NOPKGBUILD} in
830     true|TRUE|yes|y)
831     echo -e "NOPGKBUILD=true detected; Package will not be build ..."
832     ;;
833 niro 192 *)
834     # build serveral targets
835     if [ -n "${MAGE_TARGETS}" ]
836     then
837     for target in ${MAGE_TARGETS}
838     do
839     # check if an special target_pkgbuild exists
840     if typeset -f ${target}_pkgbuild > /dev/null
841     then
842     # run it
843     ${target}_pkgbuild
844     fi
845     # now create the target package
846     ${MLIBDIR}/pkgbuild_dir.sh \
847     "${PNAME}-${target}-${PVER}-${CHOST%%-*}-${PBUILD}" \
848     ${BINDIR} || die "target: ${target} package-build failed"
849     echo -e "\nPackage ${PNAME}-${target}-${PVER}-${CHOST%%-*}-${PBUILD} successfully builded.\n"
850     done
851     else
852     ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
853     echo -e "\nPackage ${PKGNAME} successfully builded.\n"
854     fi
855 niro 24 ;;
856     esac
857    
858 niro 192 # for sure
859 niro 24 unset NOPKGBUILD
860 niro 85 unset NOSTRIP
861 niro 24
862     xtitleclean
863     #echo -e "\nPackage ${PKGNAME} successfully builded.\n"

Properties

Name Value
svn:executable *