Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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