Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3034 - (hide annotations) (download) (as text)
Fri Jun 30 12:09:53 2017 UTC (6 years, 10 months ago) by niro
File MIME type: application/x-sh
File size: 21894 byte(s)
-updated and hardened default compiler flags, not using -mtune= but always 'generic
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 2805 SMAGE_LOG_CMD="tee -a ${SMAGELOGDIR}/${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 2744 export -f pkg_setup || die "pkg_setup export failed"
285 niro 24 export -f src_prepare || die "src_prepare export failed"
286     export -f src_compile || die "src_compile export failed"
287 niro 1575 export -f src_check || die "src_check export failed"
288 niro 24 export -f src_install || die "src_install export failed"
289    
290 niro 192 # fixes some compile issues
291 niro 24 export CHOST="${CHOST}" || die "CHOST export failed"
292 niro 3034 export CPPFLAGS="${CPPFLAGS}" || die "CPPFLAGS export failed"
293 niro 24 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 niro 2805 [[ ! -d ${SMAGELOGDIR} ]] && install -d ${SMAGELOGDIR}
321     if [[ -f ${SMAGELOGDIR}/${PKGNAME}.log.bz2 ]]
322 niro 1617 then
323 niro 2805 bunzip2 -f ${SMAGELOGDIR}/${PKGNAME}.log.bz2
324 niro 1617 fi
325 niro 2805 echo -e "### Resume started on $(date) ###\n" >> ${SMAGELOGDIR}/${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 niro 2805 [[ ! -d ${SMAGELOGDIR} ]] && install -d ${SMAGELOGDIR}
362     echo -e "### Build started on $(date) ###\n" > ${SMAGELOGDIR}/${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 2863 ( run_resume pkg_setup || pkg_setup ) |& ${SMAGE_LOG_CMD}
372 niro 2744 die_pipestatus 0 "pkg_setup failed"
373     resume_stamp pkg_setup
374     step_by_step pkg_setup
375 niro 2742
376 niro 2863 ( run_resume src_prepare || src_prepare ) |& ${SMAGE_LOG_CMD}
377 niro 1593 die_pipestatus 0 "src_prepare failed"
378 niro 1617 resume_stamp src_prepare
379     step_by_step src_prepare
380 niro 1575
381 niro 2863 ( run_resume src_compile || src_compile ) |& ${SMAGE_LOG_CMD}
382 niro 1593 die_pipestatus 0 "src_compile failed"
383 niro 1617 resume_stamp src_compile
384     step_by_step src_compile
385 niro 945
386 niro 1593 # only run checks if requested
387     if mqueryfeature "!check"
388     then
389 niro 2863 echo "!check detected; src_check() will not be run!" |& ${SMAGE_LOG_CMD}
390 niro 1593 else
391 niro 2863 ( run_resume src_check || src_check ) |& ${SMAGE_LOG_CMD}
392 niro 1593 die_pipestatus 0 "src_check failed"
393 niro 1617 resume_stamp src_check
394 niro 1593 fi
395 niro 1617 step_by_step src_check
396 niro 945
397 niro 1593 # build several subpackages
398     if [[ -n ${SPLIT_PACKAGES} ]]
399     then
400     # save bindir & pname
401     split_save_variables
402     export SAVED_BINDIR="${BINDIR}"
403     for subpackage in ${SPLIT_PACKAGES}
404     do
405 niro 1784 split_info_${subpackage}
406     if [[ ${PKGTYPE} = virtual ]]
407 niro 1593 then
408 niro 2042 echo
409     echo -en "${COLBLUE}*** ${COLDEFAULT}"
410     echo -en "Virtual package detected"
411     echo -en " for subpkg: ${COLBLUE}${PNAME}${COLDEFAULT}"
412     echo -e " - basepkg: ${COLBLUE}${SPLIT_PACKAGE_BASE}${COLDEFAULT} ..."
413    
414 niro 1784 echo "virtual package detected; nothing will be build ..."
415     # automatically set !pkgbuild here too
416     msetfeature "!pkgbuild"
417     else
418     if typeset -f src_install_${subpackage} > /dev/null
419     then
420     # export subpackage bindir
421     export BINDIR="${SAVED_BINDIR}_${subpackage}"
422     # export PNAME, several internal function and include
423     # rely on this variable
424     export PNAME="${subpackage}"
425 niro 1593
426 niro 1784 echo
427     echo -en "${COLBLUE}*** ${COLDEFAULT}"
428 niro 2042 echo -en "Running ${COLGREEN}split src_install()${COLDEFAULT}"
429 niro 1784 echo -en " for subpkg: ${COLBLUE}${PNAME}${COLDEFAULT}"
430     echo -e " - basepkg: ${COLBLUE}${SPLIT_PACKAGE_BASE}${COLDEFAULT} ..."
431 niro 1593
432 niro 2863 ( run_resume src_install_${subpackage} || src_install_${subpackage} ) |& ${SMAGE_LOG_CMD}
433 niro 1784 die_pipestatus 0 "src_install_${subpackage} failed"
434     resume_stamp src_install_${subpackage}
435     step_by_step src_install_${subpackage}
436     fi
437 niro 1593 fi
438 niro 2042 # restore smage environment
439     split_restore_variables
440 niro 1593 done
441     # unset all saved smage variables
442     split_unset_variables
443     else
444 niro 2863 ( run_resume src_install || src_install ) |& ${SMAGE_LOG_CMD}
445 niro 1593 die_pipestatus 0 "src_install failed"
446 niro 1617 resume_stamp src_install
447     step_by_step src_install
448 niro 1593 fi
449 niro 943 fi
450 niro 24
451 niro 1593 # echo for sake of good-looking
452     echo
453    
454 niro 1584 if mqueryfeature "!compressdoc"
455 niro 24 then
456 niro 1584 echo -e "!compressdoc detected; documentation will not be compressed ..."
457 niro 1595 elif mqueryfeature "!pkgbuild"
458     then
459     echo "!pkgbuild detected; skipping documentation compression..."
460 niro 943 else
461 niro 1584 # compressing doc, info & man files
462     if [[ -n ${SPLIT_PACKAGES} ]]
463     then
464 niro 2042 # save smage environment
465     split_save_variables
466 niro 1584 for subpackage in ${SPLIT_PACKAGES}
467     do
468 niro 2042 # honor split_info
469     split_info_${subpackage}
470 niro 2043 if [[ ${PKGTYPE} = virtual ]]
471     then
472     # automatically set !pkgbuild here too
473     msetfeature "!pkgbuild"
474     fi
475 niro 2042
476     if mqueryfeature "!compressdoc"
477     then
478     echo -e "!compressdoc detected; documentation of '${subpackage}' will not be compressed ..."
479     elif mqueryfeature "!pkgbuild"
480     then
481     echo "!pkgbuild detected; skipping documentation compression for '${subpackage}' ..."
482     else
483     run_resume post-mcompressdoc_${subpackage} || mcompressdocs ${BINDIR}_${subpackage}
484     resume_stamp post-mcompressdoc_${subpackage}
485     fi
486     # restore smage environment
487     split_restore_variables
488 niro 1584 done
489 niro 2042 # unset saved variables
490     split_unset_variables
491 niro 1584 else
492 niro 1636 run_resume post-mcompressdoc || mcompressdocs ${BINDIR}
493     resume_stamp post-mcompressdoc
494 niro 1584 fi
495 niro 24 fi
496    
497 niro 1584 if mqueryfeature "!libtool"
498 niro 1580 then
499 niro 1595 if mqueryfeature "!pkgbuild"
500     then
501     echo "!pkgbuild detected; skipping libtool archive stripping ..."
502     else
503 niro 1580 if [[ -n ${SPLIT_PACKAGES} ]]
504     then
505 niro 2042 # save smage environment
506     split_save_variables
507 niro 1580 for subpackage in ${SPLIT_PACKAGES}
508     do
509 niro 2042 # honor split_info
510     split_info_${subpackage}
511 niro 2043 if [[ ${PKGTYPE} = virtual ]]
512     then
513     # automatically set !pkgbuild here too
514     msetfeature "!pkgbuild"
515     fi
516 niro 2042
517     if mqueryfeature "!libtool"
518     then
519     if mqueryfeature "!pkgbuild"
520     then
521     echo "!pkgbuild detected; skipping libtool archive stripping for '${subpackage}'..."
522     else
523     echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives for '${subpackage}' ...${COLDEFAULT}"
524     run_resume post-mstriplibtoolarchive_${subpackage} || mstriplibtoolarchive ${BINDIR}_${subpackage}
525     resume_stamp post-mstriplibtoolarchive_${subpackage}
526     fi
527     fi
528    
529     # restore smage environment
530     split_restore_variables
531 niro 1580 done
532 niro 2042 # unset saved variables
533     split_unset_variables
534 niro 1580 else
535 niro 1617 echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives ...${COLDEFAULT}"
536 niro 1636 run_resume post-mstriplibtoolarchive || mstriplibtoolarchive ${BINDIR}
537     resume_stamp post-mstriplibtoolarchive
538 niro 1580 fi
539 niro 1595 fi
540 niro 1580 fi
541 niro 24
542 niro 1584 if mqueryfeature "purge"
543 niro 1580 then
544 niro 1595 if mqueryfeature "!pkgbuild"
545     then
546 niro 2042 echo "!pkgbuild detected; skipping file purgation ..."
547 niro 1595 else
548 niro 1580 if [[ -n ${SPLIT_PACKAGES} ]]
549     then
550 niro 2042 # save smage environment
551     split_save_variables
552 niro 1580 for subpackage in ${SPLIT_PACKAGES}
553     do
554 niro 2042 # honor split_info
555     split_info_${subpackage}
556 niro 2043 if [[ ${PKGTYPE} = virtual ]]
557     then
558     # automatically set !pkgbuild here too
559     msetfeature "!pkgbuild"
560     fi
561 niro 2042
562     if mqueryfeature "purge"
563     then
564     if mqueryfeature "!pkgbuild"
565     then
566     echo "!pkgbuild detected; skipping file purgation for '${subpackage}' ..."
567     else
568     echo -e "${COLBLUE}===${COLGREEN} purging all purge targets in '${subpackage}' ...${COLDEFAULT}"
569     run_resume post-mpurgetargets_${subpackage} || mpurgetargets ${BINDIR}_${subpackage}
570     resume_stamp post-mpurgetargets_${subpackage}
571     fi
572     fi
573    
574     # restore smage environment
575     split_restore_variables
576 niro 1580 done
577 niro 2042 # unset saved variables
578     split_unset_variables
579 niro 1580 else
580 niro 1617 echo -e "${COLBLUE}===${COLGREEN} purging all purge targets ...${COLDEFAULT}"
581 niro 1636 run_resume post-mpurgetargets || mpurgetargets ${BINDIR}
582     resume_stamp post-mpurgetargets
583 niro 1580 fi
584 niro 1595 fi
585 niro 1580 fi
586    
587 niro 79 # stripping all bins and libs
588 niro 1584 if mqueryfeature "!strip"
589     then
590 niro 2042 echo -e "!strip detected; package will not be stripped ..."
591 niro 1595 elif mqueryfeature "!pkgbuild"
592     then
593     echo "!pkgbuild detected; skipping stripping of the package ..."
594 niro 1584 else
595 niro 1595 if [[ -n ${SPLIT_PACKAGES} ]]
596     then
597 niro 2042 # save smage environment
598     split_save_variables
599 niro 1595 for subpackage in ${SPLIT_PACKAGES}
600     do
601 niro 2042 # honor split_info
602     split_info_${subpackage}
603 niro 2043 if [[ ${PKGTYPE} = virtual ]]
604     then
605     # automatically set !pkgbuild here too
606     msetfeature "!pkgbuild"
607     fi
608 niro 2042
609     if mqueryfeature "!strip"
610     then
611     echo -e "!strip detected; package '${subpackage}' will not be stripped ..."
612     elif mqueryfeature "!pkgbuild"
613     then
614     echo "!pkgbuild detected; skipping stripping of the package '${subpackage}' ..."
615     else
616     echo -e "${COLBLUE}===${COLGREEN} stripping binaries for '${subpackage}' ...${COLDEFAULT}"
617     run_resume post-mstripbins_${subpackage} || mstripbins ${BINDIR}_${subpackage}
618     resume_stamp post-mstripbins_${subpackage}
619     echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries for '${subpackage}' ...${COLDEFAULT}"
620     run_resume post-mstriplibs_${subpackage} || mstriplibs ${BINDIR}_${subpackage}
621     resume_stamp post-mstriplibs_${subpackage}
622     echo -e "${COLBLUE}===${COLGREEN} stripping static libraries for '${subpackage}' ...${COLDEFAULT}"
623     run_resume post-mstripstatic_${subpackage} || mstripstatic ${BINDIR}_${subpackage}
624     resume_stamp post-mstripstatic_${subpackage}
625     fi
626    
627     # restore smage environment
628     split_restore_variables
629 niro 1595 done
630 niro 2042 # unset saved variables
631     split_unset_variables
632 niro 1595 else
633     echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}"
634 niro 1636 run_resume post-mstripbins || mstripbins ${BINDIR}
635     resume_stamp post-mstripbins
636 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries ...${COLDEFAULT}"
637 niro 1636 run_resume post-mstriplibs || mstriplibs ${BINDIR}
638     resume_stamp post-mstriplibs
639 niro 1595 echo -e "${COLBLUE}===${COLGREEN} stripping static libraries ...${COLDEFAULT}"
640 niro 1636 run_resume post-mstripstatic || mstripstatic ${BINDIR}
641     resume_stamp post-mstripstatic
642 niro 1595 fi
643 niro 1584 fi
644 niro 79
645 niro 2157 if mqueryfeature "qalint"
646     then
647     if mqueryfeature "!pkgbuild"
648     then
649     echo "!pkgbuild detected; skipping QA lint checks ..."
650     else
651     if [[ -n ${SPLIT_PACKAGES} ]]
652     then
653     # save smage environment
654     split_save_variables
655     for subpackage in ${SPLIT_PACKAGES}
656     do
657     # honor split_info
658     split_info_${subpackage}
659     if [[ ${PKGTYPE} = virtual ]]
660     then
661     # automatically set !pkgbuild here too
662     msetfeature "!pkgbuild"
663     fi
664    
665     if mqueryfeature "qalint"
666     then
667     if mqueryfeature "!pkgbuild"
668     then
669     echo "!pkgbuild detected; skipping QA lint checks for '${subpackage}' ..."
670     else
671     echo -e "${COLBLUE}===${COLGREEN} running QA lint checks for '${subpackage}' ...${COLDEFAULT}"
672     mqalint ${BINDIR}_${subpackage}
673     fi
674     fi
675    
676     # restore smage environment
677     split_restore_variables
678     done
679     # unset saved variables
680     split_unset_variables
681     else
682     echo -e "${COLBLUE}===${COLGREEN} running QA lint checks ...${COLDEFAULT}"
683     mqalint ${BINDIR}
684     fi
685     fi
686     fi
687    
688 niro 1595 if mqueryfeature "!pkgbuild"
689 niro 1584 then
690 niro 1595 echo -e "!pkgbuild detected; Package will not be build ..."
691 niro 1584 else
692 niro 943 # build several subpackages
693 niro 2365 if [[ -n ${SPLIT_PACKAGES} ]]
694 niro 943 then
695     split_save_variables
696     for subpackage in ${SPLIT_PACKAGES}
697     do
698     # get the right variables for the split
699     export PNAME="${subpackage}"
700     split_info_${PNAME}
701 niro 1659 # fix PCATEGORIE -> PCAT
702     if [[ ! -z ${PCATEGORIE} ]]
703     then
704     PCAT="${PCATEGORIE}"
705     unset PCATEGORIE
706     fi
707 niro 2043 if [[ ${PKGTYPE} = virtual ]]
708     then
709     # automatically set !pkgbuild here too
710     msetfeature "!pkgbuild"
711     fi
712 niro 943
713 niro 1595 # jump to next one if !pkgbuild is set in split_info
714 niro 2042 if mqueryfeature "!pkgbuild"
715     then
716     # restore smage environment
717     split_restore_variables
718     continue
719     fi
720 niro 947
721 niro 943 # check if an special subpackage_pkgbuild exists
722     if typeset -f ${PNAME}_pkgbuild > /dev/null
723     then
724     # run it
725 niro 1636 run_resume post-${PNAME}_pkgbuild || ${PNAME}_pkgbuild
726     resume_stamp post-${PNAME}_pkgbuild
727 niro 943 fi
728     # now create the target package
729 niro 1636 run_resume post-pkg_builddir_${PNAME} || ${MLIBDIR}/pkgbuild_dir.sh \
730 niro 1649 "${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}" \
731 niro 943 "${BINDIR}_${PNAME}" || die "split_package: ${PNAME} package-build failed"
732 niro 1636 resume_stamp post-pkg_builddir_${PNAME}
733 niro 943
734     # build pkg-md5-sum if requested
735 niro 1636 run_resume post-md5sum_${PNAME} || generate_package_md5sum \
736 niro 1641 --pcat "${PCAT}" \
737 niro 943 --pname "${PNAME}" \
738     --pver "${PVER}" \
739     --pbuild "${PBUILD}" \
740     --parch "${ARCH}"
741 niro 1636 resume_stamp post-md5sum_${PNAME}
742 niro 943
743 niro 1649 echo -e "${COLGREEN}\nPackage ${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD} successfully builded.\n${COLDEFAULT}"
744 niro 951
745     # restore smage environment
746     split_restore_variables
747 niro 943 done
748 niro 951 # unset all saved smage variables
749     split_unset_variables
750 niro 943
751 niro 192 else
752 niro 1636 run_resume post-pkg_builddir || ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
753     resume_stamp post-pkg_builddir
754 niro 255
755     # build pkg-md5-sum if requested
756 niro 1636 run_resume post-md5sum || generate_package_md5sum \
757 niro 1641 --pcat "${PCAT}" \
758 niro 255 --pname "${PNAME}" \
759     --pver "${PVER}" \
760     --pbuild "${PBUILD}" \
761     --parch "${ARCH}"
762 niro 1636 resume_stamp post-md5sum
763 niro 255
764 niro 439 echo -e "${COLGREEN}\nPackage ${PKGNAME} successfully builded.\n${COLDEFAULT}"
765 niro 192 fi
766 niro 403
767     # build src-pkg-tarball if requested
768 niro 1635 if mqueryfeature "srcpkgbuild"
769 niro 1617 then
770 niro 1636 run_resume post-srcpkgbuild || source_pkg_build ${SMAGENAME}
771     resume_stamp post-srcpkgbuild
772 niro 1617 fi
773 niro 1584 fi
774 niro 24
775 niro 2589 # auto regen mage tree if requested
776     regen_mage_tree
777    
778 niro 1584 if mqueryfeature "buildlog"
779 niro 875 then
780 niro 2805 bzip2 -9f ${SMAGELOGDIR}/${PKGNAME}.log
781 niro 875 else
782 niro 2805 [[ -f ${SMAGELOGDIR}/${PKGNAME}.log ]] && rm ${SMAGELOGDIR}/${PKGNAME}.log
783 niro 875 fi
784    
785 niro 24 xtitleclean

Properties

Name Value
svn:executable *