Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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