Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2806 - (hide annotations) (download)
Tue Sep 2 13:55:19 2014 UTC (9 years, 8 months ago) by niro
File size: 22818 byte(s)
-make smage log directory configurable
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 2806 SMAGE_LOG_CMD="tee -a ${SMAGELOGDIR}/${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 2745 export -f pkg_setup || die "pkg_setup export failed"
322 niro 24 export -f src_prepare || die "src_prepare export failed"
323     export -f src_compile || die "src_compile export failed"
324 niro 1575 export -f src_check || die "src_check export failed"
325 niro 24 export -f src_install || die "src_install export failed"
326    
327 niro 192 # fixes some compile issues
328 niro 24 export CHOST="${CHOST}" || die "CHOST export failed"
329     export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
330 niro 1616 if [[ -z ${CXXFLAGS} ]]
331     then
332     export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
333     else
334     export CXXFLAGS="${CXXFLAGS}" || die "CXXFLAGS export failed"
335     fi
336     export LDFLAGS="${LDFLAGS}" || die "LDFLAGS export failed"
337 niro 24 export BINDIR="${BINDIR}" || die "BINDIR export failed"
338     export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
339    
340 niro 192 # setup distcc
341 niro 351 # setup for distcc goes *before* ccache, so ccache comes before distcc in path
342 niro 1584 mqueryfeature "distcc" && setup_distcc_environment
343 niro 24
344 niro 2159 # setup icecc
345     # setup for icecc goes *before* ccache, so ccache comes before icecc in path
346 niro 2172 mqueryfeature "icecc" && setup_icecc_environment
347 niro 2159
348 niro 192 # setup ccache
349 niro 1584 mqueryfeature "ccache" && setup_ccache_environment
350 niro 24
351 niro 1617 if mqueryfeature "resume"
352 niro 24 then
353 niro 1617 echo -e "${COLMAGENTA}Resume requested; continuing previous build${COLDEFAULT}"
354 niro 24
355 niro 1617 # setup build logging
356 niro 2806 [[ ! -d ${SMAGELOGDIR} ]] && install -d ${SMAGELOGDIR}
357     if [[ -f ${SMAGELOGDIR}/${PKGNAME}.log.bz2 ]]
358 niro 1617 then
359 niro 2806 bunzip2 -f ${SMAGELOGDIR}/${PKGNAME}.log.bz2
360 niro 1617 fi
361 niro 2806 echo -e "### Resume started on $(date) ###\n" >> ${SMAGELOGDIR}/${PKGNAME}.log
362 niro 24
363 niro 1617 else
364     # clean up builddir if a previously one exist
365     if [ -d ${BUILDDIR} ]
366     then
367     rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
368     fi
369     install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
370 niro 24
371 niro 1617 # clean up srcdir if a previously unpacked one exist
372     if [ -d ${SRCDIR} ]
373     then
374     rm -rf ${SRCDIR}
375     fi
376    
377     # clean up bindir if a previous build exist or create a new one
378     if [ -d ${BINDIR} ]
379     then
380     rm -rf ${BINDIR}
381     fi
382     install -d ${BINDIR} || die "couldn't create \$BINDIR."
383    
384     # clean up package temp dir if a previous build exist
385     if [ -d ${BUILDDIR}/${PKGNAME} ]
386     then
387     rm -rf ${BUILDDIR}/${PKGNAME}
388     fi
389    
390 niro 1621 # clean up stamps dir
391     if [ -d ${BUILDDIR}/.stamps ]
392     then
393     rm -rf ${BUILDDIR}/.stamps
394     fi
395    
396 niro 1617 # setup build logging
397 niro 2806 [[ ! -d ${SMAGELOGDIR} ]] && install -d ${SMAGELOGDIR}
398     echo -e "### Build started on $(date) ###\n" > ${SMAGELOGDIR}/${PKGNAME}.log
399 niro 24 fi
400    
401 niro 1593 if [[ ${PKGTYPE} = virtual ]]
402 niro 1575 then
403 niro 1593 echo "virtual package detected; nothing will be build ..."
404     # automatically set !pkgbuild here too
405     msetfeature "!pkgbuild"
406 niro 1575 else
407 niro 2745 ( run_resume pkg_setup || pkg_setup ) | ${SMAGE_LOG_CMD}
408     die_pipestatus 0 "pkg_setup failed"
409     resume_stamp pkg_setup
410     step_by_step pkg_setup
411 niro 2743
412 niro 1617 ( run_resume src_prepare || src_prepare ) | ${SMAGE_LOG_CMD}
413 niro 1593 die_pipestatus 0 "src_prepare failed"
414 niro 1617 resume_stamp src_prepare
415     step_by_step src_prepare
416 niro 1575
417 niro 1617 ( run_resume src_compile || src_compile ) | ${SMAGE_LOG_CMD}
418 niro 1593 die_pipestatus 0 "src_compile failed"
419 niro 1617 resume_stamp src_compile
420     step_by_step src_compile
421 niro 945
422 niro 1593 # only run checks if requested
423     if mqueryfeature "!check"
424     then
425     echo "!check detected; src_check() will not be run!" | ${SMAGE_LOG_CMD}
426     else
427 niro 1617 ( run_resume src_check || src_check ) | ${SMAGE_LOG_CMD}
428 niro 1593 die_pipestatus 0 "src_check failed"
429 niro 1617 resume_stamp src_check
430 niro 1593 fi
431 niro 1617 step_by_step src_check
432 niro 945
433 niro 1593 # build several subpackages
434     if [[ -n ${SPLIT_PACKAGES} ]]
435     then
436     # save bindir & pname
437     split_save_variables
438     export SAVED_BINDIR="${BINDIR}"
439     for subpackage in ${SPLIT_PACKAGES}
440     do
441 niro 1784 split_info_${subpackage}
442     if [[ ${PKGTYPE} = virtual ]]
443 niro 1593 then
444 niro 2042 echo
445     echo -en "${COLBLUE}*** ${COLDEFAULT}"
446     echo -en "Virtual package detected"
447     echo -en " for subpkg: ${COLBLUE}${PNAME}${COLDEFAULT}"
448     echo -e " - basepkg: ${COLBLUE}${SPLIT_PACKAGE_BASE}${COLDEFAULT} ..."
449    
450 niro 1784 echo "virtual package detected; nothing will be build ..."
451     # automatically set !pkgbuild here too
452     msetfeature "!pkgbuild"
453     else
454     if typeset -f src_install_${subpackage} > /dev/null
455     then
456     # export subpackage bindir
457     export BINDIR="${SAVED_BINDIR}_${subpackage}"
458     # export PNAME, several internal function and include
459     # rely on this variable
460     export PNAME="${subpackage}"
461 niro 1593
462 niro 1784 echo
463     echo -en "${COLBLUE}*** ${COLDEFAULT}"
464 niro 2042 echo -en "Running ${COLGREEN}split src_install()${COLDEFAULT}"
465 niro 1784 echo -en " for subpkg: ${COLBLUE}${PNAME}${COLDEFAULT}"
466     echo -e " - basepkg: ${COLBLUE}${SPLIT_PACKAGE_BASE}${COLDEFAULT} ..."
467 niro 1593
468 niro 1784 ( run_resume src_install_${subpackage} || src_install_${subpackage} ) | ${SMAGE_LOG_CMD}
469     die_pipestatus 0 "src_install_${subpackage} failed"
470     resume_stamp src_install_${subpackage}
471     step_by_step src_install_${subpackage}
472     fi
473 niro 1593 fi
474 niro 2042 # restore smage environment
475     split_restore_variables
476 niro 1593 done
477     # unset all saved smage variables
478     split_unset_variables
479     else
480 niro 1617 ( run_resume src_install || src_install ) | ${SMAGE_LOG_CMD}
481 niro 1593 die_pipestatus 0 "src_install failed"
482 niro 1617 resume_stamp src_install
483     step_by_step src_install
484 niro 1593 fi
485 niro 943 fi
486 niro 24
487 niro 1593 # echo for sake of good-looking
488     echo
489    
490 niro 1584 if mqueryfeature "!compressdoc"
491 niro 24 then
492 niro 1584 echo -e "!compressdoc detected; documentation will not be compressed ..."
493 niro 1595 elif mqueryfeature "!pkgbuild"
494     then
495     echo "!pkgbuild detected; skipping documentation compression..."
496 niro 943 else
497 niro 1584 # compressing doc, info & man files
498     if [[ -n ${SPLIT_PACKAGES} ]]
499     then
500 niro 2042 # save smage environment
501     split_save_variables
502 niro 1584 for subpackage in ${SPLIT_PACKAGES}
503     do
504 niro 2042 # honor split_info
505     split_info_${subpackage}
506 niro 2043 if [[ ${PKGTYPE} = virtual ]]
507     then
508     # automatically set !pkgbuild here too
509     msetfeature "!pkgbuild"
510     fi
511 niro 2042
512     if mqueryfeature "!compressdoc"
513     then
514     echo -e "!compressdoc detected; documentation of '${subpackage}' will not be compressed ..."
515     elif mqueryfeature "!pkgbuild"
516     then
517 niro 2631 echo "!pkgbuild detected; skipping documentation compression for '${subpackage}' ..."
518 niro 2042 else
519 niro 2631 run_resume post-mcompressdoc_${subpackage} || mcompressdocs ${BINDIR}_${subpackage}
520     resume_stamp post-mcompressdoc_${subpackage}
521 niro 2042 fi
522     # restore smage environment
523     split_restore_variables
524 niro 1584 done
525 niro 2042 # unset saved variables
526     split_unset_variables
527 niro 1584 else
528 niro 1636 run_resume post-mcompressdoc || mcompressdocs ${BINDIR}
529     resume_stamp post-mcompressdoc
530 niro 1584 fi
531 niro 24 fi
532    
533 niro 1584 if mqueryfeature "!libtool"
534 niro 1580 then
535 niro 1595 if mqueryfeature "!pkgbuild"
536     then
537     echo "!pkgbuild detected; skipping libtool archive stripping ..."
538     else
539 niro 1580 if [[ -n ${SPLIT_PACKAGES} ]]
540     then
541 niro 2042 # save smage environment
542     split_save_variables
543 niro 1580 for subpackage in ${SPLIT_PACKAGES}
544     do
545 niro 2042 # honor split_info
546     split_info_${subpackage}
547 niro 2043 if [[ ${PKGTYPE} = virtual ]]
548     then
549     # automatically set !pkgbuild here too
550     msetfeature "!pkgbuild"
551     fi
552 niro 2042
553     if mqueryfeature "!libtool"
554     then
555     if mqueryfeature "!pkgbuild"
556     then
557     echo "!pkgbuild detected; skipping libtool archive stripping for '${subpackage}'..."
558     else
559     echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives for '${subpackage}' ...${COLDEFAULT}"
560     run_resume post-mstriplibtoolarchive_${subpackage} || mstriplibtoolarchive ${BINDIR}_${subpackage}
561     resume_stamp post-mstriplibtoolarchive_${subpackage}
562     fi
563     fi
564    
565     # restore smage environment
566     split_restore_variables
567 niro 1580 done
568 niro 2042 # unset saved variables
569     split_unset_variables
570 niro 1580 else
571 niro 1617 echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives ...${COLDEFAULT}"
572 niro 1636 run_resume post-mstriplibtoolarchive || mstriplibtoolarchive ${BINDIR}
573     resume_stamp post-mstriplibtoolarchive
574 niro 1580 fi
575 niro 1595 fi
576 niro 1580 fi
577 niro 24
578 niro 1584 if mqueryfeature "purge"
579 niro 1580 then
580 niro 1595 if mqueryfeature "!pkgbuild"
581     then
582 niro 2042 echo "!pkgbuild detected; skipping file purgation ..."
583 niro 1595 else
584 niro 1580 if [[ -n ${SPLIT_PACKAGES} ]]
585     then
586 niro 2042 # save smage environment
587     split_save_variables
588 niro 1580 for subpackage in ${SPLIT_PACKAGES}
589     do
590 niro 2042 # honor split_info
591     split_info_${subpackage}
592 niro 2043 if [[ ${PKGTYPE} = virtual ]]
593     then
594     # automatically set !pkgbuild here too
595     msetfeature "!pkgbuild"
596     fi
597 niro 2042
598     if mqueryfeature "purge"
599     then
600     if mqueryfeature "!pkgbuild"
601     then
602     echo "!pkgbuild detected; skipping file purgation for '${subpackage}' ..."
603     else
604     echo -e "${COLBLUE}===${COLGREEN} purging all purge targets in '${subpackage}' ...${COLDEFAULT}"
605     run_resume post-mpurgetargets_${subpackage} || mpurgetargets ${BINDIR}_${subpackage}
606     resume_stamp post-mpurgetargets_${subpackage}
607     fi
608     fi
609    
610     # restore smage environment
611     split_restore_variables
612 niro 1580 done
613 niro 2042 # unset saved variables
614     split_unset_variables
615 niro 1580 else
616 niro 1617 echo -e "${COLBLUE}===${COLGREEN} purging all purge targets ...${COLDEFAULT}"
617 niro 1636 run_resume post-mpurgetargets || mpurgetargets ${BINDIR}
618     resume_stamp post-mpurgetargets
619 niro 1580 fi
620 niro 1595 fi
621 niro 1580 fi
622    
623 niro 79 # stripping all bins and libs
624 niro 1584 if mqueryfeature "!strip"
625     then
626 niro 2042 echo -e "!strip detected; package will not be stripped ..."
627 niro 1595 elif mqueryfeature "!pkgbuild"
628     then
629     echo "!pkgbuild detected; skipping stripping of the package ..."
630 niro 1584 else
631 niro 1595 if [[ -n ${SPLIT_PACKAGES} ]]
632     then
633 niro 2042 # save smage environment
634     split_save_variables
635 niro 1595 for subpackage in ${SPLIT_PACKAGES}
636     do
637 niro 2042 # honor split_info
638     split_info_${subpackage}
639 niro 2043 if [[ ${PKGTYPE} = virtual ]]
640     then
641     # automatically set !pkgbuild here too
642     msetfeature "!pkgbuild"
643     fi
644 niro 2042
645     if mqueryfeature "!strip"
646     then
647     echo -e "!strip detected; package '${subpackage}' will not be stripped ..."
648     elif mqueryfeature "!pkgbuild"
649     then
650     echo "!pkgbuild detected; skipping stripping of the package '${subpackage}' ..."
651     else
652     echo -e "${COLBLUE}===${COLGREEN} stripping binaries for '${subpackage}' ...${COLDEFAULT}"
653     run_resume post-mstripbins_${subpackage} || mstripbins ${BINDIR}_${subpackage}
654     resume_stamp post-mstripbins_${subpackage}
655     echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries for '${subpackage}' ...${COLDEFAULT}"
656     run_resume post-mstriplibs_${subpackage} || mstriplibs ${BINDIR}_${subpackage}
657     resume_stamp post-mstriplibs_${subpackage}
658     echo -e "${COLBLUE}===${COLGREEN} stripping static libraries for '${subpackage}' ...${COLDEFAULT}"
659     run_resume post-mstripstatic_${subpackage} || mstripstatic ${BINDIR}_${subpackage}
660     resume_stamp post-mstripstatic_${subpackage}
661     fi
662    
663     # restore smage environment
664     split_restore_variables
665 niro 1595 done
666 niro 2042 # unset saved variables
667     split_unset_variables
668 niro 1595 else
669     echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}"
670 niro 1636 run_resume post-mstripbins || mstripbins ${BINDIR}
671     resume_stamp post-mstripbins
672 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries ...${COLDEFAULT}"
673 niro 1636 run_resume post-mstriplibs || mstriplibs ${BINDIR}
674     resume_stamp post-mstriplibs
675 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping static libraries ...${COLDEFAULT}"
676 niro 1636 run_resume post-mstripstatic || mstripstatic ${BINDIR}
677     resume_stamp post-mstripstatic
678 niro 1595 fi
679 niro 1584 fi
680 niro 79
681 niro 2157 if mqueryfeature "qalint"
682     then
683     if mqueryfeature "!pkgbuild"
684     then
685     echo "!pkgbuild detected; skipping QA lint checks ..."
686     else
687     if [[ -n ${SPLIT_PACKAGES} ]]
688     then
689     # save smage environment
690     split_save_variables
691     for subpackage in ${SPLIT_PACKAGES}
692     do
693     # honor split_info
694     split_info_${subpackage}
695     if [[ ${PKGTYPE} = virtual ]]
696     then
697     # automatically set !pkgbuild here too
698     msetfeature "!pkgbuild"
699     fi
700    
701     if mqueryfeature "qalint"
702     then
703     if mqueryfeature "!pkgbuild"
704     then
705     echo "!pkgbuild detected; skipping QA lint checks for '${subpackage}' ..."
706     else
707     echo -e "${COLBLUE}===${COLGREEN} running QA lint checks for '${subpackage}' ...${COLDEFAULT}"
708     mqalint ${BINDIR}_${subpackage}
709     fi
710     fi
711    
712     # restore smage environment
713     split_restore_variables
714     done
715     # unset saved variables
716     split_unset_variables
717     else
718     echo -e "${COLBLUE}===${COLGREEN} running QA lint checks ...${COLDEFAULT}"
719     mqalint ${BINDIR}
720     fi
721     fi
722     fi
723    
724 niro 1595 if mqueryfeature "!pkgbuild"
725 niro 1584 then
726 niro 1595 echo -e "!pkgbuild detected; Package will not be build ..."
727 niro 1584 else
728 niro 943 # build several subpackages
729 niro 2365 if [[ -n ${SPLIT_PACKAGES} ]]
730 niro 943 then
731     split_save_variables
732     for subpackage in ${SPLIT_PACKAGES}
733     do
734     # get the right variables for the split
735     export PNAME="${subpackage}"
736     split_info_${PNAME}
737 niro 1659 # fix PCATEGORIE -> PCAT
738     if [[ ! -z ${PCATEGORIE} ]]
739     then
740     PCAT="${PCATEGORIE}"
741     unset PCATEGORIE
742     fi
743 niro 2043 if [[ ${PKGTYPE} = virtual ]]
744     then
745     # automatically set !pkgbuild here too
746     msetfeature "!pkgbuild"
747     fi
748 niro 943
749 niro 1595 # jump to next one if !pkgbuild is set in split_info
750 niro 2042 if mqueryfeature "!pkgbuild"
751     then
752     # restore smage environment
753     split_restore_variables
754     continue
755     fi
756 niro 947
757 niro 943 # check if an special subpackage_pkgbuild exists
758     if typeset -f ${PNAME}_pkgbuild > /dev/null
759     then
760     # run it
761 niro 1636 run_resume post-${PNAME}_pkgbuild || ${PNAME}_pkgbuild
762     resume_stamp post-${PNAME}_pkgbuild
763 niro 943 fi
764     # now create the target package
765 niro 2631 run_resume post-pkg_builddir_${PNAME} || ${MLIBDIR}/pkgbuild_dir \
766 niro 1649 "${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}" \
767 niro 943 "${BINDIR}_${PNAME}" || die "split_package: ${PNAME} package-build failed"
768 niro 1636 resume_stamp post-pkg_builddir_${PNAME}
769 niro 943
770     # build pkg-md5-sum if requested
771 niro 1636 run_resume post-md5sum_${PNAME} || generate_package_md5sum \
772 niro 1641 --pcat "${PCAT}" \
773 niro 943 --pname "${PNAME}" \
774     --pver "${PVER}" \
775     --pbuild "${PBUILD}" \
776     --parch "${ARCH}"
777 niro 1636 resume_stamp post-md5sum_${PNAME}
778 niro 943
779 niro 1649 echo -e "${COLGREEN}\nPackage ${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD} successfully builded.\n${COLDEFAULT}"
780 niro 951
781     # restore smage environment
782     split_restore_variables
783 niro 943 done
784 niro 951 # unset all saved smage variables
785     split_unset_variables
786 niro 943
787 niro 192 else
788 niro 2631 run_resume post-pkg_builddir || ${MLIBDIR}/pkgbuild_dir ${PKGNAME} ${BINDIR} || die "package-build failed"
789 niro 1636 resume_stamp post-pkg_builddir
790 niro 255
791     # build pkg-md5-sum if requested
792 niro 1636 run_resume post-md5sum || generate_package_md5sum \
793 niro 1641 --pcat "${PCAT}" \
794 niro 255 --pname "${PNAME}" \
795     --pver "${PVER}" \
796     --pbuild "${PBUILD}" \
797     --parch "${ARCH}"
798 niro 1636 resume_stamp post-md5sum
799 niro 255
800 niro 439 echo -e "${COLGREEN}\nPackage ${PKGNAME} successfully builded.\n${COLDEFAULT}"
801 niro 192 fi
802 niro 403
803     # build src-pkg-tarball if requested
804 niro 1635 if mqueryfeature "srcpkgbuild"
805 niro 1617 then
806 niro 1636 run_resume post-srcpkgbuild || source_pkg_build ${SMAGENAME}
807     resume_stamp post-srcpkgbuild
808 niro 1617 fi
809 niro 1584 fi
810 niro 24
811 niro 2590 # auto regen mage tree if requested
812     regen_mage_tree
813    
814 niro 1584 if mqueryfeature "buildlog"
815 niro 875 then
816 niro 2806 bzip2 -9f ${SMAGELOGDIR}/${PKGNAME}.log
817 niro 875 else
818 niro 2806 [[ -f ${SMAGELOGDIR}/${PKGNAME}.log ]] && rm ${SMAGELOGDIR}/${PKGNAME}.log
819 niro 875 fi
820    
821 niro 24 xtitleclean