Magellan Linux

Annotation of /trunk/mage/usr/lib/mage/smage2.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1621 - (hide annotations) (download) (as text)
Tue Jan 10 15:48:33 2012 UTC (12 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 44939 byte(s)
-introduce .stamps dir for build time stamps and remove this dir on new builds if it exists
1 niro 24 #!/bin/bash
2 niro 1571 # $Id$
3 niro 24
4     # compiles/installs .smage2 source install scripts
5     # needs pkgbuild_dir (mage)
6    
7 niro 1571 # TODO: record dynlib, gz | xz database
8 niro 24
9    
10 niro 419 # set default user mage.rc
11     : ${MAGERC="/etc/mage.rc"}
12    
13 niro 169 # export default C locale
14     export LC_ALL=C
15    
16 niro 439 source /etc/mage.rc.global
17 niro 419 source ${MAGERC}
18 niro 1273 source ${MLIBDIR}/mage4.functions.sh
19 niro 24
20 niro 1589 ## setup ##
21     SMAGENAME="$1"
22     SMAGEVERSION="$(< ${MLIBDIR}/version)"
23    
24 niro 347 # set PKGDIR and BUILDDIR and BINDIR to MROOT
25     if [[ -n ${MROOT} ]]
26     then
27     export PKGDIR=${MROOT}/${PKGDIR}
28     export BUILDDIR=${MROOT}/${BUILDDIR}
29     export BINDIR=${MROOT}/${BINDIR}
30     fi
31    
32 niro 1346 # sources the smage file and uses state from distribution file if exist
33     # may helpful for repository support later on
34     smagesource()
35     {
36     local file="$1"
37     local mystate
38     local mycodename
39    
40     source ${file}
41    
42     [[ -n ${STATE} ]] && mystate="${STATE}"
43 niro 1349
44     # do not overide if local state was broken or disabled!
45     case ${STATE} in
46     broken) return ;;
47     disabled) return ;;
48     esac
49    
50 niro 1346 if [ -f ${SMAGESCRIPTSDIR}/distribution ]
51     then
52     source ${SMAGESCRIPTSDIR}/distribution
53     [[ -n ${STATE} ]] && mystate="${STATE}"
54     fi
55     # now switch state and export it
56     STATE="${mystate}"
57     }
58    
59 niro 306 showversion()
60     {
61 niro 24 echo -en "Magellan Source Install v${SMAGEVERSION} "
62     echo -e "-- Niels Rogalla (niro@magellan-linux.de)"
63     }
64    
65 niro 306 die()
66     {
67 niro 24 xtitleclean
68 niro 413 echo -e ${COLRED}"Exited ${BASH_SOURCE} at line no ${BASH_LINENO}."${COLDEFAULT}
69 niro 24 echo "SMAGE failed: $@"
70     exit 1
71     }
72    
73 niro 941 die_pipestatus()
74     {
75 niro 943 # the status change if we do any parameter declarations!!
76     # dont do this anymore, keep this in mind!
77     #
78     # local pos="$1"
79     # local comment="$2"
80     #
81     # [ ${PIPESTATUS[${pos}]} -ne 0 ] && die "${comment}"
82     #
83     [ ${PIPESTATUS[$1]} -ne 0 ] && die "$2"
84 niro 941 }
85    
86 niro 306 xtitle()
87     {
88     if [[ ${TERM} = xterm ]]
89 niro 24 then
90     echo -ne "\033]0;[sMage: $@]\007"
91     fi
92     return 0
93     }
94    
95 niro 306 xtitleclean()
96     {
97     if [[ ${TERM} = xterm ]]
98 niro 24 then
99     echo -ne "\033]0;\007"
100     fi
101     return 0
102     }
103    
104 niro 306 syncsmage2()
105     {
106 niro 24 xtitle "Updating smage2-script tree ..."
107     local i
108     for i in ${SMAGE2RSYNC}
109     do
110 niro 386 rsync ${RSYNC_FETCH_OPTIONS} ${i} ${SMAGESCRIPTSDIR}
111 niro 306 if [[ $? = 0 ]]
112 niro 24 then
113     break
114     else
115     continue
116     fi
117     done
118 niro 306
119     # clean up backup files (foo~)
120 niro 24 find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'
121 niro 306
122 niro 24 xtitleclean
123     }
124    
125 niro 59 # $1 filename
126 niro 306 get_db_md5_sum()
127     {
128 niro 59 local DB_FILE
129     local MD5_FILE
130     local i
131    
132     DB_ENTRY="$(basename $1)"
133     MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} ${SMAGESUFFIX})"
134    
135     i="$(cat ${MD5_FILE}| grep ${DB_ENTRY} | cut -d' ' -f1)"
136    
137     echo "${i}"
138     }
139    
140 niro 306 download_sources()
141     {
142 niro 61 [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0
143 niro 59
144 niro 1580 local count=${#SRC_URI[*]}
145     local uri
146     local subdir
147     local outputdir
148     local db_md5_file="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
149     local fetching
150     local i
151 niro 59
152     # check if FETCHING is needed
153 niro 1580 if mchecksum --rundir "${SOURCEDIR}/${PNAME}" --file "${db_md5_file}" --method md5
154 niro 59 then
155 niro 439 # md5's ok, no fetching needed
156 niro 1580 fetching=false
157 niro 59 else
158 niro 1580 fetching=true
159 niro 59 fi
160 niro 306
161 niro 1580 if [[ ${fetching} = true ]]
162     then
163     for ((i=0; i < count; i++))
164     do
165     # url to file
166     uri="${SRC_URI[${i}]%%' '*}"
167 niro 59
168 niro 1580 # subdir in sources dir; the my_SRCI_URI file goes to there
169     subdir="${SRC_URI[${i}]##*' '}"
170 niro 66
171 niro 1580 # if $subdir is not equal with $uri then an other dir is used
172     if [[ ${uri} != ${subdir} ]]
173 niro 59 then
174 niro 1580 outputdir="${SOURCEDIR}/${PNAME}/${subdir}"
175     else
176     outputdir="${SOURCEDIR}/${PNAME}"
177 niro 59 fi
178 niro 306
179 niro 1580 echo -e "${COLBLUE}==>${COLGREEN} fetching ${uri}${COLDEFAULT}"
180 niro 1600 # do not die here, mchecksum catches download errors
181     mdownload --uri "${uri}" --dir "${outputdir}"
182 niro 59
183 niro 1580 # unset them to be sure
184     unset uri
185     unset subdir
186     unset outputdir
187     done
188 niro 59
189 niro 1580 # recheck md5 sums after download
190     echo
191     echo -e "${COLBLUE}===${COLGREEN} Checking MD5 sums:${COLDEFAULT}"
192     mchecksum --rundir "${SOURCEDIR}/${PNAME}" --file "${db_md5_file}" --method md5 || die "md5 failed"
193     echo
194     else
195     echo -e "${COLBLUE}===${COLGREEN} All sources already fetched, nothing to do${COLDEFAULT}"
196     fi
197    
198 niro 59 # not needed anymore
199     unset SRC_URI
200     }
201    
202 niro 1573 # dummy function, used if that does not exist in smage file
203 niro 306 src_prepare()
204     {
205 niro 1592 echo "no src_prepare defined; doing nothing ..."
206 niro 24 return 0
207     }
208    
209 niro 1573 # dummy function, used if that does not exist in smage file
210 niro 1577 src_compile()
211 niro 1575 {
212 niro 1591 echo "no src_compile defined; doing nothing ..."
213 niro 1575 return 0
214     }
215    
216     # dummy function, used if that does not exist in smage file
217 niro 1577 src_check()
218 niro 306 {
219 niro 1591 echo "no src_check defined; doing nothing ..."
220 niro 24 return 0
221     }
222    
223 niro 1573 # dummy function, used if that does not exist in smage file
224 niro 306 src_install()
225     {
226 niro 1591 echo "no src_install defined; doing nothing ..."
227 niro 24 return 0
228     }
229    
230 niro 351 mlibdir()
231     {
232     local libdir=lib
233     [[ ${ARCH} = x86_64 ]] && libdir=lib64
234    
235     echo "${libdir}"
236     }
237    
238 niro 306 mconfigure()
239     {
240 niro 1613 local myopts
241     if [[ ! -z ${CTARGET} ]]
242     then
243     myopts="--target=${CTARGET}"
244     fi
245    
246 niro 24 if [ -x ./configure ]
247     then
248 niro 306 ./configure \
249     --prefix=/usr \
250     --host=${CHOST} \
251 niro 833 --build=${CHOST} \
252 niro 306 --mandir=/usr/share/man \
253     --infodir=/usr/share/info \
254     --datadir=/usr/share \
255     --sysconfdir=/etc \
256     --localstatedir=/var/lib \
257 niro 351 --libdir=/usr/$(mlibdir) \
258 niro 1613 ${myopts} \
259 niro 306 "$@" || die "mconfigure failed"
260 niro 24 else
261     echo "configure is not an executable ..."
262     exit 1
263     fi
264     }
265    
266 niro 306 minstall()
267     {
268     if [ -f ./[mM]akefile -o -f ./GNUmakefile ]
269     then
270 niro 24 make prefix=${BINDIR}/usr \
271     datadir=${BINDIR}/usr/share \
272     infodir=${BINDIR}/usr/share/info \
273     localstatedir=${BINDIR}/var/lib \
274     mandir=${BINDIR}/usr/share/man \
275     sysconfdir=${BINDIR}/etc \
276 niro 351 libdir=${BINDIR}/usr/$(mlibdir) \
277 niro 24 "$@" install || die "minstall failed"
278     else
279     die "no Makefile found"
280     fi
281     }
282    
283 niro 306 mmake()
284     {
285 niro 24 make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
286     }
287    
288 niro 306 munpack()
289     {
290 niro 24 local SRCFILE
291     local IFTAR
292     local DEST
293    
294     SRCFILE=$1
295 niro 306
296 niro 597 if [[ -z $2 ]]
297 niro 24 then
298     DEST=${BUILDDIR}
299     else
300     DEST=$2
301     fi
302 niro 306
303 niro 411 [[ ! -d ${DEST} ]] && install -d ${DEST}
304    
305 niro 24 case "${SRCFILE##*.}" in
306     bz2)
307     IFTAR="$(basename $SRCFILE .bz2)"
308     IFTAR="${IFTAR##*.}"
309 niro 306 if [[ ${IFTAR} = tar ]]
310 niro 24 then
311 niro 597 tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tar.bz2 unpack failed."
312     else
313     pushd ${DEST} > /dev/null
314     bzcat ${SOURCEDIR}/${PNAME}/${SRCFILE} > ${DEST}/$(basename ${SRCFILE} .bz2) || die ".bz2 unpack failed."
315     popd > /dev/null
316 niro 24 fi
317     ;;
318     gz)
319     IFTAR="$(basename $SRCFILE .gz)"
320     IFTAR="${IFTAR##*.}"
321 niro 306 if [[ ${IFTAR} = tar ]]
322 niro 24 then
323 niro 597 tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tar.gz unpack failed."
324     else
325     pushd ${DEST} > /dev/null
326     zcat ${SOURCEDIR}/${PNAME}/${SRCFILE} > ${DEST}/$(basename ${SRCFILE} .gz) || die ".gz unpack failed."
327     popd > /dev/null
328 niro 24 fi
329     ;;
330 niro 1351 xz)
331     IFTAR="$(basename $SRCFILE .xz)"
332     IFTAR="${IFTAR##*.}"
333     if [[ ${IFTAR} = tar ]]
334     then
335     tar --no-same-owner -xvJf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tar.xz unpack failed."
336     else
337     pushd ${DEST} > /dev/null
338     xzcat ${SOURCEDIR}/${PNAME}/${SRCFILE} > ${DEST}/$(basename ${SRCFILE} .xz) || die ".xz unpack failed."
339     popd > /dev/null
340     fi
341     ;;
342 niro 600 tbz2|mpks|mpk)
343 niro 597 tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tbz2 unpack failed."
344 niro 24 ;;
345     tgz)
346 niro 597 tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tgz unpack failed."
347 niro 24 ;;
348 niro 1351 txz|mpkzs|mpkz)
349     tar --no-same-owner -xvJf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".txz unpack failed."
350     ;;
351 niro 597 rar)
352     unrar x ${SOURCEDIR}/${PNAME}/${SRCFILE} ${DEST} || die ".rar unpack failed."
353     ;;
354 niro 1604 zip|xpi|jar)
355 niro 597 unzip ${SOURCEDIR}/${PNAME}/${SRCFILE} -d ${DEST} || die ".zip unpack failed."
356     ;;
357     rpm)
358 niro 635 pushd ${DEST} > /dev/null
359 niro 597 rpm2targz ${SOURCEDIR}/${PNAME}/${SRCFILE} || die "rpm2targz: .rpm unpack failed."
360 niro 602 tar --no-same-owner -xvzf ${SRCFILE/.rpm/.tar.gz} || die "tar: .rpm unpack failed."
361 niro 635 if [[ -f ${DEST}/${SRCFILE/.rpm/.tar.gz} ]]
362 niro 602 then
363 niro 635 rm ${DEST}/${SRCFILE/.rpm/.tar.gz}
364 niro 602 fi
365 niro 597 ;;
366 niro 24 *)
367     die "munpack failed"
368     ;;
369     esac
370     }
371    
372 niro 306 mpatch()
373     {
374 niro 24 local PATCHOPTS
375     local PATCHFILE
376 niro 447 local i
377 niro 24
378     PATCHOPTS=$1
379     PATCHFILE=$2
380    
381 niro 447 if [[ -z $2 ]]
382     then
383     PATCHFILE=$1
384    
385     ## patch level auto-detection, get patch level
386     for ((i=0; i < 10; i++))
387     do
388     patch --dry-run -Np${i} -i ${SOURCEDIR}/${PNAME}/${PATCHFILE} > /dev/null
389     if [[ $? = 0 ]]
390     then
391     PATCHOPTS="-Np${i}"
392     break
393     fi
394     done
395     fi
396    
397 niro 384 echo -e "${COLBLUE}*** ${COLGREEN}Applying patch '${PATCHFILE}'${COLDEFAULT}"
398 niro 24 patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}
399     }
400    
401 niro 497 mlibtoolize()
402     {
403     local opts="$@"
404 niro 1435 [[ -z ${opts} ]] && opts="--verbose --install --force"
405 niro 24
406 niro 497 libtoolize ${opts} || die "running: mlibtoolize ${opts}"
407     }
408    
409 niro 1291 mautoreconf()
410     {
411     local opts="$@"
412     [[ -z ${opts} ]] && opts="--verbose --install --force"
413    
414     autoreconf ${opts} || die "running: mautoreconf ${opts}"
415     }
416    
417 niro 306 minstalldocs()
418     {
419 niro 24 local docfiles
420 niro 1581 local doc
421 niro 24 docfiles="$@"
422 niro 306
423 niro 24 if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
424     then
425     install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
426     fi
427 niro 306
428 niro 1581 for doc in ${docfiles}
429 niro 24 do
430 niro 1581 if [ -f ${doc} ]
431 niro 953 then
432 niro 1584 if mqueryfeature "compressdoc"
433 niro 1581 then
434 niro 1615 cat ${doc} | gzip -9c > ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/$(basename ${doc}).gz || die "gzipping +installing ${doc}."
435     chmod 0644 ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/$(basename ${doc}).gz || die "fixing permissions of ${doc}."
436 niro 1581 else
437     install -m 0644 ${SRCDIR}/${i} ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "installing ${doc}."
438     fi
439 niro 953 fi
440 niro 24 done
441     }
442    
443 niro 306 mstriplibs()
444     {
445 niro 79 local stripdir="$@"
446    
447 niro 1578 [[ -z ${stripdir} ]] && stripdir="${BINDIR}"
448     [[ -z ${STRIP_DYN_LIB} ]] && STRIP_DYN_LIB="--strip-debug"
449     find ${stripdir} ! -type d | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs --no-run-if-empty strip ${STRIP_DYN_LIB} 2> /dev/null
450 niro 79 }
451    
452 niro 306 mstripbins()
453     {
454 niro 79 local stripdir="$@"
455    
456 niro 1578 [[ -z ${stripdir} ]] && stripdir="${BINDIR}"
457     [[ -z ${STRIP_DYN_BIN} ]] && STRIP_DYN_BIN="--strip-debug"
458     find ${stripdir} ! -type d | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs --no-run-if-empty strip ${STRIP_DYN_BIN} 2> /dev/null
459 niro 79 }
460    
461 niro 1543 mstripstatic()
462     {
463     local stripdir="$@"
464    
465 niro 1578 [[ -z ${stripdir} ]] && stripdir="${BINDIR}"
466     [[ -z ${STRIP_STATIC_LIB} ]] && STRIP_STATIC_LIB="--strip-debug"
467     find ${stripdir} ! -type d | xargs file | grep "ar archive" | cut -f 1 -d : | xargs --no-run-if-empty strip ${STRIP_STATIC_LIB} 2> /dev/null
468 niro 1543 }
469    
470 niro 1580 mstriplibtoolarchive()
471     {
472     local stripdir="$@"
473    
474     [[ -z ${stripdir} ]] && stripdir="${BINDIR}"
475 niro 1601 find ${stripdir} ! -type d -name \*.la | xargs | grep "libtool library" | cut -f 1 -d : | xargs --no-run-if-empty rm -f -- 2> /dev/null
476 niro 1580 }
477    
478     mpurgetargets()
479     {
480     local stripdir="$@"
481     local target
482    
483     [[ -z ${stripdir} ]] && stripdir=${BINDIR}
484     # nothing to do in this case
485     [[ -z ${PURGE_TARGETS[*]} ]] && return
486    
487     for target in ${PURGE_TARGETS[*]}
488     do
489     # check if target is a regex pattern without any slashes
490     if [[ ${target} = ${target//\/} ]]
491     then
492     find ${BINDIR} -type f -name "${target}" | xargs --no-run-if-empty rm -f -- 2> /dev/null
493     else
494     rm -f -- ${target} 2> /dev/null
495     fi
496     done
497     }
498    
499 niro 943 mcompressdocs()
500     {
501     local bindir="$@"
502    
503     if [ -d ${bindir}/usr/share/man ]
504     then
505     echo -e "${COLBLUE}===${COLGREEN} compressing man-pages ...${COLDEFAULT}"
506     ${MLIBDIR}/compressdoc -g -9 ${bindir}/usr/share/man
507     fi
508    
509     if [ -d ${bindir}/usr/share/info ]
510     then
511     echo -e "${COLBLUE}===${COLGREEN} compressing info-pages ...${COLDEFAULT}"
512     ${MLIBDIR}/compressdoc -g -9 ${bindir}/usr/share/info
513     fi
514     }
515    
516 niro 306 sminclude()
517     {
518 niro 172 local i
519    
520 niro 183 if [[ -n "$@" ]]
521 niro 172 then
522     for i in $@
523     do
524 niro 175 echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
525 niro 172 source ${SMAGESCRIPTSDIR}/include/${i}.sminc
526     done
527 niro 177 echo
528 niro 172 fi
529     }
530    
531 niro 306 setup_distcc_environment()
532     {
533 niro 24 if [ -x /usr/bin/distcc ]
534     then
535 niro 441 echo -e "${COLBLUE}---${COLGREEN} Using DistCC for compilation ...${COLDEFAULT}"
536 niro 351 export PATH=/usr/$(mlibdir)/distcc/bin:${PATH} || die "distcc: could not export new $PATH"
537 niro 24
538     export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"
539    
540 niro 306 # creating distcc tempdir
541 niro 24 install -o distcc -g daemon -d ${DISTCC_DIR}
542     chmod 1777 ${DISTCC_DIR}
543     fi
544     }
545    
546 niro 306 setup_ccache_environment()
547     {
548 niro 24 if [ -x /usr/bin/ccache ]
549     then
550 niro 441 echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}"
551 niro 351 export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
552 niro 24 fi
553     }
554    
555 niro 193 # fixes given dependencies to match a MAGE_TARGET
556 niro 198 # fix_mage_deps -target s/depend # <-- note -target !
557 niro 306 fix_mage_deps()
558     {
559 niro 193 local target="$1"
560     local depend="$2"
561     local NDEPEND
562     local sym dep cat pver pname
563    
564     # deps and provides are special
565     # they must be fixed to match the target
566    
567     # run this only if target and depend is not empty
568     if [ -n "${target}" ] && [ -n "${depend}" ]
569     then
570     # fix DEPEND
571     while read sym dep
572     do
573 niro 427 # ignore empty lines
574     [[ -z ${dep} ]] && continue
575    
576 niro 193 cat="$(dirname ${dep})"
577 niro 199 # change if not virtual
578 niro 200 if [[ ${cat} = virtual ]]
579 niro 199 then
580 niro 200 pname="$(basename ${dep})"
581     else
582 niro 199 # fix pver to target-pver
583     # to get pname-target-pver
584 niro 193
585 niro 199 # doing it backwards !
586     pver="${dep##*-}"
587 niro 200 # full pver
588     pname="$(basename ${dep/-${pver}/})${target}-${pver}"
589 niro 199 fi
590 niro 193
591     # do not add empty lines
592     if [ -z "${NDEPEND}" ]
593     then
594 niro 200 NDEPEND="${sym} ${cat}/${pname}"
595 niro 193 else
596     NDEPEND="${NDEPEND}
597 niro 201 ${sym} ${cat}/${pname}"
598 niro 193 fi
599    
600     unset cat pname pver
601     done << EOF
602     ${depend}
603     EOF
604     # set NDEPEND to DEPEND
605     depend="${NDEPEND}"
606     fi
607    
608     echo "${depend}"
609     }
610    
611 niro 192 # build_mage_script(): helper functions for regen_mage_tree()
612 niro 191 # generates an mage file with given information in smage file
613     # needs at least:
614     # PNAME name of pkg
615     # PVER version
616     # PBUILD revision
617     # PCATEGORIE categorie of the pkg
618     # STATE state of pkg stable|unstable|old
619     # DESCRIPTION va short description (opt)
620     # HOMEPAGE homepage (opt)
621     # DEPEND runtime dependencies (opt)
622     # SDEPEND add. needed deps to build the pkg (opt)
623     # PROVIDE provides a virtual (opt)
624     #
625     # special tags:
626     # PKGTYPE type of pkg
627     # INHERITS which functions get included
628 niro 832 # SPECIAL_FUNCTIONS special functions which should also be added
629 niro 191 # warning: they get killed before the build starts !
630 niro 943 # SPLIT_PACKAGES names of all subpackages which are splitted from parent
631     # SPLIT_PACKAGE_BASE base package name for splitpackages
632     # (only in the resulting magefile}
633 niro 191 #
634     # MAGE_TREE_DEST target destination of the generated tree
635     # REGEN_MAGE_TREE set to 'true' to enable this
636 niro 193 #
637 niro 195 # gets called with build_mage_script target
638 niro 192 build_mage_script()
639 niro 191 {
640     local magefile
641     local dest
642 niro 193 local target
643 niro 943 local split_pkg_base
644 niro 191 local sym
645     local depname
646    
647     # if MAGE_TREE_DEST not set use BUILDDIR
648     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
649    
650     # determinate which suffix this mage file should get, if any
651 niro 943 [[ $1 = --target ]] && shift && target="-$1"
652 niro 191
653 niro 943 # mark package as splitpackage
654     [[ $1 = --split-pkg-base ]] && shift && split_pkg_base="$1"
655    
656 niro 191 # name of magefile
657 niro 193 magefile="${PNAME}${target}-${PVER}-${PBUILD}.mage"
658 niro 191
659     # destination to magefile
660 niro 193 dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${target}/${magefile}"
661 niro 191
662     # show what we are doing
663 niro 439 echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}"
664     echo "${dest}"
665 niro 191
666     install -d "$(dirname ${dest})"
667     # now build the mage file
668     > ${dest}
669    
670     # pgkname and state
671 niro 193 echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest}
672 niro 191 echo "STATE=\"${STATE}\"" >> ${dest}
673    
674     # description and homepage
675     echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest}
676     echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest}
677    
678 niro 196 # special tags and vars
679 niro 191 echo "PKGTYPE=\"${PKGTYPE}\"" >> ${dest}
680 niro 214
681     # echo MAGE_TARGETS ## note -target is needed !
682     echo "MAGE_TARGETS=\"${target}\"" >> ${dest}
683    
684 niro 943 # split package base
685     echo "SPLIT_PACKAGE_BASE=\"${split_pkg_base}\"" >> ${dest}
686    
687 niro 197 # add special vars
688     if [ -n "${SPECIAL_VARS}" ]
689 niro 191 then
690     local i
691 niro 197 for i in ${SPECIAL_VARS}
692 niro 191 do
693 niro 197 # being tricky here :)
694     echo "${i}=\"$(eval echo \$${i})\"" >> ${dest}
695 niro 191 done
696     fi
697 niro 214
698 niro 197 # add at least all includes
699     if [ -n "${INHERITS}" ]
700 niro 196 then
701 niro 197 echo -n "minclude" >> ${dest}
702 niro 196 local i
703 niro 197 for i in ${INHERITS}
704 niro 196 do
705 niro 197 echo -n " ${i}" >> ${dest}
706 niro 196 done
707 niro 1351 # a CRLF is needed here!
708     echo >> ${dest}
709 niro 196 fi
710    
711 niro 191 # deps and provides
712 niro 193 echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}
713     echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest}
714 niro 191 echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}
715    
716     # add special functions
717     if [ -n "${SPECIAL_FUNCTIONS}" ]
718     then
719     local i
720     for i in ${SPECIAL_FUNCTIONS}
721     do
722     # add to mage (quotes needed !)
723     typeset -f "${i}" >> ${dest}
724     # unset to be safe (quotes needed !)
725 niro 192 #unset "${i}" <-- later to get every target built
726 niro 191 done
727     fi
728    
729     # pre|post-install|removes
730     typeset -f preinstall >> ${dest}
731     typeset -f postinstall >> ${dest}
732     typeset -f preremove >> ${dest}
733     typeset -f postremove >> ${dest}
734     }
735    
736     regen_mage_tree()
737     {
738 niro 1436 local subpackage
739 niro 191
740     # build them only if requested
741 niro 1584 if mqueryfeature regentree
742 niro 191 then
743 niro 195 # run it without targets
744 niro 943 if [[ -n ${MAGE_TARGETS} ]]
745 niro 195 then
746 niro 943 # build for each target a mage file
747     # run it with several targets
748 niro 191 echo
749 niro 1436 for subpackage in ${MAGE_TARGETS}
750 niro 943 do
751 niro 1436 build_mage_script --target "${subpackage}"
752 niro 943 done
753 niro 191 echo
754 niro 195
755 niro 943 # run it for splitpackages
756     elif [[ -n ${SPLIT_PACKAGES} ]]
757     then
758     local split_pkg_base="${PNAME}"
759     # save smage environment
760     split_save_variables
761     # build for each subpackage a mage file
762 niro 195 # run it with several targets
763 niro 943 echo
764 niro 1436 for subpackage in ${SPLIT_PACKAGES}
765 niro 195 do
766 niro 943 # get the right variables for the split
767 niro 1436 export PNAME="${subpackage}"
768     split_info_${subpackage}
769     # get the preinstall etc
770     split_export_inherits ${subpackage}
771 niro 943 build_mage_script --split-pkg-base "${split_pkg_base}"
772 niro 1436 # delete split preinstall etc
773     split_delete_inherits ${subpackage}
774 niro 951 # restore smage environment
775     split_restore_variables
776 niro 195 done
777 niro 943 echo
778 niro 951 # unset all saved smage variables
779     split_unset_variables
780 niro 943
781     else
782     echo
783     build_mage_script
784     echo
785 niro 195 fi
786 niro 191 fi
787    
788     # now unset all uneeded vars to be safe
789 niro 192 # unset PKGNAME <-- don't do that; smage needs this var
790     # unset to be safe (quotes needed !)
791 niro 477 # for i in ${SPECIAL_FUNCTIONS}
792     # do
793     # unset "${i}"
794     # done
795 niro 192 unset SPECIAL_FUNCTIONS
796 niro 477 # for i in ${SPECIAL_VARS}
797     # do
798     # unset "${i}"
799     # done
800 niro 194 unset SPECIAL_VARS
801 niro 191 unset STATE
802     unset DESCRIPTION
803     unset HOMEPAGE
804 niro 1594 # unset PKGTYPE <-- don't do that either; smage needs this var
805 niro 191 unset INHERITS
806     unset DEPEND
807     unset SDEPEND
808     unset PROVIDE
809     unset preinstall
810     unset postinstall
811     unset preremove
812     unset postremove
813     }
814    
815 niro 943 split_save_variables()
816     {
817     export SAVED_PNAME="${PNAME}"
818     export SAVED_PVER="${PVER}"
819     export SAVED_PBUILD="${PBUILD}"
820     export SAVED_PCATEGORIE="${PCATEGORIE}"
821     export SAVED_DESCRIPTION="${DESCRIPTION}"
822     export SAVED_HOMEPAGE="${HOMEPAGE}"
823     export SAVED_SPECIAL_VARS="${SPECIAL_VARS}"
824     export SAVED_STATE="${STATE}"
825     export SAVED_PKGTYPE="${PKGTYPE}"
826     export SAVED_INHERITS="${INHERITS}"
827     export SAVED_DEPEND="${DEPEND}"
828     export SAVED_SDEPEND="${SDEPEND}"
829     export SAVED_PROVIDE="${PROVIDE}"
830 niro 1582 export SAVED_PKGTYPE="${PKGTYPE}"
831 niro 943
832 niro 1584 # special handling needed for mage features
833     # pkgbuild
834     mqueryfeature "pkgbuild" && export SAVED_FEATURE_PKGBUILD="pkgbuild"
835     mqueryfeature "!pkgbuild" && export SAVED_FEATURE_PKGBUILD="!pkgbuild"
836     # strip
837     mqueryfeature "strip" && export SAVED_FEATURE_STRIP="strip"
838     mqueryfeature "!strip" && export SAVED_FEATURE_STRIP="!strip"
839     # libtool
840     mqueryfeature "libtool" && export SAVED_FEATURE_LIBTOOL="libtool"
841     mqueryfeature "!libtool" && export SAVED_FEATURE_LIBTOOL="!libtool"
842     # compressdoc
843     mqueryfeature "compressdoc" && export SAVED_FEATURE_COMPRESSDOC="compressdoc"
844     mqueryfeature "!compressdoc" && export SAVED_FEATURE_COMPRESSDOC="!compressdoc"
845    
846 niro 945 # bindir too
847     export SAVED_BINDIR="${BINDIR}"
848    
849     # export the SPLIT_PACKAGE_BASE
850     export SPLIT_PACKAGE_BASE="${SAVED_PNAME}"
851    
852 niro 943 # functions
853     if [[ ! -z $(typeset -f preinstall) ]]
854     then
855     # rename the old one
856     local saved_preinstall
857     saved_preinstall=SAVED_$(typeset -f preinstall)
858     eval "${saved_preinstall}"
859     export -f SAVED_preinstall
860     fi
861    
862     if [[ ! -z $(typeset -f postinstall) ]]
863     then
864     # rename the old one
865     local saved_postinstall
866     saved_postinstall=SAVED_$(typeset -f postinstall)
867     eval "${saved_postinstall}"
868     export -f SAVED_postinstall
869     fi
870    
871     if [[ ! -z $(typeset -f preremove) ]]
872     then
873     # rename the old one
874     local saved_preremove
875     saved_preremove=SAVED_$(typeset -f preremove)
876     eval "${saved_preremove}"
877     export -f SAVED_preremove
878     fi
879    
880     if [[ ! -z $(typeset -f postremove) ]]
881     then
882     # rename the old one
883     local saved_postremove
884     saved_postremove=SAVED_$(typeset -f postremove)
885     eval "${saved_postremove}"
886     export -f SAVED_postremove
887     fi
888     }
889    
890     split_restore_variables()
891     {
892     export PNAME="${SAVED_PNAME}"
893     export PVER="${SAVED_PVER}"
894     export PBUILD="${SAVED_PBUILD}"
895     export PCATEGORIE="${SAVED_PCATEGORIE}"
896     export DESCRIPTION="${SAVED_DESCRIPTION}"
897     export HOMEPAGE="${SAVED_HOMEPAGE}"
898     export SPECIAL_VARS="${SAVED_SPECIAL_VARS}"
899     export STATE="${SAVED_STATE}"
900     export PKGTYPE="${SAVED_PKGTYPE}"
901     export INHERITS="${SAVED_INHERITS}"
902     export DEPEND="${SAVED_DEPEND}"
903     export SDEPEND="${SAVED_SDEPEND}"
904     export PROVIDE="${SAVED_PROVIDE}"
905 niro 1582 export PKGTYPE="${SAVED_PKGTYPE}"
906 niro 943
907 niro 1584 # special handling needed for mage features
908     # pkgbuild
909 niro 1614 FVERBOSE=off msetfeature "${SAVED_FEATURE_PKGBUILD}"
910 niro 1584 # strip
911 niro 1614 FVERBOSE=off msetfeature "${SAVED_FEATURE_STRIP}"
912 niro 1584 # libtool
913 niro 1614 FVERBOSE=off msetfeature "${SAVED_FEATURE_LIBTOOL}"
914 niro 1584 # compressdoc
915 niro 1614 FVERBOSE=off msetfeature "${SAVED_FEATURE_COMPRESSDOC}"
916 niro 1584
917 niro 945 # bindir too
918     export BINDIR="${SAVED_BINDIR}"
919    
920 niro 943 # functions
921     if [[ ! -z $(typeset -f SAVED_preinstall) ]]
922     then
923     # rename the old one
924     local saved_preinstall
925     saved_preinstall=$(typeset -f SAVED_preinstall)
926     eval "${saved_preinstall/SAVED_/}"
927     export -f preinstall
928     fi
929    
930     if [[ ! -z $(typeset -f SAVED_postinstall) ]]
931     then
932     # rename the old one
933     local saved_postinstall
934     saved_postinstall=$(typeset -f SAVED_postinstall)
935     eval "${saved_postinstall/SAVED_/}"
936     export -f postinstall
937     fi
938    
939     if [[ ! -z $(typeset -f SAVED_preremove) ]]
940     then
941     # rename the old one
942     local saved_preremove
943     saved_preremove=$(typeset -f SAVED_preremove)
944     eval "${saved_preremove/SAVED_/}"
945     export -f preremove
946     fi
947    
948     if [[ ! -z $(typeset -f SAVED_postremove) ]]
949     then
950     # rename the old one
951     local saved_postremove
952     saved_postremove=$(typeset -f SAVED_postremove)
953     eval "${saved_postremove/SAVED_/}"
954     export -f postremove
955     fi
956 niro 951 }
957 niro 943
958 niro 951 split_unset_variables()
959     {
960 niro 943 # unset saved vars; not needed anymore
961     unset SAVED_PNAME
962     unset SAVED_PVER
963     unset SAVED_PBUILD
964     unset SAVED_PCATEGORIE
965     unset SAVED_DESCRIPTION
966     unset SAVED_HOMEPAGE
967     unset SAVED_SPECIAL_VARS
968     unset SAVED_STATE
969     unset SAVED_PKGTYPE
970     unset SAVED_INHERITS
971     unset SAVED_DEPEND
972     unset SAVED_SDEPEND
973     unset SAVED_PROVIDE
974 niro 945 unset SAVED_BINDIR
975 niro 1582 unset SAVED_PKGTYPE
976 niro 1584 unset SAVED_FEATURE_PKGBUILD
977     unset SAVED_FEATURE_STRIP
978     unset SAVED_FEATURE_LIBTOOL
979     unset SAVED_FEATURE_COMPRESSDOC
980 niro 945 unset SPLIT_PACKAGE_BASE
981 niro 943 unset -f SAVED_preinstall
982     unset -f SAVED_postinstall
983     unset -f SAVED_preremove
984     unset -f SAVED_postremove
985     }
986    
987 niro 1436 split_export_inherits()
988     {
989     local subpackage="$1"
990     local func
991     local newfunc
992    
993     for func in preinstall postinstall preremove postremove
994     do
995     if [[ ! -z $(typeset -f ${func}_${subpackage}) ]]
996     then
997     newfunc=$(typeset -f ${func}_${subpackage})
998     newfunc="${newfunc/_${subpackage} (/ (}"
999     eval "${newfunc}"
1000     fi
1001     done
1002     }
1003    
1004     split_delete_inherits()
1005     {
1006     local subpackage="$1"
1007     local func
1008    
1009     for func in preinstall postinstall preremove postremove
1010     do
1011     if [[ ! -z $(typeset -f ${func}_${subpackage}) ]]
1012     then
1013     unset -f ${func}
1014     fi
1015     done
1016     }
1017    
1018 niro 253 export_inherits()
1019     {
1020     local include="$1"
1021     shift
1022    
1023     while [ "$1" ]
1024     do
1025     local functions="$1"
1026    
1027     # sanity checks
1028     [ -z "${include}" ] && die "export_inherits(): \$include not given."
1029     [ -z "${functions}" ] && die "export_inherits(): \$functions not given."
1030    
1031     eval "${functions}() { ${include}_${functions} ; }"
1032    
1033     # debug
1034     [[ ${MAGEDEBUG} = on ]] && typeset -f "${functions}"
1035    
1036     shift
1037     done
1038     }
1039    
1040 niro 255 generate_package_md5sum()
1041     {
1042     local dest
1043     local pcat
1044     local pname
1045     local pver
1046     local pbuild
1047     local parch
1048     local target
1049     local pkgname
1050    
1051     # very basic getops
1052     for i in $*
1053     do
1054     case $1 in
1055     --pcat|-c) shift; pcat="$1" ;;
1056     --pname|-n) shift; pname="$1" ;;
1057     --pver|-v) shift; pver="$1" ;;
1058     --pbuild|-b) shift; pbuild="$1" ;;
1059     --parch|a) shift; parch="$1" ;;
1060     --target|t) shift; target="$1" ;;
1061     esac
1062     shift
1063     done
1064    
1065     # sanity checks; abort if not given
1066     [ -z "${pcat}" ] && die "generate_package_md5sum() \$pcat not given."
1067     [ -z "${pname}" ] && die "generate_package_md5sum() \$pname not given."
1068     [ -z "${pver}" ] && die "generate_package_md5sum() \$pver not given."
1069     [ -z "${pbuild}" ] && die "generate_package_md5sum() \$pbuild not given."
1070     [ -z "${parch}" ] && die "generate_package_md5sum() \$parch not given."
1071    
1072     # check needed global vars
1073     [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."
1074     [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."
1075    
1076     # fix target as it may be empty !
1077     [ -n "${target}" ] && target="-${target}"
1078    
1079     # build pkgname
1080     pkgname="${pname}${target}-${pver}-${parch}-${pbuild}"
1081    
1082     # build pkg-md5-sum only if requested
1083 niro 1584 if mqueryfeature regentree
1084 niro 255 then
1085 niro 439 echo -ne "${COLBLUE}===${COLGREEN} generating md5's for ${pkgname}.${PKGSUFFIX} ... ${COLDEFAULT}"
1086 niro 255
1087     # abort if not exist
1088     if [ ! -f ${PKGDIR}/${pkgname}.${PKGSUFFIX} ]
1089     then
1090 niro 439 echo -e "${COLRED}! exists${COLDEFAULT}"
1091 niro 255 return 0
1092     fi
1093    
1094     # if MAGE_TREE_DEST not set use BUILDDIR
1095     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
1096    
1097     # setup md5 dir
1098 niro 891 dest="${MAGE_TREE_DEST}/${pcat}/${pname}${target}/md5"
1099 niro 255 install -d ${dest}
1100    
1101     # gen md5sum
1102     ( cd ${PKGDIR}; md5sum "${pkgname}.${PKGSUFFIX}" ) \
1103 niro 256 > ${dest}/${pkgname}.md5
1104 niro 439 echo -e "${COLGREEN}done${COLDEFAULT}"
1105 niro 255 fi
1106     }
1107    
1108 niro 403 source_pkg_build()
1109     {
1110     if [[ ${PKGTYPE} = virtual ]]
1111     then
1112     echo "Virtual package detected; src-pkg-tarball not necessary ..."
1113     return 0
1114     fi
1115    
1116     if [[ ! -d ${SOURCEDIR}/${PNAME} ]]
1117     then
1118     echo "No SRC_URI defined; src-pkg-tarball not necessary ..."
1119     return 0
1120     fi
1121    
1122 niro 419 [ -z "${SRCPKGDIR}" ] && die "\$SRCPKGDIR not found. Please setup your ${MAGERC} correctly."
1123 niro 406
1124 niro 403 echo -e "${COLGREEN}Creating source package tarball ... ${COLDEFAULT}"
1125 niro 412
1126     # include the smage2 file
1127     cp ${SMAGENAME} ${SOURCEDIR}/${PNAME}
1128    
1129 niro 403 ( cd ${SOURCEDIR}; tar cvjf ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${PNAME}; )
1130 niro 406 [[ ! -d ${SRCPKGDIR} ]] && install -d ${SRCPKGDIR}
1131     mv ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${SRCPKGDIR}/${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX}
1132 niro 403
1133     echo -e "${COLGREEN}Source package ${COLBLUE}${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} ${COLGREEN}successfully builded.${COLDEFAULT}"
1134     }
1135    
1136 niro 859 step_by_step()
1137     {
1138 niro 1584 if mqueryfeature stepbystep
1139 niro 859 then
1140 niro 945 echo -e "${COLRED}Step-by-step enabled! Paused after $1.${COLDEFAULT}"
1141 niro 859 echo "Press [enter] to continue"
1142     read
1143     fi
1144     }
1145 niro 403
1146 niro 1617 resume_stamp()
1147     {
1148     local step="$1"
1149 niro 1621 [[ ! -d ${BUILDDIR}/.stamps ]] && install -d ${BUILDDIR}/.stamps
1150     touch ${BUILDDIR}/.stamps/smage-${PKGNAME}-${step}
1151 niro 1617 }
1152 niro 859
1153 niro 1617 run_resume()
1154     {
1155     local step="$1"
1156    
1157 niro 1621 if mqueryfeature "resume" && [[ -f ${BUILDDIR}/.stamps/smage-${PKGNAME}-${step} ]]
1158 niro 1617 then
1159     echo -e "${COLMAGENTA}${step} already processed; doing nothing${COLDEFAULT}"
1160     return 0
1161     else
1162     return 1
1163     fi
1164     }
1165    
1166 niro 59 # print out our version
1167     showversion
1168     echo
1169    
1170 niro 24 if [ -z "$1" ]
1171     then
1172     echo "No .smage2 file given. Exiting."
1173     echo
1174     exit 1
1175     fi
1176    
1177 niro 1584 # load supported mage features
1178     load_mage_features
1179    
1180 niro 192 # updating smage2-scripts
1181 niro 306 if [[ $1 = update ]]
1182 niro 24 then
1183 niro 59 if [ ! -d ${SOURCEDIR} ]
1184     then
1185     install -d ${SOURCEDIR}
1186     fi
1187     syncsmage2
1188     exit 0
1189     fi
1190    
1191 niro 192 # creates md5sums for smages to given dir
1192 niro 306 if [[ $1 = calcmd5 ]]
1193 niro 59 then
1194 niro 1207 if [ $# -ge 2 ]
1195 niro 59 then
1196     SMAGENAME="$2"
1197     MD5DIR="$3"
1198 niro 1207 [[ -z ${MD5DIR} ]] && MD5DIR="$(dirname ${SMAGENAME})/md5"
1199    
1200 niro 1346 smagesource ${SMAGENAME} || die "download source failed"
1201 niro 59
1202 niro 66 # overridable sourcedir; must be declared after source of the smage2
1203     CALC_SOURCEDIR="${CALC_SOURCEDIR:="${SOURCEDIR}/${PNAME}"}"
1204    
1205 niro 59 [ -z "${SRC_URI}" ] && die "Nothing declared to calculate."
1206    
1207     # end of array
1208     EOA=${#SRC_URI[*]}
1209    
1210     [ ! -d ${MD5DIR} ] && install -d ${MD5DIR}
1211    
1212     # clear md5sum file
1213     MY_MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
1214     echo -n > ${MY_MD5_FILE}
1215    
1216     for ((i=0; i < EOA; i++))
1217     do
1218 niro 66 # url to file
1219     my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)"
1220    
1221     # subdir in sources dir; the my_SRCI_URI file goes to there
1222     my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)"
1223    
1224     # if my_src_uri_dest is not equal my_src_uri; than an other dir is used
1225     if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]]
1226     then
1227     MY_SRC_FILE="${my_SRC_URI_DEST}/$(basename ${SRC_URI[${i}]})"
1228     else
1229     MY_SRC_FILE="$(basename ${SRC_URI[${i}]})"
1230     fi
1231    
1232 niro 59 if [ -e "${CALC_SOURCEDIR}/${MY_SRC_FILE}" ]
1233     then
1234     echo "calculating $(basename ${MY_SRC_FILE}) ..."
1235     ( cd ${CALC_SOURCEDIR}; md5sum "${MY_SRC_FILE}" ) >> ${MY_MD5_FILE}
1236     else
1237     echo "WARNING: File '$(basename ${MY_SRC_FILE}) not found in ${CALC_SOURCEDIR}."
1238     fi
1239 niro 66
1240     # unset them to be shure
1241     unset my_SRC_URI
1242     unset my_SRC_URI_DEST
1243     unset my_SRC_URI_MIRROR
1244     unset my_SOURCEDIR
1245 niro 59 done
1246 niro 306
1247 niro 59 echo
1248     echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
1249     echo
1250     else
1251     echo "Usage: Calculating MD5 Sums:"
1252 niro 1207 echo " $(basename $0) calcmd5 /path/to/SMAGENAME [/path/to/MD5DIR]"
1253 niro 59 echo
1254     echo
1255     echo "Export the CALC_SOURCEDIR variable to override current SOURCEDIRs."
1256     echo
1257     exit 1
1258     fi
1259 niro 306
1260 niro 59 exit 0
1261     fi
1262    
1263 niro 192 # download sources
1264 niro 59 if [ "$1" == "download" -a -n "$2" ]
1265     then
1266 niro 24 if [ ! -d ${SMAGESCRIPTSDIR} ]
1267     then
1268     install -d ${SMAGESCRIPTSDIR}
1269     fi
1270 niro 59
1271     # get smage
1272     SMAGENAME="$2"
1273     MD5DIR="$(dirname ${SMAGENAME})/md5"
1274 niro 1346 smagesource ${SMAGENAME} || die "download source failed"
1275 niro 59
1276     download_sources
1277 niro 24 exit 0
1278     fi
1279    
1280 niro 202 # regen-mage-tree
1281     if [ "$1" == "only-regen-tree" -a -n "$2" ]
1282     then
1283     # set correct SMAGENAME
1284     SMAGENAME="$2"
1285     MD5DIR="$(dirname ${SMAGENAME})/md5"
1286 niro 1346 smagesource ${SMAGENAME} || die "regen: smage2 not found"
1287 niro 202
1288     regen_mage_tree
1289 niro 255
1290 niro 890 # build several targets
1291 niro 943 if [[ -n ${MAGE_TARGETS} ]]
1292 niro 890 then
1293     for target in ${MAGE_TARGETS}
1294     do
1295     # build md5sum for existing packages
1296     generate_package_md5sum \
1297     --pcat "${PCATEGORIE}" \
1298     --pname "${PNAME}" \
1299     --pver "${PVER}" \
1300     --pbuild "${PBUILD}" \
1301     --parch "${ARCH}" \
1302     --target "${target}"
1303     done
1304 niro 943
1305     # build several subpackages
1306     elif [[ -n ${SPLIT_PACKAGES} ]]
1307     then
1308     split_save_variables
1309 niro 964 for subpackage in ${SPLIT_PACKAGES}
1310 niro 943 do
1311     # get the right variables for the split
1312     export PNAME="${subpackage}"
1313     split_info_${subpackage}
1314     # build md5sum for existing packages
1315     generate_package_md5sum \
1316     --pcat "${PCATEGORIE}" \
1317     --pname "${PNAME}" \
1318     --pver "${PVER}" \
1319     --pbuild "${PBUILD}" \
1320     --parch "${ARCH}"
1321 niro 951 # restore smage environment
1322     split_restore_variables
1323 niro 943 done
1324 niro 951 # unset all saved smage variables
1325     split_unset_variables
1326 niro 943
1327 niro 890 else
1328     # build md5sum for existing packages
1329     generate_package_md5sum \
1330     --pcat "${PCATEGORIE}" \
1331     --pname "${PNAME}" \
1332     --pver "${PVER}" \
1333     --pbuild "${PBUILD}" \
1334 niro 943 --parch "${ARCH}"
1335 niro 890 fi
1336 niro 255
1337 niro 202 exit 0
1338     fi
1339    
1340 niro 412 if [ "$1" == "--create-src-tarball" -a -n "$2" ]
1341 niro 403 then
1342     # set correct SMAGENAME
1343     SMAGENAME="$2"
1344     MD5DIR="$(dirname ${SMAGENAME})/md5"
1345    
1346 niro 412 echo -e "${COLGREEN}create-src-tarball called for ${COLBLUE}${SMAGENAME}${COLGREEN} ...${COLDEFAULT}"
1347 niro 403
1348 niro 1346 smagesource ${SMAGENAME} || die "regen: smage2 not found"
1349 niro 403
1350     if [[ -d ${SOURCEDIR}/${PNAME} ]]
1351     then
1352     echo -e "${COLGREEN}Deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
1353     rm -rf ${SOURCEDIR}/${PKGNAME}
1354     fi
1355    
1356     download_sources
1357     source_pkg_build ${SMAGENAME}
1358     exit 0
1359     fi
1360    
1361 niro 406 if [ "$1" == "--src-tarball" -a -n "$2" ] || [ "$1" == "-st" -a -n "$2" ]
1362 niro 403 then
1363 niro 412 SRCPKGTARBALL="${2}"
1364 niro 1584 msetfeature "srcpkgtarball"
1365 niro 403
1366 niro 412 # abort if given file is not a source pkg
1367     [[ ${SRCPKGTARBALL##*.} != ${SRCPKGSUFFIX} ]] && die "${SRCPKGTARBALL} is not a valid src-pkg file."
1368    
1369     # set correct SMAGENAME; use the one that the src_pkg provide
1370     # /path/to/SOURCEDIR/PNAME/SMAGENAME
1371     SMAGENAME="${SOURCEDIR}/$(basename ${SRCPKGTARBALL%-*-*})/$(basename ${SRCPKGTARBALL} .${SRCPKGSUFFIX}).${SMAGESUFFIX}"
1372    
1373 niro 403 echo -e "${COLGREEN}Using src-tarball ${COLBLUE}${SRCPKGTARBALL}${COLGREEN} ...${COLDEFAULT}"
1374    
1375     [[ ! -d ${SOURCEDIR} ]] && install -d ${SOURCEDIR}
1376    
1377     # unpack srctarball
1378     [[ ! -f ${SRCPKGTARBALL} ]] && die "Error: ${SRCPKGTARBALL} does not exist. Aborting."
1379    
1380     tar xvjf ${SRCPKGTARBALL} -C ${SOURCEDIR} || die "Error unpackung src-tarball ${SRCPKGTARBALL}"
1381 niro 412
1382     [[ ! -f ${SMAGENAME} ]] && die "Included smage2 file in src-tarball not found: ${SMAGENAME}"
1383 niro 403 fi
1384    
1385 niro 1617 if [ "$1" == "--resume" -a -n "$2" ]
1386     then
1387     msetfeature "resume"
1388     SMAGENAME="$2"
1389     fi
1390 niro 403
1391 niro 306 [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ] && die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
1392     [ -z "$(basename ${SMAGENAME} | grep .${SMAGESUFFIX})" ] &&
1393     die "File '$(basename ${SMAGENAME})' is not a sMage v${SMAGEVERSION} file. Aborting."
1394 niro 419 [ -z "${SOURCEDIR}" ] && die "\$SOURCEDIR not found. Please setup your ${MAGERC} correctly."
1395     [ -z "${SMAGESCRIPTSDIR}" ] && die "\$SMAGESCRIPTSDIR not found. Please setup your ${MAGERC} correctly."
1396     [ -z "${SMAGE2RSYNC}" ] && die "\$SMAGE2RSYNC not found. Please setup your ${MAGERC} correctly."
1397     [ -z "${BINDIR}" ] && die "no BINDIR variable found in ${MAGERC}"
1398     [ -z "${CHOST}" ] && die "no CHOST variable found in ${MAGERC}"
1399     [ -z "${CFLAGS}" ] && die "no CFLAGS variable found in ${MAGERC}"
1400     [ -z "${CXXFLAGS}" ] && die "no CXXFLAGS variable found in ${MAGERC}"
1401 niro 24
1402 niro 1346 smagesource ${SMAGENAME} || die "source failed"
1403 niro 255 PKGNAME="${PNAME}-${PVER}-${ARCH}-${PBUILD}"
1404 niro 59 MD5DIR="$(dirname ${SMAGENAME})/md5"
1405 niro 941 SMAGE_LOG_CMD="tee -a /var/log/smage/${PKGNAME}.log"
1406 niro 24
1407     xtitle "Compiling ${PKGNAME}"
1408 niro 439 echo -e "${COLGREEN}Compiling ${PKGNAME}${COLDEFAULT}"
1409 niro 59
1410 niro 191 # auto regen mage tree if requested
1411     regen_mage_tree
1412    
1413 niro 1584 if mqueryfeature "srcpkg"
1414 niro 403 then
1415     if [[ -d ${SOURCEDIR}/${PNAME} ]]
1416     then
1417 niro 441 echo -e "${COLBLUE}===${COLGREEN} deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
1418 niro 408 rm -rf ${SOURCEDIR}/${PNAME}
1419 niro 403 fi
1420     fi
1421    
1422 niro 192 # download sources
1423 niro 1584 mqueryfeature "srcpkgtarball" || download_sources
1424 niro 59
1425 niro 192 # fixes some issues with these functions
1426 niro 24 export -f src_prepare || die "src_prepare export failed"
1427     export -f src_compile || die "src_compile export failed"
1428 niro 1575 export -f src_check || die "src_check export failed"
1429 niro 24 export -f src_install || die "src_install export failed"
1430    
1431 niro 192 # fixes some compile issues
1432 niro 24 export CHOST="${CHOST}" || die "CHOST export failed"
1433     export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
1434 niro 1616 if [[ -z ${CXXFLAGS} ]]
1435     then
1436     export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
1437     else
1438     export CXXFLAGS="${CXXFLAGS}" || die "CXXFLAGS export failed"
1439     fi
1440     export LDFLAGS="${LDFLAGS}" || die "LDFLAGS export failed"
1441 niro 24 export BINDIR="${BINDIR}" || die "BINDIR export failed"
1442     export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
1443    
1444 niro 192 # setup distcc
1445 niro 351 # setup for distcc goes *before* ccache, so ccache comes before distcc in path
1446 niro 1584 mqueryfeature "distcc" && setup_distcc_environment
1447 niro 24
1448 niro 192 # setup ccache
1449 niro 1584 mqueryfeature "ccache" && setup_ccache_environment
1450 niro 24
1451 niro 1617 if mqueryfeature "resume"
1452 niro 24 then
1453 niro 1617 echo -e "${COLMAGENTA}Resume requested; continuing previous build${COLDEFAULT}"
1454 niro 24
1455 niro 1617 # setup build logging
1456     [[ ! -d /var/log/smage ]] && install -d /var/log/smage
1457     if [[ -f /var/log/smage/${PKGNAME}.log.bz2 ]]
1458     then
1459     bunzip2 -f /var/log/smage/${PKGNAME}.log.bz2
1460     fi
1461     echo -e "### Resume started on $(date) ###\n" >> /var/log/smage/${PKGNAME}.log
1462 niro 24
1463 niro 1617 else
1464     # clean up builddir if a previously one exist
1465     if [ -d ${BUILDDIR} ]
1466     then
1467     rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
1468     fi
1469     install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
1470 niro 24
1471 niro 1617 # clean up srcdir if a previously unpacked one exist
1472     if [ -d ${SRCDIR} ]
1473     then
1474     rm -rf ${SRCDIR}
1475     fi
1476    
1477     # clean up bindir if a previous build exist or create a new one
1478     if [ -d ${BINDIR} ]
1479     then
1480     rm -rf ${BINDIR}
1481     fi
1482     install -d ${BINDIR} || die "couldn't create \$BINDIR."
1483    
1484     # clean up package temp dir if a previous build exist
1485     if [ -d ${BUILDDIR}/${PKGNAME} ]
1486     then
1487     rm -rf ${BUILDDIR}/${PKGNAME}
1488     fi
1489    
1490 niro 1621 # clean up stamps dir
1491     if [ -d ${BUILDDIR}/.stamps ]
1492     then
1493     rm -rf ${BUILDDIR}/.stamps
1494     fi
1495    
1496 niro 1617 # setup build logging
1497     [[ ! -d /var/log/smage ]] && install -d /var/log/smage
1498     echo -e "### Build started on $(date) ###\n" > /var/log/smage/${PKGNAME}.log
1499 niro 24 fi
1500    
1501 niro 1593 if [[ ${PKGTYPE} = virtual ]]
1502 niro 1575 then
1503 niro 1593 echo "virtual package detected; nothing will be build ..."
1504     # automatically set !pkgbuild here too
1505     msetfeature "!pkgbuild"
1506 niro 1575 else
1507 niro 1617 ( run_resume src_prepare || src_prepare ) | ${SMAGE_LOG_CMD}
1508 niro 1593 die_pipestatus 0 "src_prepare failed"
1509 niro 1617 resume_stamp src_prepare
1510     step_by_step src_prepare
1511 niro 1575
1512 niro 1617 ( run_resume src_compile || src_compile ) | ${SMAGE_LOG_CMD}
1513 niro 1593 die_pipestatus 0 "src_compile failed"
1514 niro 1617 resume_stamp src_compile
1515     step_by_step src_compile
1516 niro 945
1517 niro 1593 # only run checks if requested
1518     if mqueryfeature "!check"
1519     then
1520     echo "!check detected; src_check() will not be run!" | ${SMAGE_LOG_CMD}
1521     else
1522 niro 1617 ( run_resume src_check || src_check ) | ${SMAGE_LOG_CMD}
1523 niro 1593 die_pipestatus 0 "src_check failed"
1524 niro 1617 resume_stamp src_check
1525 niro 1593 fi
1526 niro 1617 step_by_step src_check
1527 niro 945
1528 niro 1593 # build several subpackages
1529     if [[ -n ${SPLIT_PACKAGES} ]]
1530     then
1531     # save bindir & pname
1532     split_save_variables
1533     export SAVED_BINDIR="${BINDIR}"
1534     for subpackage in ${SPLIT_PACKAGES}
1535     do
1536     if typeset -f src_install_${subpackage} > /dev/null
1537     then
1538     # export subpackage bindir
1539     export BINDIR="${SAVED_BINDIR}_${subpackage}"
1540     # export PNAME, several internal function and include
1541     # rely on this variable
1542     export PNAME="${subpackage}"
1543    
1544     echo
1545     echo -en "${COLBLUE}*** ${COLDEFAULT}"
1546     echo -en " Running ${COLGREEN}split src_install()${COLDEFAULT}"
1547     echo -en " for subpkg: ${COLBLUE}${PNAME}${COLDEFAULT}"
1548     echo -e " - basepkg: ${COLBLUE}${SPLIT_PACKAGE_BASE}${COLDEFAULT} ..."
1549    
1550 niro 1617 ( run_resume src_install_${subpackage} || src_install_${subpackage} ) | ${SMAGE_LOG_CMD}
1551 niro 1593 die_pipestatus 0 "src_install_${subpackage} failed"
1552 niro 1617 resume_stamp src_install_${subpackage}
1553     step_by_step src_install_${subpackage}
1554 niro 1593 fi
1555     done
1556     # restore bindir & pname
1557     split_restore_variables
1558     # unset all saved smage variables
1559     split_unset_variables
1560     else
1561 niro 1617 ( run_resume src_install || src_install ) | ${SMAGE_LOG_CMD}
1562 niro 1593 die_pipestatus 0 "src_install failed"
1563 niro 1617 resume_stamp src_install
1564     step_by_step src_install
1565 niro 1593 fi
1566 niro 943 fi
1567 niro 24
1568 niro 1593 # echo for sake of good-looking
1569     echo
1570    
1571 niro 1584 if mqueryfeature "!compressdoc"
1572 niro 24 then
1573 niro 1584 echo -e "!compressdoc detected; documentation will not be compressed ..."
1574 niro 1595 elif mqueryfeature "!pkgbuild"
1575     then
1576     echo "!pkgbuild detected; skipping documentation compression..."
1577 niro 943 else
1578 niro 1584 # compressing doc, info & man files
1579     if [[ -n ${SPLIT_PACKAGES} ]]
1580     then
1581     for subpackage in ${SPLIT_PACKAGES}
1582     do
1583 niro 1617 run_resume mcompressdoc_${subpackage} || mcompressdocs ${BINDIR}_${subpackage}
1584     resume_stamp mcompressdoc_${subpackage}
1585 niro 1584 done
1586     else
1587 niro 1617 run_resume mcompressdoc || mcompressdocs ${BINDIR}
1588     resume_stamp mcompressdoc
1589 niro 1584 fi
1590 niro 24 fi
1591    
1592 niro 1584 if mqueryfeature "!libtool"
1593 niro 1580 then
1594 niro 1595 if mqueryfeature "!pkgbuild"
1595     then
1596     echo "!pkgbuild detected; skipping libtool archive stripping ..."
1597     else
1598 niro 1580 if [[ -n ${SPLIT_PACKAGES} ]]
1599     then
1600     for subpackage in ${SPLIT_PACKAGES}
1601     do
1602     echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives for '${subpackage}' ...${COLDEFAULT}"
1603 niro 1617 run_resume mstriplibtoolarchive_${subpackage} || mstriplibtoolarchive ${BINDIR}_${subpackage}
1604     resume_stamp mstriplibtoolarchive_${subpackage}
1605 niro 1580 done
1606     else
1607 niro 1617 echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives ...${COLDEFAULT}"
1608     run_resume mstriplibtoolarchive || mstriplibtoolarchive ${BINDIR}
1609     resume_stamp mstriplibtoolarchive
1610 niro 1580 fi
1611 niro 1595 fi
1612 niro 1580 fi
1613 niro 24
1614 niro 1584 if mqueryfeature "purge"
1615 niro 1580 then
1616 niro 1595 if mqueryfeature "!pkgbuild"
1617     then
1618     echo "!pkgbuild detected; skipping file purgation..."
1619     else
1620 niro 1580 if [[ -n ${SPLIT_PACKAGES} ]]
1621     then
1622     for subpackage in ${SPLIT_PACKAGES}
1623     do
1624     echo -e "${COLBLUE}===${COLGREEN} purging all purge targets in '${subpackage}' ...${COLDEFAULT}"
1625 niro 1617 run_resume mpurgetargets_${subpackage} || mpurgetargets ${BINDIR}_${subpackage}
1626     resume_stamp mpurgetargets_${subpackage}
1627 niro 1580 done
1628     else
1629 niro 1617 echo -e "${COLBLUE}===${COLGREEN} purging all purge targets ...${COLDEFAULT}"
1630     run_resume mpurgetargets || mpurgetargets ${BINDIR}
1631     resume_stamp mpurgetargets
1632 niro 1580 fi
1633 niro 1595 fi
1634 niro 1580 fi
1635    
1636 niro 79 # stripping all bins and libs
1637 niro 1584 if mqueryfeature "!strip"
1638     then
1639     echo -e "!strip detected; Package will not be stripped ..."
1640 niro 1595 elif mqueryfeature "!pkgbuild"
1641     then
1642     echo "!pkgbuild detected; skipping stripping of the package ..."
1643 niro 1584 else
1644 niro 1595 if [[ -n ${SPLIT_PACKAGES} ]]
1645     then
1646     for subpackage in ${SPLIT_PACKAGES}
1647     do
1648     echo -e "${COLBLUE}===${COLGREEN} stripping binaries for '${subpackage}' ...${COLDEFAULT}"
1649 niro 1617 run_resume mstripbins_${subpackage} || mstripbins ${BINDIR}_${subpackage}
1650     resume_stamp mstripbins_${subpackage}
1651 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries for '${subpackage}' ...${COLDEFAULT}"
1652 niro 1617 run_resume mstriplibs_${subpackage} || mstriplibs ${BINDIR}_${subpackage}
1653     resume_stamp mstriplibs_${subpackage}
1654 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping static libraries for '${subpackage}' ...${COLDEFAULT}"
1655 niro 1617 run_resume mstripstatic_${subpackage} || mstripstatic ${BINDIR}_${subpackage}
1656     resume_stamp mstripstatic_${subpackage}
1657 niro 1595 done
1658     else
1659     echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}"
1660 niro 1617 run_resume mstripbins || mstripbins ${BINDIR}
1661     resume_stamp mstripbins
1662 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries ...${COLDEFAULT}"
1663 niro 1617 run_resume mstriplibs || mstriplibs ${BINDIR}
1664     resume_stamp mstriplibs
1665 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping static libraries ...${COLDEFAULT}"
1666 niro 1617 run_resume mstripstatic || mstripstatic ${BINDIR}
1667     resume_stamp mstripstatic
1668 niro 1595 fi
1669 niro 1584 fi
1670 niro 79
1671 niro 1595 if mqueryfeature "!pkgbuild"
1672 niro 1584 then
1673 niro 1595 echo -e "!pkgbuild detected; Package will not be build ..."
1674 niro 1584 else
1675 niro 306 # build several targets
1676 niro 943 if [[ -n ${MAGE_TARGETS} ]]
1677 niro 192 then
1678     for target in ${MAGE_TARGETS}
1679     do
1680 niro 1573 # check if a special target_pkgbuild exists
1681 niro 192 if typeset -f ${target}_pkgbuild > /dev/null
1682     then
1683     # run it
1684 niro 1617 run_resume ${target}_pkgbuild || ${target}_pkgbuild
1685     resume_stamp ${target}_pkgbuild
1686 niro 192 fi
1687     # now create the target package
1688 niro 1617 run_resume pkg_builddir_${target} || ${MLIBDIR}/pkgbuild_dir.sh \
1689 niro 255 "${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD}" \
1690 niro 192 ${BINDIR} || die "target: ${target} package-build failed"
1691 niro 1617 resume_stamp pkg_builddir_${target}
1692 niro 255
1693     # build pkg-md5-sum if requested
1694 niro 1617 run_resume md5sum_${target} || generate_package_md5sum \
1695 niro 255 --pcat "${PCATEGORIE}" \
1696     --pname "${PNAME}" \
1697     --pver "${PVER}" \
1698     --pbuild "${PBUILD}" \
1699     --parch "${ARCH}" \
1700     --target "${target}"
1701 niro 1617 resume_stamp md5sum_${target}
1702 niro 255
1703 niro 439 echo -e "${COLGREEN}\nPackage ${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD} successfully builded.\n${COLDEFAULT}"
1704 niro 192 done
1705 niro 943
1706     # build several subpackages
1707     elif [[ -n ${SPLIT_PACKAGES} ]]
1708     then
1709     split_save_variables
1710     for subpackage in ${SPLIT_PACKAGES}
1711     do
1712     # get the right variables for the split
1713     export PNAME="${subpackage}"
1714     split_info_${PNAME}
1715    
1716 niro 1595 # jump to next one if !pkgbuild is set in split_info
1717     mqueryfeature "!pkgbuild" && continue
1718 niro 947
1719 niro 943 # check if an special subpackage_pkgbuild exists
1720     if typeset -f ${PNAME}_pkgbuild > /dev/null
1721     then
1722     # run it
1723 niro 1617 run_resume ${PNAME}_pkgbuild || ${PNAME}_pkgbuild
1724     resume_stamp ${PNAME}_pkgbuild
1725 niro 943 fi
1726     # now create the target package
1727 niro 1617 run_resume pkg_builddir_${PNAME} || ${MLIBDIR}/pkgbuild_dir.sh \
1728 niro 943 "${PNAME}-${PVER}-${ARCH}-${PBUILD}" \
1729     "${BINDIR}_${PNAME}" || die "split_package: ${PNAME} package-build failed"
1730 niro 1617 resume_stamp pkg_builddir_${PNAME}
1731 niro 943
1732     # build pkg-md5-sum if requested
1733 niro 1617 run_resume md5sum_${PNAME} || generate_package_md5sum \
1734 niro 943 --pcat "${PCATEGORIE}" \
1735     --pname "${PNAME}" \
1736     --pver "${PVER}" \
1737     --pbuild "${PBUILD}" \
1738     --parch "${ARCH}"
1739 niro 1617 resume_stamp md5sum_${PNAME}
1740 niro 943
1741     echo -e "${COLGREEN}\nPackage ${PNAME}-${PVER}-${ARCH}-${PBUILD} successfully builded.\n${COLDEFAULT}"
1742 niro 951
1743     # restore smage environment
1744     split_restore_variables
1745 niro 943 done
1746 niro 951 # unset all saved smage variables
1747     split_unset_variables
1748 niro 943
1749 niro 192 else
1750 niro 1617 run_resume pkg_builddir || ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
1751     resume_stamp pkg_builddir
1752 niro 255
1753     # build pkg-md5-sum if requested
1754 niro 1617 run_resume md5sum || generate_package_md5sum \
1755 niro 255 --pcat "${PCATEGORIE}" \
1756     --pname "${PNAME}" \
1757     --pver "${PVER}" \
1758     --pbuild "${PBUILD}" \
1759     --parch "${ARCH}"
1760 niro 1617 resume_stamp md5sum
1761 niro 255
1762 niro 439 echo -e "${COLGREEN}\nPackage ${PKGNAME} successfully builded.\n${COLDEFAULT}"
1763 niro 192 fi
1764 niro 403
1765     # build src-pkg-tarball if requested
1766 niro 1617 if mqueryfeature "srcpkg"
1767     then
1768 niro 1618 run_resume srcpkgbuild || source_pkg_build ${SMAGENAME}
1769 niro 1617 resume_stamp srcpkgbuild
1770     fi
1771 niro 1584 fi
1772 niro 24
1773 niro 1584 if mqueryfeature "buildlog"
1774 niro 875 then
1775     bzip2 -9f /var/log/smage/${PKGNAME}.log
1776     else
1777     [[ -f /var/log/smage/${PKGNAME}.log ]] && rm /var/log/smage/${PKGNAME}.log
1778     fi
1779    
1780 niro 24 xtitleclean

Properties

Name Value
svn:executable *