Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:executable *