Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2631 - (hide annotations) (download)
Mon Mar 10 12:15:30 2014 UTC (10 years, 2 months ago) by niro
File size: 22621 byte(s)
-pkgbuild_dir.sh -> pkgbuild_dir
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 2616 # set default variables
11 niro 2615 : ${MAGERC="@@SYSCONFDIR@@/mage.rc"}
12 niro 2616 : ${MLIBDIR="@@MAGELIBDIR@@"}
13 niro 419
14 niro 169 # export default C locale
15     export LC_ALL=C
16    
17 niro 2616 # first of all include common functions
18 niro 2619 source ${MLIBDIR}/common.functions.sh || exit 1
19     source @@SYSCONFDIR@@/mage.rc.global || die "@@SYSCONFDIR@@/mage.rc.global missing."
20     source ${MAGERC} || die "${MAGERC} missing."
21     source ${MLIBDIR}/mage4.functions.sh || die "${MLIBDIR}/mage4.functions.sh missing."
22     source ${MLIBDIR}/smage2.functions.sh || die "${MLIBDIR}/smage2.functions.sh missing."
23 niro 24
24 niro 2209 # export default path
25     export PATH="${PATH}:${MLIBDIR}"
26    
27 niro 2631 print_usage()
28     {
29     echo "Usage: $(basename $0) [option] pkgname ..."
30     echo "Options:"
31     echo "--smage"
32     echo "--src-tarball"
33     echo "--calc"
34     echo "--update"
35     echo "--download"
36     echo "--regen"
37     echo "--create-src-tarball"
38     echo "--resume"
39     echo
40     echo "Environment variables::"
41     echo " NOCOLORS=true $(basename $0) [src]install PACKAGE"
42     echo " Disables all colors in the messages."
43     echo
44     }
45    
46     # very basic getops
47     for i in $*
48     do
49     case $1 in
50     --smage|*.${SMAGESUFFIX}) shift; SMAGENAME="$1" ;;
51     --src-tarball) shift; SRCPKGTARBALL="$1" ;;
52     --calc) shift; SMAGENAME="$1" ;;
53     --update) ;;
54     --download) shift; SMAGENAME="$1" ;;
55     --regen) shift; SMAGENAME="$1" ;;
56     --create-src-tarball) shift; SMAGENAME="$1" ;;
57     --resume) ;;
58     esac
59     shift
60     done
61    
62 niro 1589 ## setup ##
63     SMAGENAME="$1"
64    
65 niro 1639 # expand PKGDIR, BUILDDIR and BINDIR with MROOT
66 niro 347 if [[ -n ${MROOT} ]]
67     then
68     export PKGDIR=${MROOT}/${PKGDIR}
69     export BUILDDIR=${MROOT}/${BUILDDIR}
70     export BINDIR=${MROOT}/${BINDIR}
71     fi
72    
73 niro 59 # print out our version
74     showversion
75     echo
76    
77 niro 1641 if [[ -z ${SMAGENAME} ]]
78 niro 24 then
79     echo "No .smage2 file given. Exiting."
80     echo
81     exit 1
82     fi
83    
84 niro 1584 # load supported mage features
85     load_mage_features
86    
87 niro 192 # updating smage2-scripts
88 niro 306 if [[ $1 = update ]]
89 niro 24 then
90 niro 59 if [ ! -d ${SOURCEDIR} ]
91     then
92     install -d ${SOURCEDIR}
93     fi
94     syncsmage2
95     exit 0
96     fi
97    
98 niro 192 # creates md5sums for smages to given dir
99 niro 306 if [[ $1 = calcmd5 ]]
100 niro 59 then
101 niro 1207 if [ $# -ge 2 ]
102 niro 59 then
103     SMAGENAME="$2"
104     MD5DIR="$3"
105 niro 1207 [[ -z ${MD5DIR} ]] && MD5DIR="$(dirname ${SMAGENAME})/md5"
106    
107 niro 1346 smagesource ${SMAGENAME} || die "download source failed"
108 niro 59
109 niro 66 # overridable sourcedir; must be declared after source of the smage2
110     CALC_SOURCEDIR="${CALC_SOURCEDIR:="${SOURCEDIR}/${PNAME}"}"
111    
112 niro 59 [ -z "${SRC_URI}" ] && die "Nothing declared to calculate."
113    
114     # end of array
115     EOA=${#SRC_URI[*]}
116    
117     [ ! -d ${MD5DIR} ] && install -d ${MD5DIR}
118    
119     # clear md5sum file
120     MY_MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
121     echo -n > ${MY_MD5_FILE}
122    
123     for ((i=0; i < EOA; i++))
124     do
125 niro 66 # url to file
126     my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)"
127    
128     # subdir in sources dir; the my_SRCI_URI file goes to there
129     my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)"
130    
131     # if my_src_uri_dest is not equal my_src_uri; than an other dir is used
132     if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]]
133     then
134     MY_SRC_FILE="${my_SRC_URI_DEST}/$(basename ${SRC_URI[${i}]})"
135     else
136     MY_SRC_FILE="$(basename ${SRC_URI[${i}]})"
137     fi
138    
139 niro 59 if [ -e "${CALC_SOURCEDIR}/${MY_SRC_FILE}" ]
140     then
141     echo "calculating $(basename ${MY_SRC_FILE}) ..."
142     ( cd ${CALC_SOURCEDIR}; md5sum "${MY_SRC_FILE}" ) >> ${MY_MD5_FILE}
143     else
144     echo "WARNING: File '$(basename ${MY_SRC_FILE}) not found in ${CALC_SOURCEDIR}."
145     fi
146 niro 66
147     # unset them to be shure
148     unset my_SRC_URI
149     unset my_SRC_URI_DEST
150     unset my_SRC_URI_MIRROR
151     unset my_SOURCEDIR
152 niro 59 done
153 niro 306
154 niro 59 echo
155     echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
156     echo
157     else
158     echo "Usage: Calculating MD5 Sums:"
159 niro 1207 echo " $(basename $0) calcmd5 /path/to/SMAGENAME [/path/to/MD5DIR]"
160 niro 59 echo
161     echo
162     echo "Export the CALC_SOURCEDIR variable to override current SOURCEDIRs."
163     echo
164     exit 1
165     fi
166 niro 306
167 niro 59 exit 0
168     fi
169    
170 niro 192 # download sources
171 niro 59 if [ "$1" == "download" -a -n "$2" ]
172     then
173 niro 24 if [ ! -d ${SMAGESCRIPTSDIR} ]
174     then
175     install -d ${SMAGESCRIPTSDIR}
176     fi
177 niro 59
178     # get smage
179     SMAGENAME="$2"
180     MD5DIR="$(dirname ${SMAGENAME})/md5"
181 niro 1346 smagesource ${SMAGENAME} || die "download source failed"
182 niro 59
183     download_sources
184 niro 24 exit 0
185     fi
186    
187 niro 202 # regen-mage-tree
188     if [ "$1" == "only-regen-tree" -a -n "$2" ]
189     then
190     # set correct SMAGENAME
191     SMAGENAME="$2"
192     MD5DIR="$(dirname ${SMAGENAME})/md5"
193 niro 1346 smagesource ${SMAGENAME} || die "regen: smage2 not found"
194 niro 202
195     regen_mage_tree
196 niro 255
197 niro 943 # build several subpackages
198 niro 2365 if [[ -n ${SPLIT_PACKAGES} ]]
199 niro 943 then
200     split_save_variables
201 niro 964 for subpackage in ${SPLIT_PACKAGES}
202 niro 943 do
203     # get the right variables for the split
204     export PNAME="${subpackage}"
205     split_info_${subpackage}
206 niro 1659 # fix PCATEGORIE -> PCAT
207     if [[ ! -z ${PCATEGORIE} ]]
208     then
209     PCAT="${PCATEGORIE}"
210     unset PCATEGORIE
211     fi
212 niro 943 # build md5sum for existing packages
213     generate_package_md5sum \
214 niro 1641 --pcat "${PCAT}" \
215 niro 943 --pname "${PNAME}" \
216     --pver "${PVER}" \
217     --pbuild "${PBUILD}" \
218     --parch "${ARCH}"
219 niro 951 # restore smage environment
220     split_restore_variables
221 niro 943 done
222 niro 951 # unset all saved smage variables
223     split_unset_variables
224 niro 943
225 niro 890 else
226     # build md5sum for existing packages
227     generate_package_md5sum \
228 niro 1641 --pcat "${PCAT}" \
229 niro 890 --pname "${PNAME}" \
230     --pver "${PVER}" \
231     --pbuild "${PBUILD}" \
232 niro 943 --parch "${ARCH}"
233 niro 890 fi
234 niro 255
235 niro 202 exit 0
236     fi
237    
238 niro 412 if [ "$1" == "--create-src-tarball" -a -n "$2" ]
239 niro 403 then
240     # set correct SMAGENAME
241     SMAGENAME="$2"
242     MD5DIR="$(dirname ${SMAGENAME})/md5"
243    
244 niro 412 echo -e "${COLGREEN}create-src-tarball called for ${COLBLUE}${SMAGENAME}${COLGREEN} ...${COLDEFAULT}"
245 niro 403
246 niro 1346 smagesource ${SMAGENAME} || die "regen: smage2 not found"
247 niro 403
248     if [[ -d ${SOURCEDIR}/${PNAME} ]]
249     then
250     echo -e "${COLGREEN}Deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
251     rm -rf ${SOURCEDIR}/${PKGNAME}
252     fi
253    
254     download_sources
255     source_pkg_build ${SMAGENAME}
256     exit 0
257     fi
258    
259 niro 406 if [ "$1" == "--src-tarball" -a -n "$2" ] || [ "$1" == "-st" -a -n "$2" ]
260 niro 403 then
261 niro 412 SRCPKGTARBALL="${2}"
262 niro 1584 msetfeature "srcpkgtarball"
263 niro 403
264 niro 412 # abort if given file is not a source pkg
265     [[ ${SRCPKGTARBALL##*.} != ${SRCPKGSUFFIX} ]] && die "${SRCPKGTARBALL} is not a valid src-pkg file."
266    
267     # set correct SMAGENAME; use the one that the src_pkg provide
268     # /path/to/SOURCEDIR/PNAME/SMAGENAME
269     SMAGENAME="${SOURCEDIR}/$(basename ${SRCPKGTARBALL%-*-*})/$(basename ${SRCPKGTARBALL} .${SRCPKGSUFFIX}).${SMAGESUFFIX}"
270    
271 niro 403 echo -e "${COLGREEN}Using src-tarball ${COLBLUE}${SRCPKGTARBALL}${COLGREEN} ...${COLDEFAULT}"
272    
273     [[ ! -d ${SOURCEDIR} ]] && install -d ${SOURCEDIR}
274    
275     # unpack srctarball
276     [[ ! -f ${SRCPKGTARBALL} ]] && die "Error: ${SRCPKGTARBALL} does not exist. Aborting."
277    
278     tar xvjf ${SRCPKGTARBALL} -C ${SOURCEDIR} || die "Error unpackung src-tarball ${SRCPKGTARBALL}"
279 niro 412
280     [[ ! -f ${SMAGENAME} ]] && die "Included smage2 file in src-tarball not found: ${SMAGENAME}"
281 niro 403 fi
282    
283 niro 1617 if [ "$1" == "--resume" -a -n "$2" ]
284     then
285     msetfeature "resume"
286     SMAGENAME="$2"
287     fi
288 niro 403
289 niro 2631 [ ! -e ${MLIBDIR}/pkgbuild_dir ] && die "Error: ${MLIBDIR}/pkgbuild_dir not found. Aborting."
290 niro 306 [ -z "$(basename ${SMAGENAME} | grep .${SMAGESUFFIX})" ] &&
291     die "File '$(basename ${SMAGENAME})' is not a sMage v${SMAGEVERSION} file. Aborting."
292 niro 419 [ -z "${SOURCEDIR}" ] && die "\$SOURCEDIR not found. Please setup your ${MAGERC} correctly."
293     [ -z "${SMAGESCRIPTSDIR}" ] && die "\$SMAGESCRIPTSDIR not found. Please setup your ${MAGERC} correctly."
294     [ -z "${SMAGE2RSYNC}" ] && die "\$SMAGE2RSYNC not found. Please setup your ${MAGERC} correctly."
295     [ -z "${BINDIR}" ] && die "no BINDIR variable found in ${MAGERC}"
296     [ -z "${CHOST}" ] && die "no CHOST variable found in ${MAGERC}"
297     [ -z "${CFLAGS}" ] && die "no CFLAGS variable found in ${MAGERC}"
298     [ -z "${CXXFLAGS}" ] && die "no CXXFLAGS variable found in ${MAGERC}"
299 niro 24
300 niro 1346 smagesource ${SMAGENAME} || die "source failed"
301 niro 1649 PKGNAME="${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}"
302 niro 59 MD5DIR="$(dirname ${SMAGENAME})/md5"
303 niro 941 SMAGE_LOG_CMD="tee -a /var/log/smage/${PKGNAME}.log"
304 niro 24
305     xtitle "Compiling ${PKGNAME}"
306 niro 439 echo -e "${COLGREEN}Compiling ${PKGNAME}${COLDEFAULT}"
307 niro 59
308 niro 1635 if mqueryfeature "srcpkgbuild"
309 niro 403 then
310     if [[ -d ${SOURCEDIR}/${PNAME} ]]
311     then
312 niro 441 echo -e "${COLBLUE}===${COLGREEN} deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
313 niro 408 rm -rf ${SOURCEDIR}/${PNAME}
314 niro 403 fi
315     fi
316    
317 niro 192 # download sources
318 niro 1584 mqueryfeature "srcpkgtarball" || download_sources
319 niro 59
320 niro 192 # fixes some issues with these functions
321 niro 24 export -f src_prepare || die "src_prepare export failed"
322     export -f src_compile || die "src_compile export failed"
323 niro 1575 export -f src_check || die "src_check export failed"
324 niro 24 export -f src_install || die "src_install export failed"
325    
326 niro 192 # fixes some compile issues
327 niro 24 export CHOST="${CHOST}" || die "CHOST export failed"
328     export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
329 niro 1616 if [[ -z ${CXXFLAGS} ]]
330     then
331     export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
332     else
333     export CXXFLAGS="${CXXFLAGS}" || die "CXXFLAGS export failed"
334     fi
335     export LDFLAGS="${LDFLAGS}" || die "LDFLAGS export failed"
336 niro 24 export BINDIR="${BINDIR}" || die "BINDIR export failed"
337     export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
338    
339 niro 192 # setup distcc
340 niro 351 # setup for distcc goes *before* ccache, so ccache comes before distcc in path
341 niro 1584 mqueryfeature "distcc" && setup_distcc_environment
342 niro 24
343 niro 2159 # setup icecc
344     # setup for icecc goes *before* ccache, so ccache comes before icecc in path
345 niro 2172 mqueryfeature "icecc" && setup_icecc_environment
346 niro 2159
347 niro 192 # setup ccache
348 niro 1584 mqueryfeature "ccache" && setup_ccache_environment
349 niro 24
350 niro 1617 if mqueryfeature "resume"
351 niro 24 then
352 niro 1617 echo -e "${COLMAGENTA}Resume requested; continuing previous build${COLDEFAULT}"
353 niro 24
354 niro 1617 # setup build logging
355     [[ ! -d /var/log/smage ]] && install -d /var/log/smage
356     if [[ -f /var/log/smage/${PKGNAME}.log.bz2 ]]
357     then
358     bunzip2 -f /var/log/smage/${PKGNAME}.log.bz2
359     fi
360     echo -e "### Resume started on $(date) ###\n" >> /var/log/smage/${PKGNAME}.log
361 niro 24
362 niro 1617 else
363     # clean up builddir if a previously one exist
364     if [ -d ${BUILDDIR} ]
365     then
366     rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
367     fi
368     install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
369 niro 24
370 niro 1617 # clean up srcdir if a previously unpacked one exist
371     if [ -d ${SRCDIR} ]
372     then
373     rm -rf ${SRCDIR}
374     fi
375    
376     # clean up bindir if a previous build exist or create a new one
377     if [ -d ${BINDIR} ]
378     then
379     rm -rf ${BINDIR}
380     fi
381     install -d ${BINDIR} || die "couldn't create \$BINDIR."
382    
383     # clean up package temp dir if a previous build exist
384     if [ -d ${BUILDDIR}/${PKGNAME} ]
385     then
386     rm -rf ${BUILDDIR}/${PKGNAME}
387     fi
388    
389 niro 1621 # clean up stamps dir
390     if [ -d ${BUILDDIR}/.stamps ]
391     then
392     rm -rf ${BUILDDIR}/.stamps
393     fi
394    
395 niro 1617 # setup build logging
396     [[ ! -d /var/log/smage ]] && install -d /var/log/smage
397     echo -e "### Build started on $(date) ###\n" > /var/log/smage/${PKGNAME}.log
398 niro 24 fi
399    
400 niro 1593 if [[ ${PKGTYPE} = virtual ]]
401 niro 1575 then
402 niro 1593 echo "virtual package detected; nothing will be build ..."
403     # automatically set !pkgbuild here too
404     msetfeature "!pkgbuild"
405 niro 1575 else
406 niro 1617 ( run_resume src_prepare || src_prepare ) | ${SMAGE_LOG_CMD}
407 niro 1593 die_pipestatus 0 "src_prepare failed"
408 niro 1617 resume_stamp src_prepare
409     step_by_step src_prepare
410 niro 1575
411 niro 1617 ( run_resume src_compile || src_compile ) | ${SMAGE_LOG_CMD}
412 niro 1593 die_pipestatus 0 "src_compile failed"
413 niro 1617 resume_stamp src_compile
414     step_by_step src_compile
415 niro 945
416 niro 1593 # only run checks if requested
417     if mqueryfeature "!check"
418     then
419     echo "!check detected; src_check() will not be run!" | ${SMAGE_LOG_CMD}
420     else
421 niro 1617 ( run_resume src_check || src_check ) | ${SMAGE_LOG_CMD}
422 niro 1593 die_pipestatus 0 "src_check failed"
423 niro 1617 resume_stamp src_check
424 niro 1593 fi
425 niro 1617 step_by_step src_check
426 niro 945
427 niro 1593 # build several subpackages
428     if [[ -n ${SPLIT_PACKAGES} ]]
429     then
430     # save bindir & pname
431     split_save_variables
432     export SAVED_BINDIR="${BINDIR}"
433     for subpackage in ${SPLIT_PACKAGES}
434     do
435 niro 1784 split_info_${subpackage}
436     if [[ ${PKGTYPE} = virtual ]]
437 niro 1593 then
438 niro 2042 echo
439     echo -en "${COLBLUE}*** ${COLDEFAULT}"
440     echo -en "Virtual package detected"
441     echo -en " for subpkg: ${COLBLUE}${PNAME}${COLDEFAULT}"
442     echo -e " - basepkg: ${COLBLUE}${SPLIT_PACKAGE_BASE}${COLDEFAULT} ..."
443    
444 niro 1784 echo "virtual package detected; nothing will be build ..."
445     # automatically set !pkgbuild here too
446     msetfeature "!pkgbuild"
447     else
448     if typeset -f src_install_${subpackage} > /dev/null
449     then
450     # export subpackage bindir
451     export BINDIR="${SAVED_BINDIR}_${subpackage}"
452     # export PNAME, several internal function and include
453     # rely on this variable
454     export PNAME="${subpackage}"
455 niro 1593
456 niro 1784 echo
457     echo -en "${COLBLUE}*** ${COLDEFAULT}"
458 niro 2042 echo -en "Running ${COLGREEN}split src_install()${COLDEFAULT}"
459 niro 1784 echo -en " for subpkg: ${COLBLUE}${PNAME}${COLDEFAULT}"
460     echo -e " - basepkg: ${COLBLUE}${SPLIT_PACKAGE_BASE}${COLDEFAULT} ..."
461 niro 1593
462 niro 1784 ( run_resume src_install_${subpackage} || src_install_${subpackage} ) | ${SMAGE_LOG_CMD}
463     die_pipestatus 0 "src_install_${subpackage} failed"
464     resume_stamp src_install_${subpackage}
465     step_by_step src_install_${subpackage}
466     fi
467 niro 1593 fi
468 niro 2042 # restore smage environment
469     split_restore_variables
470 niro 1593 done
471     # unset all saved smage variables
472     split_unset_variables
473     else
474 niro 1617 ( run_resume src_install || src_install ) | ${SMAGE_LOG_CMD}
475 niro 1593 die_pipestatus 0 "src_install failed"
476 niro 1617 resume_stamp src_install
477     step_by_step src_install
478 niro 1593 fi
479 niro 943 fi
480 niro 24
481 niro 1593 # echo for sake of good-looking
482     echo
483    
484 niro 1584 if mqueryfeature "!compressdoc"
485 niro 24 then
486 niro 1584 echo -e "!compressdoc detected; documentation will not be compressed ..."
487 niro 1595 elif mqueryfeature "!pkgbuild"
488     then
489     echo "!pkgbuild detected; skipping documentation compression..."
490 niro 943 else
491 niro 1584 # compressing doc, info & man files
492     if [[ -n ${SPLIT_PACKAGES} ]]
493     then
494 niro 2042 # save smage environment
495     split_save_variables
496 niro 1584 for subpackage in ${SPLIT_PACKAGES}
497     do
498 niro 2042 # honor split_info
499     split_info_${subpackage}
500 niro 2043 if [[ ${PKGTYPE} = virtual ]]
501     then
502     # automatically set !pkgbuild here too
503     msetfeature "!pkgbuild"
504     fi
505 niro 2042
506     if mqueryfeature "!compressdoc"
507     then
508     echo -e "!compressdoc detected; documentation of '${subpackage}' will not be compressed ..."
509     elif mqueryfeature "!pkgbuild"
510     then
511 niro 2631 echo "!pkgbuild detected; skipping documentation compression for '${subpackage}' ..."
512 niro 2042 else
513 niro 2631 run_resume post-mcompressdoc_${subpackage} || mcompressdocs ${BINDIR}_${subpackage}
514     resume_stamp post-mcompressdoc_${subpackage}
515 niro 2042 fi
516     # restore smage environment
517     split_restore_variables
518 niro 1584 done
519 niro 2042 # unset saved variables
520     split_unset_variables
521 niro 1584 else
522 niro 1636 run_resume post-mcompressdoc || mcompressdocs ${BINDIR}
523     resume_stamp post-mcompressdoc
524 niro 1584 fi
525 niro 24 fi
526    
527 niro 1584 if mqueryfeature "!libtool"
528 niro 1580 then
529 niro 1595 if mqueryfeature "!pkgbuild"
530     then
531     echo "!pkgbuild detected; skipping libtool archive stripping ..."
532     else
533 niro 1580 if [[ -n ${SPLIT_PACKAGES} ]]
534     then
535 niro 2042 # save smage environment
536     split_save_variables
537 niro 1580 for subpackage in ${SPLIT_PACKAGES}
538     do
539 niro 2042 # honor split_info
540     split_info_${subpackage}
541 niro 2043 if [[ ${PKGTYPE} = virtual ]]
542     then
543     # automatically set !pkgbuild here too
544     msetfeature "!pkgbuild"
545     fi
546 niro 2042
547     if mqueryfeature "!libtool"
548     then
549     if mqueryfeature "!pkgbuild"
550     then
551     echo "!pkgbuild detected; skipping libtool archive stripping for '${subpackage}'..."
552     else
553     echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives for '${subpackage}' ...${COLDEFAULT}"
554     run_resume post-mstriplibtoolarchive_${subpackage} || mstriplibtoolarchive ${BINDIR}_${subpackage}
555     resume_stamp post-mstriplibtoolarchive_${subpackage}
556     fi
557     fi
558    
559     # restore smage environment
560     split_restore_variables
561 niro 1580 done
562 niro 2042 # unset saved variables
563     split_unset_variables
564 niro 1580 else
565 niro 1617 echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives ...${COLDEFAULT}"
566 niro 1636 run_resume post-mstriplibtoolarchive || mstriplibtoolarchive ${BINDIR}
567     resume_stamp post-mstriplibtoolarchive
568 niro 1580 fi
569 niro 1595 fi
570 niro 1580 fi
571 niro 24
572 niro 1584 if mqueryfeature "purge"
573 niro 1580 then
574 niro 1595 if mqueryfeature "!pkgbuild"
575     then
576 niro 2042 echo "!pkgbuild detected; skipping file purgation ..."
577 niro 1595 else
578 niro 1580 if [[ -n ${SPLIT_PACKAGES} ]]
579     then
580 niro 2042 # save smage environment
581     split_save_variables
582 niro 1580 for subpackage in ${SPLIT_PACKAGES}
583     do
584 niro 2042 # honor split_info
585     split_info_${subpackage}
586 niro 2043 if [[ ${PKGTYPE} = virtual ]]
587     then
588     # automatically set !pkgbuild here too
589     msetfeature "!pkgbuild"
590     fi
591 niro 2042
592     if mqueryfeature "purge"
593     then
594     if mqueryfeature "!pkgbuild"
595     then
596     echo "!pkgbuild detected; skipping file purgation for '${subpackage}' ..."
597     else
598     echo -e "${COLBLUE}===${COLGREEN} purging all purge targets in '${subpackage}' ...${COLDEFAULT}"
599     run_resume post-mpurgetargets_${subpackage} || mpurgetargets ${BINDIR}_${subpackage}
600     resume_stamp post-mpurgetargets_${subpackage}
601     fi
602     fi
603    
604     # restore smage environment
605     split_restore_variables
606 niro 1580 done
607 niro 2042 # unset saved variables
608     split_unset_variables
609 niro 1580 else
610 niro 1617 echo -e "${COLBLUE}===${COLGREEN} purging all purge targets ...${COLDEFAULT}"
611 niro 1636 run_resume post-mpurgetargets || mpurgetargets ${BINDIR}
612     resume_stamp post-mpurgetargets
613 niro 1580 fi
614 niro 1595 fi
615 niro 1580 fi
616    
617 niro 79 # stripping all bins and libs
618 niro 1584 if mqueryfeature "!strip"
619     then
620 niro 2042 echo -e "!strip detected; package will not be stripped ..."
621 niro 1595 elif mqueryfeature "!pkgbuild"
622     then
623     echo "!pkgbuild detected; skipping stripping of the package ..."
624 niro 1584 else
625 niro 1595 if [[ -n ${SPLIT_PACKAGES} ]]
626     then
627 niro 2042 # save smage environment
628     split_save_variables
629 niro 1595 for subpackage in ${SPLIT_PACKAGES}
630     do
631 niro 2042 # honor split_info
632     split_info_${subpackage}
633 niro 2043 if [[ ${PKGTYPE} = virtual ]]
634     then
635     # automatically set !pkgbuild here too
636     msetfeature "!pkgbuild"
637     fi
638 niro 2042
639     if mqueryfeature "!strip"
640     then
641     echo -e "!strip detected; package '${subpackage}' will not be stripped ..."
642     elif mqueryfeature "!pkgbuild"
643     then
644     echo "!pkgbuild detected; skipping stripping of the package '${subpackage}' ..."
645     else
646     echo -e "${COLBLUE}===${COLGREEN} stripping binaries for '${subpackage}' ...${COLDEFAULT}"
647     run_resume post-mstripbins_${subpackage} || mstripbins ${BINDIR}_${subpackage}
648     resume_stamp post-mstripbins_${subpackage}
649     echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries for '${subpackage}' ...${COLDEFAULT}"
650     run_resume post-mstriplibs_${subpackage} || mstriplibs ${BINDIR}_${subpackage}
651     resume_stamp post-mstriplibs_${subpackage}
652     echo -e "${COLBLUE}===${COLGREEN} stripping static libraries for '${subpackage}' ...${COLDEFAULT}"
653     run_resume post-mstripstatic_${subpackage} || mstripstatic ${BINDIR}_${subpackage}
654     resume_stamp post-mstripstatic_${subpackage}
655     fi
656    
657     # restore smage environment
658     split_restore_variables
659 niro 1595 done
660 niro 2042 # unset saved variables
661     split_unset_variables
662 niro 1595 else
663     echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}"
664 niro 1636 run_resume post-mstripbins || mstripbins ${BINDIR}
665     resume_stamp post-mstripbins
666 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries ...${COLDEFAULT}"
667 niro 1636 run_resume post-mstriplibs || mstriplibs ${BINDIR}
668     resume_stamp post-mstriplibs
669 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping static libraries ...${COLDEFAULT}"
670 niro 1636 run_resume post-mstripstatic || mstripstatic ${BINDIR}
671     resume_stamp post-mstripstatic
672 niro 1595 fi
673 niro 1584 fi
674 niro 79
675 niro 2157 if mqueryfeature "qalint"
676     then
677     if mqueryfeature "!pkgbuild"
678     then
679     echo "!pkgbuild detected; skipping QA lint checks ..."
680     else
681     if [[ -n ${SPLIT_PACKAGES} ]]
682     then
683     # save smage environment
684     split_save_variables
685     for subpackage in ${SPLIT_PACKAGES}
686     do
687     # honor split_info
688     split_info_${subpackage}
689     if [[ ${PKGTYPE} = virtual ]]
690     then
691     # automatically set !pkgbuild here too
692     msetfeature "!pkgbuild"
693     fi
694    
695     if mqueryfeature "qalint"
696     then
697     if mqueryfeature "!pkgbuild"
698     then
699     echo "!pkgbuild detected; skipping QA lint checks for '${subpackage}' ..."
700     else
701     echo -e "${COLBLUE}===${COLGREEN} running QA lint checks for '${subpackage}' ...${COLDEFAULT}"
702     mqalint ${BINDIR}_${subpackage}
703     fi
704     fi
705    
706     # restore smage environment
707     split_restore_variables
708     done
709     # unset saved variables
710     split_unset_variables
711     else
712     echo -e "${COLBLUE}===${COLGREEN} running QA lint checks ...${COLDEFAULT}"
713     mqalint ${BINDIR}
714     fi
715     fi
716     fi
717    
718 niro 1595 if mqueryfeature "!pkgbuild"
719 niro 1584 then
720 niro 1595 echo -e "!pkgbuild detected; Package will not be build ..."
721 niro 1584 else
722 niro 943 # build several subpackages
723 niro 2365 if [[ -n ${SPLIT_PACKAGES} ]]
724 niro 943 then
725     split_save_variables
726     for subpackage in ${SPLIT_PACKAGES}
727     do
728     # get the right variables for the split
729     export PNAME="${subpackage}"
730     split_info_${PNAME}
731 niro 1659 # fix PCATEGORIE -> PCAT
732     if [[ ! -z ${PCATEGORIE} ]]
733     then
734     PCAT="${PCATEGORIE}"
735     unset PCATEGORIE
736     fi
737 niro 2043 if [[ ${PKGTYPE} = virtual ]]
738     then
739     # automatically set !pkgbuild here too
740     msetfeature "!pkgbuild"
741     fi
742 niro 943
743 niro 1595 # jump to next one if !pkgbuild is set in split_info
744 niro 2042 if mqueryfeature "!pkgbuild"
745     then
746     # restore smage environment
747     split_restore_variables
748     continue
749     fi
750 niro 947
751 niro 943 # check if an special subpackage_pkgbuild exists
752     if typeset -f ${PNAME}_pkgbuild > /dev/null
753     then
754     # run it
755 niro 1636 run_resume post-${PNAME}_pkgbuild || ${PNAME}_pkgbuild
756     resume_stamp post-${PNAME}_pkgbuild
757 niro 943 fi
758     # now create the target package
759 niro 2631 run_resume post-pkg_builddir_${PNAME} || ${MLIBDIR}/pkgbuild_dir \
760 niro 1649 "${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}" \
761 niro 943 "${BINDIR}_${PNAME}" || die "split_package: ${PNAME} package-build failed"
762 niro 1636 resume_stamp post-pkg_builddir_${PNAME}
763 niro 943
764     # build pkg-md5-sum if requested
765 niro 1636 run_resume post-md5sum_${PNAME} || generate_package_md5sum \
766 niro 1641 --pcat "${PCAT}" \
767 niro 943 --pname "${PNAME}" \
768     --pver "${PVER}" \
769     --pbuild "${PBUILD}" \
770     --parch "${ARCH}"
771 niro 1636 resume_stamp post-md5sum_${PNAME}
772 niro 943
773 niro 1649 echo -e "${COLGREEN}\nPackage ${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD} successfully builded.\n${COLDEFAULT}"
774 niro 951
775     # restore smage environment
776     split_restore_variables
777 niro 943 done
778 niro 951 # unset all saved smage variables
779     split_unset_variables
780 niro 943
781 niro 192 else
782 niro 2631 run_resume post-pkg_builddir || ${MLIBDIR}/pkgbuild_dir ${PKGNAME} ${BINDIR} || die "package-build failed"
783 niro 1636 resume_stamp post-pkg_builddir
784 niro 255
785     # build pkg-md5-sum if requested
786 niro 1636 run_resume post-md5sum || generate_package_md5sum \
787 niro 1641 --pcat "${PCAT}" \
788 niro 255 --pname "${PNAME}" \
789     --pver "${PVER}" \
790     --pbuild "${PBUILD}" \
791     --parch "${ARCH}"
792 niro 1636 resume_stamp post-md5sum
793 niro 255
794 niro 439 echo -e "${COLGREEN}\nPackage ${PKGNAME} successfully builded.\n${COLDEFAULT}"
795 niro 192 fi
796 niro 403
797     # build src-pkg-tarball if requested
798 niro 1635 if mqueryfeature "srcpkgbuild"
799 niro 1617 then
800 niro 1636 run_resume post-srcpkgbuild || source_pkg_build ${SMAGENAME}
801     resume_stamp post-srcpkgbuild
802 niro 1617 fi
803 niro 1584 fi
804 niro 24
805 niro 2590 # auto regen mage tree if requested
806     regen_mage_tree
807    
808 niro 1584 if mqueryfeature "buildlog"
809 niro 875 then
810     bzip2 -9f /var/log/smage/${PKGNAME}.log
811     else
812     [[ -f /var/log/smage/${PKGNAME}.log ]] && rm /var/log/smage/${PKGNAME}.log
813     fi
814    
815 niro 24 xtitleclean