Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 197 - (hide annotations) (download) (as text)
Sat Aug 20 15:58:12 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: 20416 byte(s)
includes comes after all vars not, to provide the possibility to define special vars which may needed by the include

1 niro 24 #!/bin/bash
2    
3     # compiles/installs .smage2 source install scripts
4     # needs pkgbuild_dir (mage)
5    
6     # SMAGE2
7 niro 197 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.28 2005-08-20 15:58:12 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 193
410     # fixes given dependencies to match a MAGE_TARGET
411 niro 195 # fix_mage_deps target s/depend
412 niro 193 fix_mage_deps() {
413     local target="$1"
414     local depend="$2"
415     local NDEPEND
416     local sym dep cat pver pname
417    
418     # deps and provides are special
419     # they must be fixed to match the target
420    
421     # run this only if target and depend is not empty
422     if [ -n "${target}" ] && [ -n "${depend}" ]
423     then
424     # fix DEPEND
425     while read sym dep
426     do
427     cat="$(dirname ${dep})"
428     # abort on virtual
429     [[ ${cat} = virtual ]] && continue
430    
431     # fix pver to target-pver
432     # to get pname-target-pver
433    
434     # doing it backwards !
435     pver="${dep##*-}"
436     pname=$(basename ${dep/-${pver}/})
437    
438     # do not add empty lines
439     if [ -z "${NDEPEND}" ]
440     then
441 niro 195 NDEPEND="${sym} ${cat}/${pname}-${target}-${pver}"
442 niro 193 else
443     NDEPEND="${NDEPEND}
444 niro 195 ${sym} ${cat}/${pname}-${target}-${pver}"
445 niro 193 fi
446    
447     unset cat pname pver
448     done << EOF
449     ${depend}
450     EOF
451     # set NDEPEND to DEPEND
452     depend="${NDEPEND}"
453     fi
454    
455     echo "${depend}"
456     }
457    
458 niro 192 # build_mage_script(): helper functions for regen_mage_tree()
459 niro 191 # generates an mage file with given information in smage file
460     # needs at least:
461     # PNAME name of pkg
462     # PVER version
463     # PBUILD revision
464     # PCATEGORIE categorie of the pkg
465     # STATE state of pkg stable|unstable|old
466     # DESCRIPTION va short description (opt)
467     # HOMEPAGE homepage (opt)
468     # DEPEND runtime dependencies (opt)
469     # SDEPEND add. needed deps to build the pkg (opt)
470     # PROVIDE provides a virtual (opt)
471     #
472     # special tags:
473     # PKGTYPE type of pkg
474     # INHERITS which functions get included
475     # SPECIAL_FUNCTIONS special functions wich should also be added
476     # warning: they get killed before the build starts !
477     #
478     # MAGE_TREE_DEST target destination of the generated tree
479     # REGEN_MAGE_TREE set to 'true' to enable this
480 niro 193 #
481 niro 195 # gets called with build_mage_script target
482 niro 192 build_mage_script()
483 niro 191 {
484     local magefile
485     local dest
486 niro 193 local target
487 niro 191 local sym
488     local depname
489    
490     # if MAGE_TREE_DEST not set use BUILDDIR
491     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
492    
493     # determinate which suffix this mage file should get, if any
494 niro 195 [ -n "$1" ] && target="-$1"
495 niro 191
496     # name of magefile
497 niro 193 magefile="${PNAME}${target}-${PVER}-${PBUILD}.mage"
498 niro 191
499     # destination to magefile
500 niro 193 dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${target}/${magefile}"
501 niro 191
502     # show what we are doing
503     echo "Generating Mage file:"
504     echo " ${dest}"
505    
506     install -d "$(dirname ${dest})"
507     # now build the mage file
508     > ${dest}
509    
510     # header
511 niro 197 echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.28 2005-08-20 15:58:12 niro Exp $' >> ${dest}
512 niro 191 echo >> ${dest}
513    
514     # pgkname and state
515 niro 193 echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest}
516 niro 191 echo "STATE=\"${STATE}\"" >> ${dest}
517     echo >> ${dest}
518    
519     # description and homepage
520     echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest}
521     echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest}
522     echo >> ${dest}
523    
524 niro 196 # special tags and vars
525 niro 191 echo "PKGTYPE=\"${PKGTYPE}\"" >> ${dest}
526 niro 197 # add special vars
527     if [ -n "${SPECIAL_VARS}" ]
528 niro 191 then
529     local i
530 niro 197 for i in ${SPECIAL_VARS}
531 niro 191 do
532 niro 197 # being tricky here :)
533     echo "${i}=\"$(eval echo \$${i})\"" >> ${dest}
534 niro 191 done
535     echo >> ${dest}
536     fi
537 niro 197 # add at least all includes
538     if [ -n "${INHERITS}" ]
539 niro 196 then
540 niro 197 echo -n "minclude" >> ${dest}
541 niro 196 local i
542 niro 197 for i in ${INHERITS}
543 niro 196 do
544 niro 197 echo -n " ${i}" >> ${dest}
545 niro 196 done
546     echo >> ${dest}
547     fi
548 niro 197 echo >> ${dest}
549 niro 196
550 niro 191 # deps and provides
551 niro 193 echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}
552 niro 196 echo >> ${dest}
553 niro 193 echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest}
554 niro 196 echo >> ${dest}
555 niro 191 echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}
556     echo >> ${dest}
557    
558     # add special functions
559     if [ -n "${SPECIAL_FUNCTIONS}" ]
560     then
561     local i
562     for i in ${SPECIAL_FUNCTIONS}
563     do
564     # add to mage (quotes needed !)
565     typeset -f "${i}" >> ${dest}
566     # unset to be safe (quotes needed !)
567 niro 192 #unset "${i}" <-- later to get every target built
568 niro 191 done
569 niro 196 echo >> ${dest}
570 niro 191 fi
571    
572     # pre|post-install|removes
573     typeset -f preinstall >> ${dest}
574     echo >> ${dest}
575     typeset -f postinstall >> ${dest}
576     echo >> ${dest}
577     typeset -f preremove >> ${dest}
578     echo >> ${dest}
579     typeset -f postremove >> ${dest}
580     echo >> ${dest}
581     }
582    
583     regen_mage_tree()
584     {
585     local i
586    
587     # build them only if requested
588     if [[ ${REGEN_MAGE_TREE} = true ]]
589     then
590 niro 195 # run it without targets
591     if [ -z "${MAGE_TARGETS}" ]
592     then
593 niro 191 echo
594 niro 195 build_mage_script
595 niro 191 echo
596 niro 195 else
597    
598     # build for each target an mage file
599     # run it with several targets
600     for i in ${MAGE_TARGETS}
601     do
602     echo
603     build_mage_script "${i}"
604     echo
605     done
606     fi
607 niro 191 fi
608    
609     # now unset all uneeded vars to be safe
610 niro 192 # unset PKGNAME <-- don't do that; smage needs this var
611     # unset to be safe (quotes needed !)
612     for i in ${SPECIAL_FUNCTIONS}
613     do
614     unset "${i}"
615     done
616     unset SPECIAL_FUNCTIONS
617 niro 194 for i in ${SPECIAL_VARS}
618     do
619     unset "${i}"
620     done
621     unset SPECIAL_VARS
622 niro 191 unset STATE
623     unset DESCRIPTION
624     unset HOMEPAGE
625     unset PKGTYPE
626     unset INHERITS
627     unset DEPEND
628     unset SDEPEND
629     unset PROVIDE
630     unset preinstall
631     unset postinstall
632     unset preremove
633     unset postremove
634     }
635    
636 niro 59 # print out our version
637     showversion
638     echo
639    
640 niro 24 if [ -z "$1" ]
641     then
642     echo "No .smage2 file given. Exiting."
643     echo
644     exit 1
645     fi
646    
647 niro 192 # updating smage2-scripts
648 niro 24 if [ "$1" == "update" ]
649     then
650 niro 59 if [ ! -d ${SOURCEDIR} ]
651     then
652     install -d ${SOURCEDIR}
653     fi
654     syncsmage2
655     exit 0
656     fi
657    
658 niro 192 # creates md5sums for smages to given dir
659 niro 59 if [ "$1" == "calcmd5" ]
660     then
661     if [ $# -ge 3 ]
662     then
663     SMAGENAME="$2"
664     MD5DIR="$3"
665     source ${SMAGENAME} || die "download source failed"
666    
667 niro 66 # overridable sourcedir; must be declared after source of the smage2
668     CALC_SOURCEDIR="${CALC_SOURCEDIR:="${SOURCEDIR}/${PNAME}"}"
669    
670 niro 59 [ -z "${SRC_URI}" ] && die "Nothing declared to calculate."
671    
672     # end of array
673     EOA=${#SRC_URI[*]}
674    
675     [ ! -d ${MD5DIR} ] && install -d ${MD5DIR}
676    
677     # clear md5sum file
678     MY_MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
679     echo -n > ${MY_MD5_FILE}
680    
681     for ((i=0; i < EOA; i++))
682     do
683 niro 66 # url to file
684     my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)"
685    
686     # subdir in sources dir; the my_SRCI_URI file goes to there
687     my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)"
688    
689     # if my_src_uri_dest is not equal my_src_uri; than an other dir is used
690     if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]]
691     then
692     MY_SRC_FILE="${my_SRC_URI_DEST}/$(basename ${SRC_URI[${i}]})"
693     else
694     MY_SRC_FILE="$(basename ${SRC_URI[${i}]})"
695     fi
696    
697 niro 59 if [ -e "${CALC_SOURCEDIR}/${MY_SRC_FILE}" ]
698     then
699     echo "calculating $(basename ${MY_SRC_FILE}) ..."
700     ( cd ${CALC_SOURCEDIR}; md5sum "${MY_SRC_FILE}" ) >> ${MY_MD5_FILE}
701     else
702     echo "WARNING: File '$(basename ${MY_SRC_FILE}) not found in ${CALC_SOURCEDIR}."
703     fi
704 niro 66
705     # unset them to be shure
706     unset my_SRC_URI
707     unset my_SRC_URI_DEST
708     unset my_SRC_URI_MIRROR
709     unset my_SOURCEDIR
710 niro 59 done
711    
712     echo
713     echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
714     echo
715     else
716     echo "Usage: Calculating MD5 Sums:"
717     echo " $(basename $0) calcmd5 /path/to/SMAGENAME /path/to/MD5DIR"
718     echo
719     echo
720     echo "Export the CALC_SOURCEDIR variable to override current SOURCEDIRs."
721     echo
722     exit 1
723     fi
724    
725     exit 0
726     fi
727    
728 niro 192 # download sources
729 niro 59 if [ "$1" == "download" -a -n "$2" ]
730     then
731 niro 24 if [ ! -d ${SMAGESCRIPTSDIR} ]
732     then
733     install -d ${SMAGESCRIPTSDIR}
734     fi
735 niro 59
736     # get smage
737     SMAGENAME="$2"
738     MD5DIR="$(dirname ${SMAGENAME})/md5"
739     source ${SMAGENAME} || die "download source failed"
740    
741     download_sources
742 niro 24 exit 0
743     fi
744    
745     if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]
746     then
747     die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
748     fi
749    
750     if [ -z "`basename ${SMAGENAME}|grep .${SMAGESUFFIX}`" ]
751     then
752     die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."
753     fi
754    
755     if [ -z "${SOURCEDIR}" ]
756     then
757     die "\$SOURCEDIR not found. Please setup your mage.rc correctly."
758     fi
759    
760     if [ -z "${SMAGESCRIPTSDIR}" ]
761     then
762     die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."
763     fi
764    
765     if [ -z "${SMAGE2RSYNC}" ]
766     then
767     echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."
768     exit 1
769     fi
770    
771     if [ -z "${BINDIR}" ]
772     then
773     die "no BINDIR variable found in /etc/mage.rc"
774     fi
775    
776     if [ -z "${CHOST}" ]
777     then
778     die "no CHOST variable found in /etc/mage.rc"
779     fi
780    
781     if [ -z "${CFLAGS}" ]
782     then
783     die "no CFLAGS variable found in /etc/mage.rc"
784     fi
785    
786     if [ -z "${CXXFLAGS}" ]
787     then
788     die "no CXXFLAGS variable found in /etc/mage.rc"
789     fi
790    
791    
792     source ${SMAGENAME} || die "source failed"
793     PKGNAME="${PNAME}-${PVER}-${CHOST%%-*}-${PBUILD}"
794 niro 59 MD5DIR="$(dirname ${SMAGENAME})/md5"
795 niro 24
796     xtitle "Compiling ${PKGNAME}"
797 niro 59 echo "Compiling ${PKGNAME}"
798    
799 niro 191 # auto regen mage tree if requested
800     regen_mage_tree
801    
802 niro 192 # download sources
803 niro 59 download_sources
804    
805 niro 192 # fixes some issues with these functions
806 niro 24 export -f src_prepare || die "src_prepare export failed"
807     export -f src_compile || die "src_compile export failed"
808     export -f src_install || die "src_install export failed"
809    
810 niro 192 # fixes some compile issues
811 niro 24 export CHOST="${CHOST}" || die "CHOST export failed"
812     export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
813     export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
814     export BINDIR="${BINDIR}" || die "BINDIR export failed"
815     export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
816    
817    
818 niro 192 # setup distcc
819     # distcc mus be setup *before* ccache, as ccache need to be before distcc in path
820 niro 24 if [ "${SMAGE_USE_DISTCC}" == "true" ]
821     then
822     setup_distcc_environment
823     fi
824    
825 niro 192 # setup ccache
826 niro 24 if [ "${SMAGE_USE_CCACHE}" == "true" ]
827     then
828     setup_ccache_environment
829     fi
830    
831    
832     # small sleep to show our settings
833     sleep 1
834    
835     #debug
836     #echo "CC=${CC}"
837     #echo "CXX=${CXX}"
838     #echo "DISTCC_DIR=${DISTCC_DIR}"
839     #echo "PATH: ${PATH}"
840     #echo "--------------------------------------"
841     #env
842     #echo "--------------------------------------"
843     #read
844     #debug end
845    
846 niro 192 # cleans up build if a previously one exists
847 niro 24 if [ -d ${BUILDDIR} ]
848     then
849     rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
850     fi
851     install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
852    
853 niro 192 # cleans up srcdir if a previously unpacked one exists
854 niro 24 if [ -d ${SRCDIR} ]
855     then
856     rm -rf ${SRCDIR}
857     fi
858    
859 niro 192 # cleans up bindir if a previous build exists or creates a new one
860 niro 24 if [ -d ${BINDIR} ]
861     then
862     rm -rf ${BINDIR}
863     fi
864     install -d ${BINDIR} || die "couldn't create \$BINDIR."
865    
866 niro 192 # cleans up package temp dir if a previous build exists
867 niro 24 if [ -d ${BUILDDIR}/${PKGNAME} ]
868     then
869     rm -rf ${BUILDDIR}/${PKGNAME}
870     fi
871    
872 niro 192 # cleans up timestamp if one exists
873 niro 24 if [ -f /var/tmp/timestamp ]
874     then
875     mage rmstamp
876     fi
877    
878     src_prepare || die "src_prepare failed"
879     src_compile || die "src_compile failed"
880     src_install || die "src_install failed"
881    
882    
883 niro 192 # compressing doc, info & man files
884 niro 24 echo -e "Compressing man-pages ..."
885     if [ -d ${BUILDDIR}/builded/usr/share/man ]
886     then
887     ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man
888     fi
889    
890     echo -e "Compressing info-pages ..."
891     if [ -d ${BUILDDIR}/builded/usr/share/info ]
892     then
893     ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info
894     fi
895    
896 niro 79 # stripping all bins and libs
897     case ${NOSTRIP} in
898     true|TRUE|yes|y)
899     echo -e "NOSTRIP=true detected; Package will not be stripped ..."
900     ;;
901     *)
902     echo -e "Stripping binaries ..."
903     mstripbins ${BINDIR}
904     echo -e "Stripping libraries ..."
905     mstriplibs ${BINDIR}
906     ;;
907     esac
908    
909 niro 192 # the new buildpkg command
910 niro 24 case ${NOPKGBUILD} in
911     true|TRUE|yes|y)
912     echo -e "NOPGKBUILD=true detected; Package will not be build ..."
913     ;;
914 niro 192 *)
915     # build serveral targets
916     if [ -n "${MAGE_TARGETS}" ]
917     then
918     for target in ${MAGE_TARGETS}
919     do
920     # check if an special target_pkgbuild exists
921     if typeset -f ${target}_pkgbuild > /dev/null
922     then
923     # run it
924     ${target}_pkgbuild
925     fi
926     # now create the target package
927     ${MLIBDIR}/pkgbuild_dir.sh \
928     "${PNAME}-${target}-${PVER}-${CHOST%%-*}-${PBUILD}" \
929     ${BINDIR} || die "target: ${target} package-build failed"
930     echo -e "\nPackage ${PNAME}-${target}-${PVER}-${CHOST%%-*}-${PBUILD} successfully builded.\n"
931     done
932     else
933     ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
934     echo -e "\nPackage ${PKGNAME} successfully builded.\n"
935     fi
936 niro 24 ;;
937     esac
938    
939 niro 192 # for sure
940 niro 24 unset NOPKGBUILD
941 niro 85 unset NOSTRIP
942 niro 24
943     xtitleclean
944     #echo -e "\nPackage ${PKGNAME} successfully builded.\n"

Properties

Name Value
svn:executable *