--- trunk/mage/usr/lib/mage/smage2.sh 2007/11/05 16:47:10 597 +++ trunk/mage/usr/lib/mage/smage2.sh 2012/03/12 23:27:53 1784 @@ -1,57 +1,28 @@ #!/bin/bash +# $Id$ # compiles/installs .smage2 source install scripts # needs pkgbuild_dir (mage) -# SMAGE2 -# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.59 2007-11-05 16:47:10 niro Exp $ +# TODO: record dynlib, gz | xz database -#01.10.2004 -# added ccache support -# added distcc support # set default user mage.rc : ${MAGERC="/etc/mage.rc"} -## setup ## -PKGSUFFIX="mpk" -SRCPKGSUFFIX="mpks" -SMAGENAME="$1" -SMAGESUFFIX="smage2" -MLIBDIR=/usr/lib/mage -SMAGEVERSION="$( < ${MLIBDIR}/version)" - -## only for tests -> normally in /etc/rc.d/init.d/functions -COLRED="\033[1;6m\033[31m" -COLGREEN="\033[1;6m\033[32m" -COLYELLOW="\033[1;6m\033[33m" -COLBLUE="\033[1;6m\033[34m" -COLMAGENTA="\033[1;6m\033[35m" -COLWHITE="\033[1;6m\033[37m" -COLGRAY="\033[0;6m\033[37m" -COLBOLD="\033[1m" -COLDEFAULT="\033[0m" - -if [[ ${NOCOLORS} = true ]] -then - COLRED="" - COLGREEN="" - COLYELLOW="" - COLBLUE="" - COLMAGENTA="" - COLWHITE="" - COLGRAY="" - COLBOLD="" - COLDEFAULT="" -fi - # export default C locale export LC_ALL=C source /etc/mage.rc.global source ${MAGERC} +source ${MLIBDIR}/mage4.functions.sh +source ${MLIBDIR}/smage2.functions.sh + +## setup ## +SMAGENAME="$1" +SMAGEVERSION="$(< ${MLIBDIR}/version)" -# set PKGDIR and BUILDDIR and BINDIR to MROOT +# expand PKGDIR, BUILDDIR and BINDIR with MROOT if [[ -n ${MROOT} ]] then export PKGDIR=${MROOT}/${PKGDIR} @@ -59,892 +30,20 @@ export BINDIR=${MROOT}/${BINDIR} fi -showversion() -{ - echo -en "Magellan Source Install v${SMAGEVERSION} " - echo -e "-- Niels Rogalla (niro@magellan-linux.de)" -} - -die() -{ - xtitleclean - echo -e ${COLRED}"Exited ${BASH_SOURCE} at line no ${BASH_LINENO}."${COLDEFAULT} - echo "SMAGE failed: $@" - exit 1 -} - -xtitle() -{ - if [[ ${TERM} = xterm ]] - then - echo -ne "\033]0;[sMage: $@]\007" - fi - return 0 -} - -xtitleclean() -{ - if [[ ${TERM} = xterm ]] - then - echo -ne "\033]0;\007" - fi - return 0 -} - -syncsmage2() -{ - xtitle "Updating smage2-script tree ..." - local i - for i in ${SMAGE2RSYNC} - do - rsync ${RSYNC_FETCH_OPTIONS} ${i} ${SMAGESCRIPTSDIR} - if [[ $? = 0 ]] - then - break - else - continue - fi - done - - # clean up backup files (foo~) - find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';' - - xtitleclean -} - -# $1 filename -get_db_md5_sum() -{ - local DB_FILE - local MD5_FILE - local i - - DB_ENTRY="$(basename $1)" - MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} ${SMAGESUFFIX})" - - i="$(cat ${MD5_FILE}| grep ${DB_ENTRY} | cut -d' ' -f1)" - - echo "${i}" -} - -download_sources() -{ - - [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0 - - local EOA=${#SRC_URI[*]} - local my_SRC_URI - local my_SRC_URI_DEST - local my_SRC_URI_MIRROR - local my_SOURCEDIR - local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5" - local FETCHING - local i mirror - - - # install SRCDIR/PNAME if not exist - [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME} - - # check if FETCHING is needed - ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null ) - if [[ $? = 0 ]] - then - # md5's ok, no fetching needed - FETCHING=false - else - FETCHING=true - fi - - for ((i=0; i < EOA; i++)) - do - # url to file - my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)" - - # subdir in sources dir; the my_SRCI_URI file goes to there - my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)" - - # if my_src_uri_dest is not equal my_src_uri; than an other dir is used - if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]] - then - my_SOURCEDIR="${SOURCEDIR}/${PNAME}/${my_SRC_URI_DEST}" - else - my_SOURCEDIR="${SOURCEDIR}/${PNAME}" - fi - - # if an mirrored file than replace first the mirror uri - if [[ -n $(echo ${my_SRC_URI} | grep 'mirror://') ]] - then - for mirror in ${MIRRORS} - do - my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")" - - if [[ ${FETCHING} = true ]] - then - echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}" - wget \ - --passive-ftp \ - --tries 3 \ - --continue \ - --progress bar \ - --directory-prefix="${my_SOURCEDIR}" \ - "${my_SRC_URI_MIRROR}" - if [[ $? = 0 ]] - then - break - else - continue - fi - fi - done - elif [[ -n $(echo ${my_SRC_URI} | grep 'sourceforge://') ]] - then - for mirror in ${SOURCEFORGE_MIRRORS} - do - my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|sourceforge:/|${mirror}|g")" - - if [[ ${FETCHING} = true ]] - then - echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}" - wget \ - --passive-ftp \ - --tries 3 \ - --continue \ - --progress bar \ - --directory-prefix="${my_SOURCEDIR}" \ - "${my_SRC_URI_MIRROR}" - if [[ $? = 0 ]] - then - break - else - continue - fi - fi - done - elif [[ -n $(echo ${my_SRC_URI} | grep 'gnu://') ]] - then - for mirror in ${GNU_MIRRORS} - do - my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|gnu:/|${mirror}|g")" - - if [[ ${FETCHING} = true ]] - then - echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}" - wget \ - --passive-ftp \ - --tries 3 \ - --continue \ - --progress bar \ - --directory-prefix="${my_SOURCEDIR}" \ - "${my_SRC_URI_MIRROR}" - if [[ $? = 0 ]] - then - break - else - continue - fi - fi - done - elif [[ -n $(echo ${my_SRC_URI} | grep 'kde://') ]] - then - for mirror in ${KDE_MIRRORS} - do - my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|kde:/|${mirror}|g")" - - if [[ ${FETCHING} = true ]] - then - echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}" - wget \ - --passive-ftp \ - --tries 3 \ - --continue \ - --progress bar \ - --directory-prefix="${my_SOURCEDIR}" \ - "${my_SRC_URI_MIRROR}" - if [[ $? = 0 ]] - then - break - else - continue - fi - fi - done - elif [[ -n $(echo ${my_SRC_URI} | grep 'gnome://') ]] - then - for mirror in ${GNOME_MIRRORS} - do - my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|gnome:/|${mirror}|g")" - - if [[ ${FETCHING} = true ]] - then - echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}" - wget \ - --passive-ftp \ - --tries 3 \ - --continue \ - --progress bar \ - --directory-prefix="${my_SOURCEDIR}" \ - "${my_SRC_URI_MIRROR}" - if [[ $? = 0 ]] - then - break - else - continue - fi - fi - done - else - if [[ ${FETCHING} = true ]] - then - echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI}${COLDEFAULT}" - wget \ - --passive-ftp \ - --tries 3 \ - --continue \ - --progress bar \ - --directory-prefix="${my_SOURCEDIR}" \ - "${my_SRC_URI}" - fi - fi - - # unset them to be shure - unset my_SRC_URI - unset my_SRC_URI_DEST - unset my_SRC_URI_MIRROR - unset my_SOURCEDIR - done - - # recheck md5 sums - echo - echo -e "${COLBLUE}===${COLGREEN} Checking MD5 sums:${COLDEFAULT}" - ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} ) || die "md5 failed" - echo - - # not needed anymore - unset SRC_URI -} - -# dummy function, used if that not exist in smage file -src_prepare() -{ - echo "no src_prepare defined" - sleep 2 - return 0 -} - -# dummy function, used if that not exist in smage file -src_compile() -{ - echo "no src_compile defined" - sleep 2 - return 0 -} - -# dummy function, used if that not exist in smage file -src_install() -{ - echo "no src_install defined" - sleep 2 - return 0 -} - -mlibdir() -{ - local libdir=lib - [[ ${ARCH} = x86_64 ]] && libdir=lib64 - - echo "${libdir}" -} - -mconfigure() -{ - if [ -x ./configure ] - then - ./configure \ - --prefix=/usr \ - --host=${CHOST} \ - --mandir=/usr/share/man \ - --infodir=/usr/share/info \ - --datadir=/usr/share \ - --sysconfdir=/etc \ - --localstatedir=/var/lib \ - --libdir=/usr/$(mlibdir) \ - "$@" || die "mconfigure failed" - else - echo "configure is not an executable ..." - exit 1 - fi -} - -minstall() -{ - if [ -f ./[mM]akefile -o -f ./GNUmakefile ] - then - make prefix=${BINDIR}/usr \ - datadir=${BINDIR}/usr/share \ - infodir=${BINDIR}/usr/share/info \ - localstatedir=${BINDIR}/var/lib \ - mandir=${BINDIR}/usr/share/man \ - sysconfdir=${BINDIR}/etc \ - libdir=${BINDIR}/usr/$(mlibdir) \ - "$@" install || die "minstall failed" - else - die "no Makefile found" - fi -} - -mmake() -{ - make ${MAKEOPTS} ${EXTRA_EMAKE} "$@" -} - -munpack() -{ - local SRCFILE - local IFTAR - local DEST - - SRCFILE=$1 - - if [[ -z $2 ]] - then - DEST=${BUILDDIR} - else - DEST=$2 - fi - - [[ ! -d ${DEST} ]] && install -d ${DEST} - - case "${SRCFILE##*.}" in - bz2) - IFTAR="$(basename $SRCFILE .bz2)" - IFTAR="${IFTAR##*.}" - if [[ ${IFTAR} = tar ]] - then - tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tar.bz2 unpack failed." - else - pushd ${DEST} > /dev/null - bzcat ${SOURCEDIR}/${PNAME}/${SRCFILE} > ${DEST}/$(basename ${SRCFILE} .bz2) || die ".bz2 unpack failed." - popd > /dev/null - fi - ;; - gz) - IFTAR="$(basename $SRCFILE .gz)" - IFTAR="${IFTAR##*.}" - if [[ ${IFTAR} = tar ]] - then - tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tar.gz unpack failed." - else - pushd ${DEST} > /dev/null - zcat ${SOURCEDIR}/${PNAME}/${SRCFILE} > ${DEST}/$(basename ${SRCFILE} .gz) || die ".gz unpack failed." - popd > /dev/null - fi - ;; - tbz2) - tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tbz2 unpack failed." - ;; - tgz) - tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tgz unpack failed." - ;; - rar) - unrar x ${SOURCEDIR}/${PNAME}/${SRCFILE} ${DEST} || die ".rar unpack failed." - ;; - zip) - unzip ${SOURCEDIR}/${PNAME}/${SRCFILE} -d ${DEST} || die ".zip unpack failed." - ;; - rpm) - pushd ${BUILDDIR} > /dev/null - rpm2targz ${SOURCEDIR}/${PNAME}/${SRCFILE} || die "rpm2targz: .rpm unpack failed." - tar --no-same-owner -xvzf ${SRCFILE/.rpm/.tar.gz/} || die "tar: .rpm unpack failed." - [[ -f ${BUILDDIR}/${SRCFILE/.rpm/.tar.gz/} ]] && rm ${BUILDDIR}/${SRCFILE/.rpm/.tar.gz/} - ;; - *) - die "munpack failed" - ;; - esac -} - -mpatch() -{ - local PATCHOPTS - local PATCHFILE - local i - - PATCHOPTS=$1 - PATCHFILE=$2 - - if [[ -z $2 ]] - then - PATCHFILE=$1 - - ## patch level auto-detection, get patch level - for ((i=0; i < 10; i++)) - do - patch --dry-run -Np${i} -i ${SOURCEDIR}/${PNAME}/${PATCHFILE} > /dev/null - if [[ $? = 0 ]] - then - PATCHOPTS="-Np${i}" - break - fi - done - fi - - echo -e "${COLBLUE}*** ${COLGREEN}Applying patch '${PATCHFILE}'${COLDEFAULT}" - patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE} -} - -mlibtoolize() -{ - local opts="$@" - [[ -z ${opts} ]] && opts="--copy --force" - - libtoolize ${opts} || die "running: mlibtoolize ${opts}" -} - -minstalldocs() -{ - local docfiles - docfiles="$@" - - if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ] - then - install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs." - fi - - for i in ${docfiles} - do - cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs." - install -m 0644 ${SRCDIR}/${i}.gz \ - ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "coping docs." - done -} - -mstriplibs() -{ - local stripdir="$@" - - [ -z "${stripdir}" ] && stripdir=${BINDIR} - find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null -} - -mstripbins() -{ - local stripdir="$@" - - [ -z "${stripdir}" ] && stripdir=${BINDIR} - find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null -} - -sminclude() -{ - local i - - if [[ -n "$@" ]] - then - for i in $@ - do - echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc" - source ${SMAGESCRIPTSDIR}/include/${i}.sminc - done - echo - fi -} - -setup_distcc_environment() -{ - if [ -x /usr/bin/distcc ] - then - echo -e "${COLBLUE}---${COLGREEN} Using DistCC for compilation ...${COLDEFAULT}" - export PATH=/usr/$(mlibdir)/distcc/bin:${PATH} || die "distcc: could not export new $PATH" - - export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed" - - # creating distcc tempdir - install -o distcc -g daemon -d ${DISTCC_DIR} - chmod 1777 ${DISTCC_DIR} - fi -} - -setup_ccache_environment() -{ - if [ -x /usr/bin/ccache ] - then - echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}" - export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH" - fi -} - - -# fixes given dependencies to match a MAGE_TARGET -# fix_mage_deps -target s/depend # <-- note -target ! -fix_mage_deps() -{ - local target="$1" - local depend="$2" - local NDEPEND - local sym dep cat pver pname - - # deps and provides are special - # they must be fixed to match the target - - # run this only if target and depend is not empty - if [ -n "${target}" ] && [ -n "${depend}" ] - then - # fix DEPEND - while read sym dep - do - # ignore empty lines - [[ -z ${dep} ]] && continue - - cat="$(dirname ${dep})" - # change if not virtual - if [[ ${cat} = virtual ]] - then - pname="$(basename ${dep})" - else - # fix pver to target-pver - # to get pname-target-pver - - # doing it backwards ! - pver="${dep##*-}" - # full pver - pname="$(basename ${dep/-${pver}/})${target}-${pver}" - fi - - # do not add empty lines - if [ -z "${NDEPEND}" ] - then - NDEPEND="${sym} ${cat}/${pname}" - else - NDEPEND="${NDEPEND} - ${sym} ${cat}/${pname}" - fi - - unset cat pname pver - done << EOF -${depend} -EOF - # set NDEPEND to DEPEND - depend="${NDEPEND}" - fi - - echo "${depend}" -} - -# build_mage_script(): helper functions for regen_mage_tree() -# generates an mage file with given information in smage file -# needs at least: -# PNAME name of pkg -# PVER version -# PBUILD revision -# PCATEGORIE categorie of the pkg -# STATE state of pkg stable|unstable|old -# DESCRIPTION va short description (opt) -# HOMEPAGE homepage (opt) -# DEPEND runtime dependencies (opt) -# SDEPEND add. needed deps to build the pkg (opt) -# PROVIDE provides a virtual (opt) -# -# special tags: -# PKGTYPE type of pkg -# INHERITS which functions get included -# SPECIAL_FUNCTIONS special functions wich should also be added -# warning: they get killed before the build starts ! -# -# MAGE_TREE_DEST target destination of the generated tree -# REGEN_MAGE_TREE set to 'true' to enable this -# -# gets called with build_mage_script target -build_mage_script() -{ - local magefile - local dest - local target - local sym - local depname - - # if MAGE_TREE_DEST not set use BUILDDIR - : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree} - - # determinate which suffix this mage file should get, if any - [ -n "$1" ] && target="-$1" - - # name of magefile - magefile="${PNAME}${target}-${PVER}-${PBUILD}.mage" - - # destination to magefile - dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${target}/${magefile}" - - # show what we are doing - echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}" - echo "${dest}" - - install -d "$(dirname ${dest})" - # now build the mage file - > ${dest} - - # header - echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.59 2007-11-05 16:47:10 niro Exp $' >> ${dest} - echo >> ${dest} - - # pgkname and state - echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest} - echo "STATE=\"${STATE}\"" >> ${dest} - echo >> ${dest} - - # description and homepage - echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest} - echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest} - echo >> ${dest} - - # special tags and vars - echo "PKGTYPE=\"${PKGTYPE}\"" >> ${dest} - - # echo MAGE_TARGETS ## note -target is needed ! - echo "MAGE_TARGETS=\"${target}\"" >> ${dest} - echo >> ${dest} - - # add special vars - if [ -n "${SPECIAL_VARS}" ] - then - local i - for i in ${SPECIAL_VARS} - do - # being tricky here :) - echo "${i}=\"$(eval echo \$${i})\"" >> ${dest} - done - echo >> ${dest} - fi - - # add at least all includes - if [ -n "${INHERITS}" ] - then - echo -n "minclude" >> ${dest} - local i - for i in ${INHERITS} - do - echo -n " ${i}" >> ${dest} - done - echo >> ${dest} - fi - echo >> ${dest} - - # deps and provides - echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest} - echo >> ${dest} - echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest} - echo >> ${dest} - echo "PROVIDE=\"${PROVIDE}\"" >> ${dest} - echo >> ${dest} - - # add special functions - if [ -n "${SPECIAL_FUNCTIONS}" ] - then - local i - for i in ${SPECIAL_FUNCTIONS} - do - # add to mage (quotes needed !) - typeset -f "${i}" >> ${dest} - echo >> ${dest} - # unset to be safe (quotes needed !) - #unset "${i}" <-- later to get every target built - done - echo >> ${dest} - fi - - # pre|post-install|removes - typeset -f preinstall >> ${dest} - echo >> ${dest} - typeset -f postinstall >> ${dest} - echo >> ${dest} - typeset -f preremove >> ${dest} - echo >> ${dest} - typeset -f postremove >> ${dest} - echo >> ${dest} -} - -regen_mage_tree() -{ - local i - - # build them only if requested - if [[ ${REGEN_MAGE_TREE} = true ]] - then - # run it without targets - if [ -z "${MAGE_TARGETS}" ] - then - echo - build_mage_script - echo - else - - # build for each target an mage file - # run it with several targets - for i in ${MAGE_TARGETS} - do - echo - build_mage_script "${i}" - echo - done - fi - fi - - # now unset all uneeded vars to be safe - # unset PKGNAME <-- don't do that; smage needs this var - # unset to be safe (quotes needed !) -# for i in ${SPECIAL_FUNCTIONS} -# do -# unset "${i}" -# done - unset SPECIAL_FUNCTIONS -# for i in ${SPECIAL_VARS} -# do -# unset "${i}" -# done - unset SPECIAL_VARS - unset STATE - unset DESCRIPTION - unset HOMEPAGE - unset PKGTYPE - unset INHERITS - unset DEPEND - unset SDEPEND - unset PROVIDE - unset preinstall - unset postinstall - unset preremove - unset postremove -} - -export_inherits() -{ - local include="$1" - shift - - while [ "$1" ] - do - local functions="$1" - - # sanity checks - [ -z "${include}" ] && die "export_inherits(): \$include not given." - [ -z "${functions}" ] && die "export_inherits(): \$functions not given." - - eval "${functions}() { ${include}_${functions} ; }" - - # debug - [[ ${MAGEDEBUG} = on ]] && typeset -f "${functions}" - - shift - done -} - -generate_package_md5sum() -{ - local dest - local pcat - local pname - local pver - local pbuild - local parch - local target - local pkgname - - # very basic getops - for i in $* - do - case $1 in - --pcat|-c) shift; pcat="$1" ;; - --pname|-n) shift; pname="$1" ;; - --pver|-v) shift; pver="$1" ;; - --pbuild|-b) shift; pbuild="$1" ;; - --parch|a) shift; parch="$1" ;; - --target|t) shift; target="$1" ;; - esac - shift - done - - # sanity checks; abort if not given - [ -z "${pcat}" ] && die "generate_package_md5sum() \$pcat not given." - [ -z "${pname}" ] && die "generate_package_md5sum() \$pname not given." - [ -z "${pver}" ] && die "generate_package_md5sum() \$pver not given." - [ -z "${pbuild}" ] && die "generate_package_md5sum() \$pbuild not given." - [ -z "${parch}" ] && die "generate_package_md5sum() \$parch not given." - - # check needed global vars - [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set." - [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set." - - # fix target as it may be empty ! - [ -n "${target}" ] && target="-${target}" - - # build pkgname - pkgname="${pname}${target}-${pver}-${parch}-${pbuild}" - - # build pkg-md5-sum only if requested - if [[ ${REGEN_MAGE_TREE} = true ]] - then - echo -ne "${COLBLUE}===${COLGREEN} generating md5's for ${pkgname}.${PKGSUFFIX} ... ${COLDEFAULT}" - - # abort if not exist - if [ ! -f ${PKGDIR}/${pkgname}.${PKGSUFFIX} ] - then - echo -e "${COLRED}! exists${COLDEFAULT}" - return 0 - fi - - # if MAGE_TREE_DEST not set use BUILDDIR - : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree} - - # setup md5 dir - dest="${MAGE_TREE_DEST}/${pcat}/${pname}/md5" - install -d ${dest} - - # gen md5sum - ( cd ${PKGDIR}; md5sum "${pkgname}.${PKGSUFFIX}" ) \ - > ${dest}/${pkgname}.md5 - echo -e "${COLGREEN}done${COLDEFAULT}" - fi -} - -source_pkg_build() -{ - if [[ ${PKGTYPE} = virtual ]] - then - echo "Virtual package detected; src-pkg-tarball not necessary ..." - return 0 - fi - - if [[ ! -d ${SOURCEDIR}/${PNAME} ]] - then - echo "No SRC_URI defined; src-pkg-tarball not necessary ..." - return 0 - fi - - [ -z "${SRCPKGDIR}" ] && die "\$SRCPKGDIR not found. Please setup your ${MAGERC} correctly." - - echo -e "${COLGREEN}Creating source package tarball ... ${COLDEFAULT}" - - # include the smage2 file - cp ${SMAGENAME} ${SOURCEDIR}/${PNAME} - - ( cd ${SOURCEDIR}; tar cvjf ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${PNAME}; ) - [[ ! -d ${SRCPKGDIR} ]] && install -d ${SRCPKGDIR} - mv ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${SRCPKGDIR}/${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} - - echo -e "${COLGREEN}Source package ${COLBLUE}${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} ${COLGREEN}successfully builded.${COLDEFAULT}" -} - - # print out our version showversion echo -if [ -z "$1" ] +if [[ -z ${SMAGENAME} ]] then echo "No .smage2 file given. Exiting." echo exit 1 fi +# load supported mage features +load_mage_features + # updating smage2-scripts if [[ $1 = update ]] then @@ -959,11 +58,13 @@ # creates md5sums for smages to given dir if [[ $1 = calcmd5 ]] then - if [ $# -ge 3 ] + if [ $# -ge 2 ] then SMAGENAME="$2" MD5DIR="$3" - source ${SMAGENAME} || die "download source failed" + [[ -z ${MD5DIR} ]] && MD5DIR="$(dirname ${SMAGENAME})/md5" + + smagesource ${SMAGENAME} || die "download source failed" # overridable sourcedir; must be declared after source of the smage2 CALC_SOURCEDIR="${CALC_SOURCEDIR:="${SOURCEDIR}/${PNAME}"}" @@ -1015,7 +116,7 @@ echo else echo "Usage: Calculating MD5 Sums:" - echo " $(basename $0) calcmd5 /path/to/SMAGENAME /path/to/MD5DIR" + echo " $(basename $0) calcmd5 /path/to/SMAGENAME [/path/to/MD5DIR]" echo echo echo "Export the CALC_SOURCEDIR variable to override current SOURCEDIRs." @@ -1037,7 +138,7 @@ # get smage SMAGENAME="$2" MD5DIR="$(dirname ${SMAGENAME})/md5" - source ${SMAGENAME} || die "download source failed" + smagesource ${SMAGENAME} || die "download source failed" download_sources exit 0 @@ -1049,18 +150,62 @@ # set correct SMAGENAME SMAGENAME="$2" MD5DIR="$(dirname ${SMAGENAME})/md5" - source ${SMAGENAME} || die "regen: smage2 not found" + smagesource ${SMAGENAME} || die "regen: smage2 not found" regen_mage_tree - # build md5sum for existing packages - generate_package_md5sum \ - --pcat "${PCATEGORIE}" \ - --pname "${PNAME}" \ - --pver "${PVER}" \ - --pbuild "${PBUILD}" \ - --parch "${ARCH}" \ - --target "${target}" + # build several targets + if [[ -n ${MAGE_TARGETS} ]] + then + for target in ${MAGE_TARGETS} + do + # build md5sum for existing packages + generate_package_md5sum \ + --pcat "${PCAT}" \ + --pname "${PNAME}" \ + --pver "${PVER}" \ + --pbuild "${PBUILD}" \ + --parch "${ARCH}" \ + --target "${target}" + done + + # build several subpackages + elif [[ -n ${SPLIT_PACKAGES} ]] + then + split_save_variables + for subpackage in ${SPLIT_PACKAGES} + do + # get the right variables for the split + export PNAME="${subpackage}" + split_info_${subpackage} + # fix PCATEGORIE -> PCAT + if [[ ! -z ${PCATEGORIE} ]] + then + PCAT="${PCATEGORIE}" + unset PCATEGORIE + fi + # build md5sum for existing packages + generate_package_md5sum \ + --pcat "${PCAT}" \ + --pname "${PNAME}" \ + --pver "${PVER}" \ + --pbuild "${PBUILD}" \ + --parch "${ARCH}" + # restore smage environment + split_restore_variables + done + # unset all saved smage variables + split_unset_variables + + else + # build md5sum for existing packages + generate_package_md5sum \ + --pcat "${PCAT}" \ + --pname "${PNAME}" \ + --pver "${PVER}" \ + --pbuild "${PBUILD}" \ + --parch "${ARCH}" + fi exit 0 fi @@ -1073,7 +218,7 @@ echo -e "${COLGREEN}create-src-tarball called for ${COLBLUE}${SMAGENAME}${COLGREEN} ...${COLDEFAULT}" - source ${SMAGENAME} || die "regen: smage2 not found" + smagesource ${SMAGENAME} || die "regen: smage2 not found" if [[ -d ${SOURCEDIR}/${PNAME} ]] then @@ -1089,7 +234,7 @@ if [ "$1" == "--src-tarball" -a -n "$2" ] || [ "$1" == "-st" -a -n "$2" ] then SRCPKGTARBALL="${2}" - USE_SRC_PKG_TARBALL=true + msetfeature "srcpkgtarball" # abort if given file is not a source pkg [[ ${SRCPKGTARBALL##*.} != ${SRCPKGSUFFIX} ]] && die "${SRCPKGTARBALL} is not a valid src-pkg file." @@ -1110,6 +255,11 @@ [[ ! -f ${SMAGENAME} ]] && die "Included smage2 file in src-tarball not found: ${SMAGENAME}" fi +if [ "$1" == "--resume" -a -n "$2" ] +then + msetfeature "resume" + SMAGENAME="$2" +fi [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ] && die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting." [ -z "$(basename ${SMAGENAME} | grep .${SMAGESUFFIX})" ] && @@ -1122,9 +272,10 @@ [ -z "${CFLAGS}" ] && die "no CFLAGS variable found in ${MAGERC}" [ -z "${CXXFLAGS}" ] && die "no CXXFLAGS variable found in ${MAGERC}" -source ${SMAGENAME} || die "source failed" -PKGNAME="${PNAME}-${PVER}-${ARCH}-${PBUILD}" +smagesource ${SMAGENAME} || die "source failed" +PKGNAME="${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}" MD5DIR="$(dirname ${SMAGENAME})/md5" +SMAGE_LOG_CMD="tee -a /var/log/smage/${PKGNAME}.log" xtitle "Compiling ${PKGNAME}" echo -e "${COLGREEN}Compiling ${PKGNAME}${COLDEFAULT}" @@ -1132,7 +283,7 @@ # auto regen mage tree if requested regen_mage_tree -if [[ ${CREATE_SRC_PKG_TARBALL} = true ]] +if mqueryfeature "srcpkgbuild" then if [[ -d ${SOURCEDIR}/${PNAME} ]] then @@ -1142,148 +293,375 @@ fi # download sources -[[ ${USE_SRC_PKG_TARBALL} != true ]] && download_sources +mqueryfeature "srcpkgtarball" || download_sources # fixes some issues with these functions export -f src_prepare || die "src_prepare export failed" export -f src_compile || die "src_compile export failed" +export -f src_check || die "src_check export failed" export -f src_install || die "src_install export failed" # fixes some compile issues export CHOST="${CHOST}" || die "CHOST export failed" export CFLAGS="${CFLAGS}" || die "CFLAGS export failed" -export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed" +if [[ -z ${CXXFLAGS} ]] +then + export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed" +else + export CXXFLAGS="${CXXFLAGS}" || die "CXXFLAGS export failed" +fi +export LDFLAGS="${LDFLAGS}" || die "LDFLAGS export failed" export BINDIR="${BINDIR}" || die "BINDIR export failed" export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed" - # setup distcc # setup for distcc goes *before* ccache, so ccache comes before distcc in path -[[ ${SMAGE_USE_DISTCC} = true ]] && setup_distcc_environment +mqueryfeature "distcc" && setup_distcc_environment # setup ccache -[[ ${SMAGE_USE_CCACHE} = true ]] && setup_ccache_environment +mqueryfeature "ccache" && setup_ccache_environment -# small sleep to show our settings -sleep 1 - -# cleans up build if a previously one exists -if [ -d ${BUILDDIR} ] +if mqueryfeature "resume" then - rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR." -fi -install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR." + echo -e "${COLMAGENTA}Resume requested; continuing previous build${COLDEFAULT}" -# cleans up srcdir if a previously unpacked one exists -if [ -d ${SRCDIR} ] -then - rm -rf ${SRCDIR} + # setup build logging + [[ ! -d /var/log/smage ]] && install -d /var/log/smage + if [[ -f /var/log/smage/${PKGNAME}.log.bz2 ]] + then + bunzip2 -f /var/log/smage/${PKGNAME}.log.bz2 + fi + echo -e "### Resume started on $(date) ###\n" >> /var/log/smage/${PKGNAME}.log + +else + # clean up builddir if a previously one exist + if [ -d ${BUILDDIR} ] + then + rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR." + fi + install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR." + + # clean up srcdir if a previously unpacked one exist + if [ -d ${SRCDIR} ] + then + rm -rf ${SRCDIR} + fi + + # clean up bindir if a previous build exist or create a new one + if [ -d ${BINDIR} ] + then + rm -rf ${BINDIR} + fi + install -d ${BINDIR} || die "couldn't create \$BINDIR." + + # clean up package temp dir if a previous build exist + if [ -d ${BUILDDIR}/${PKGNAME} ] + then + rm -rf ${BUILDDIR}/${PKGNAME} + fi + + # clean up stamps dir + if [ -d ${BUILDDIR}/.stamps ] + then + rm -rf ${BUILDDIR}/.stamps + fi + + # setup build logging + [[ ! -d /var/log/smage ]] && install -d /var/log/smage + echo -e "### Build started on $(date) ###\n" > /var/log/smage/${PKGNAME}.log fi -# cleans up bindir if a previous build exists or creates a new one -if [ -d ${BINDIR} ] +if [[ ${PKGTYPE} = virtual ]] then - rm -rf ${BINDIR} + echo "virtual package detected; nothing will be build ..." + # automatically set !pkgbuild here too + msetfeature "!pkgbuild" +else + ( run_resume src_prepare || src_prepare ) | ${SMAGE_LOG_CMD} + die_pipestatus 0 "src_prepare failed" + resume_stamp src_prepare + step_by_step src_prepare + + ( run_resume src_compile || src_compile ) | ${SMAGE_LOG_CMD} + die_pipestatus 0 "src_compile failed" + resume_stamp src_compile + step_by_step src_compile + + # only run checks if requested + if mqueryfeature "!check" + then + echo "!check detected; src_check() will not be run!" | ${SMAGE_LOG_CMD} + else + ( run_resume src_check || src_check ) | ${SMAGE_LOG_CMD} + die_pipestatus 0 "src_check failed" + resume_stamp src_check + fi + step_by_step src_check + + # build several subpackages + if [[ -n ${SPLIT_PACKAGES} ]] + then + # save bindir & pname + split_save_variables + export SAVED_BINDIR="${BINDIR}" + for subpackage in ${SPLIT_PACKAGES} + do + split_info_${subpackage} + if [[ ${PKGTYPE} = virtual ]] + then + echo "virtual package detected; nothing will be build ..." + # automatically set !pkgbuild here too + msetfeature "!pkgbuild" + else + if typeset -f src_install_${subpackage} > /dev/null + then + # export subpackage bindir + export BINDIR="${SAVED_BINDIR}_${subpackage}" + # export PNAME, several internal function and include + # rely on this variable + export PNAME="${subpackage}" + + echo + echo -en "${COLBLUE}*** ${COLDEFAULT}" + echo -en " Running ${COLGREEN}split src_install()${COLDEFAULT}" + echo -en " for subpkg: ${COLBLUE}${PNAME}${COLDEFAULT}" + echo -e " - basepkg: ${COLBLUE}${SPLIT_PACKAGE_BASE}${COLDEFAULT} ..." + + ( run_resume src_install_${subpackage} || src_install_${subpackage} ) | ${SMAGE_LOG_CMD} + die_pipestatus 0 "src_install_${subpackage} failed" + resume_stamp src_install_${subpackage} + step_by_step src_install_${subpackage} + fi + fi + done + # restore bindir & pname + split_restore_variables + # unset all saved smage variables + split_unset_variables + else + ( run_resume src_install || src_install ) | ${SMAGE_LOG_CMD} + die_pipestatus 0 "src_install failed" + resume_stamp src_install + step_by_step src_install + fi fi -install -d ${BINDIR} || die "couldn't create \$BINDIR." -# cleans up package temp dir if a previous build exists -if [ -d ${BUILDDIR}/${PKGNAME} ] +# echo for sake of good-looking +echo + +if mqueryfeature "!compressdoc" +then + echo -e "!compressdoc detected; documentation will not be compressed ..." +elif mqueryfeature "!pkgbuild" then - rm -rf ${BUILDDIR}/${PKGNAME} + echo "!pkgbuild detected; skipping documentation compression..." +else + # compressing doc, info & man files + if [[ -n ${SPLIT_PACKAGES} ]] + then + for subpackage in ${SPLIT_PACKAGES} + do + run_resume post-mcompressdoc_${subpackage} || mcompressdocs ${BINDIR}_${subpackage} + resume_stamp post-mcompressdoc_${subpackage} + done + else + run_resume post-mcompressdoc || mcompressdocs ${BINDIR} + resume_stamp post-mcompressdoc + fi fi -# cleans up timestamp if one exists -if [ -f /var/tmp/timestamp ] +if mqueryfeature "!libtool" then - mage rmstamp + if mqueryfeature "!pkgbuild" + then + echo "!pkgbuild detected; skipping libtool archive stripping ..." + else + if [[ -n ${SPLIT_PACKAGES} ]] + then + for subpackage in ${SPLIT_PACKAGES} + do + echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives for '${subpackage}' ...${COLDEFAULT}" + run_resume post-mstriplibtoolarchive_${subpackage} || mstriplibtoolarchive ${BINDIR}_${subpackage} + resume_stamp post-mstriplibtoolarchive_${subpackage} + done + else + echo -e "${COLBLUE}===${COLGREEN} stripping libtool archives ...${COLDEFAULT}" + run_resume post-mstriplibtoolarchive || mstriplibtoolarchive ${BINDIR} + resume_stamp post-mstriplibtoolarchive + fi + fi fi -src_prepare || die "src_prepare failed" -src_compile || die "src_compile failed" -src_install || die "src_install failed" - - -# compressing doc, info & man files -if [ -d ${BUILDDIR}/builded/usr/share/man ] +if mqueryfeature "purge" then - echo -e "${COLBLUE}===${COLGREEN} compressing man-pages ...${COLDEFAULT}" - ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man + if mqueryfeature "!pkgbuild" + then + echo "!pkgbuild detected; skipping file purgation..." + else + if [[ -n ${SPLIT_PACKAGES} ]] + then + for subpackage in ${SPLIT_PACKAGES} + do + echo -e "${COLBLUE}===${COLGREEN} purging all purge targets in '${subpackage}' ...${COLDEFAULT}" + run_resume post-mpurgetargets_${subpackage} || mpurgetargets ${BINDIR}_${subpackage} + resume_stamp post-mpurgetargets_${subpackage} + done + else + echo -e "${COLBLUE}===${COLGREEN} purging all purge targets ...${COLDEFAULT}" + run_resume post-mpurgetargets || mpurgetargets ${BINDIR} + resume_stamp post-mpurgetargets + fi + fi fi -if [ -d ${BUILDDIR}/builded/usr/share/info ] +# stripping all bins and libs +if mqueryfeature "!strip" then - echo -e "${COLBLUE}===${COLGREEN} compressing info-pages ...${COLDEFAULT}" - ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info + echo -e "!strip detected; Package will not be stripped ..." +elif mqueryfeature "!pkgbuild" +then + echo "!pkgbuild detected; skipping stripping of the package ..." +else + if [[ -n ${SPLIT_PACKAGES} ]] + then + for subpackage in ${SPLIT_PACKAGES} + do + echo -e "${COLBLUE}===${COLGREEN} stripping binaries for '${subpackage}' ...${COLDEFAULT}" + run_resume post-mstripbins_${subpackage} || mstripbins ${BINDIR}_${subpackage} + resume_stamp post-mstripbins_${subpackage} + echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries for '${subpackage}' ...${COLDEFAULT}" + run_resume post-mstriplibs_${subpackage} || mstriplibs ${BINDIR}_${subpackage} + resume_stamp post-mstriplibs_${subpackage} + echo -e "${COLBLUE}===${COLGREEN} stripping static libraries for '${subpackage}' ...${COLDEFAULT}" + run_resume post-mstripstatic_${subpackage} || mstripstatic ${BINDIR}_${subpackage} + resume_stamp post-mstripstatic_${subpackage} + done + else + echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}" + run_resume post-mstripbins || mstripbins ${BINDIR} + resume_stamp post-mstripbins + echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries ...${COLDEFAULT}" + run_resume post-mstriplibs || mstriplibs ${BINDIR} + resume_stamp post-mstriplibs + echo -e "${COLBLUE}===${COLGREEN} stripping static libraries ...${COLDEFAULT}" + run_resume post-mstripstatic || mstripstatic ${BINDIR} + resume_stamp post-mstripstatic + fi fi -# stripping all bins and libs -case ${NOSTRIP} in - true|TRUE|yes|y) - echo -e "NOSTRIP=true detected; Package will not be stripped ..." - ;; - *) - echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}" - mstripbins ${BINDIR} - echo -e "${COLBLUE}===${COLGREEN} stripping libraries ...${COLDEFAULT}" - mstriplibs ${BINDIR} - ;; -esac - -# the new buildpkg command -case ${NOPKGBUILD} in - true|TRUE|yes|y) - echo -e "NOPGKBUILD=true detected; Package will not be build ..." - ;; - *) +if mqueryfeature "!pkgbuild" +then + echo -e "!pkgbuild detected; Package will not be build ..." +else # build several targets - if [ -n "${MAGE_TARGETS}" ] + if [[ -n ${MAGE_TARGETS} ]] then for target in ${MAGE_TARGETS} do - # check if an special target_pkgbuild exists + # check if a special target_pkgbuild exists if typeset -f ${target}_pkgbuild > /dev/null then # run it - ${target}_pkgbuild + run_resume post-${target}_pkgbuild || ${target}_pkgbuild + resume_stamp post-${target}_pkgbuild fi # now create the target package - ${MLIBDIR}/pkgbuild_dir.sh \ - "${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD}" \ + run_resume post-pkg_builddir_${target} || ${MLIBDIR}/pkgbuild_dir.sh \ + "${PNAME}-${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}" \ ${BINDIR} || die "target: ${target} package-build failed" + resume_stamp post-pkg_builddir_${target} # build pkg-md5-sum if requested - generate_package_md5sum \ - --pcat "${PCATEGORIE}" \ + run_resume post-md5sum_${target} || generate_package_md5sum \ + --pcat "${PCAT}" \ --pname "${PNAME}" \ --pver "${PVER}" \ --pbuild "${PBUILD}" \ --parch "${ARCH}" \ --target "${target}" + resume_stamp post-md5sum_${target} + + echo -e "${COLGREEN}\nPackage ${PNAME}-${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD} successfully builded.\n${COLDEFAULT}" + done + + # build several subpackages + elif [[ -n ${SPLIT_PACKAGES} ]] + then + split_save_variables + for subpackage in ${SPLIT_PACKAGES} + do + # get the right variables for the split + export PNAME="${subpackage}" + split_info_${PNAME} + # fix PCATEGORIE -> PCAT + if [[ ! -z ${PCATEGORIE} ]] + then + PCAT="${PCATEGORIE}" + unset PCATEGORIE + fi + + # jump to next one if !pkgbuild is set in split_info + mqueryfeature "!pkgbuild" && continue - echo -e "${COLGREEN}\nPackage ${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD} successfully builded.\n${COLDEFAULT}" + # check if an special subpackage_pkgbuild exists + if typeset -f ${PNAME}_pkgbuild > /dev/null + then + # run it + run_resume post-${PNAME}_pkgbuild || ${PNAME}_pkgbuild + resume_stamp post-${PNAME}_pkgbuild + fi + # now create the target package + run_resume post-pkg_builddir_${PNAME} || ${MLIBDIR}/pkgbuild_dir.sh \ + "${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}" \ + "${BINDIR}_${PNAME}" || die "split_package: ${PNAME} package-build failed" + resume_stamp post-pkg_builddir_${PNAME} + + # build pkg-md5-sum if requested + run_resume post-md5sum_${PNAME} || generate_package_md5sum \ + --pcat "${PCAT}" \ + --pname "${PNAME}" \ + --pver "${PVER}" \ + --pbuild "${PBUILD}" \ + --parch "${ARCH}" + resume_stamp post-md5sum_${PNAME} + + echo -e "${COLGREEN}\nPackage ${PNAME}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD} successfully builded.\n${COLDEFAULT}" + + # restore smage environment + split_restore_variables done + # unset all saved smage variables + split_unset_variables + else - ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed" + run_resume post-pkg_builddir || ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed" + resume_stamp post-pkg_builddir # build pkg-md5-sum if requested - generate_package_md5sum \ - --pcat "${PCATEGORIE}" \ + run_resume post-md5sum || generate_package_md5sum \ + --pcat "${PCAT}" \ --pname "${PNAME}" \ --pver "${PVER}" \ --pbuild "${PBUILD}" \ --parch "${ARCH}" + resume_stamp post-md5sum echo -e "${COLGREEN}\nPackage ${PKGNAME} successfully builded.\n${COLDEFAULT}" fi # build src-pkg-tarball if requested - [[ ${CREATE_SRC_PKG_TARBALL} = true ]] && source_pkg_build ${SMAGENAME} - ;; -esac - -# for sure -unset NOPKGBUILD -unset NOSTRIP + if mqueryfeature "srcpkgbuild" + then + run_resume post-srcpkgbuild || source_pkg_build ${SMAGENAME} + resume_stamp post-srcpkgbuild + fi +fi + +if mqueryfeature "buildlog" +then + bzip2 -9f /var/log/smage/${PKGNAME}.log +else + [[ -f /var/log/smage/${PKGNAME}.log ]] && rm /var/log/smage/${PKGNAME}.log +fi xtitleclean