Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:executable *