Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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