#!/bin/bash #depwanderer # version: 0.3.6-r8 #DEPEND WANDERER MAGEFILE=$2 ALLDEPS="" METHOD=$1 source /etc/mage.rc source /etc/init.d/functions source /usr/lib/mage/mage3.functions.sh #virtualdb locations VIRTUALDB_DEFAULTS=/etc/mage-profile/virtuals.defaults VIRTUALDB_FILE=${INSTALLDB}/virtuals ##################### ## rumwandern /path/to/mage/file/.mage rumwandern(){ unset DEPEND unset SDEPEND unset MY_DEPEND local DFILE local SYM local DEPNAME local HIGHEST_DEPFILE local MY_DEPEND local REAL_PGKNAME local VIRTUAL_NAME local INSTALL_VIRTUAL DFILE=$1 source ${DFILE} MY_DEPEND="${DEPEND}" #for srcinstall & srcdepend only; SDEPEND also needed if [ "${METHOD}" == "srcinstall" -o "${METHOD}" == "srcpretend" ] then #only if SDEPEND is not zero if [ -n "${SDEPEND}" ] then #crlf is substantly needed !! if [ -n "${MY_DEPEND}" ] then MY_DEPEND="${MY_DEPEND} ${SDEPEND}" else MY_DEPEND="${SDEPEND}" fi fi fi unset DEPEND unset SDEPEND if [ -z "${MY_DEPEND}" ] then return 1 fi while read SYM DEPNAME do CAT=$(echo ${DEPNAME}|cut -d / -f1) #PNAME=$(echo ${DEPNAME%-*}|cut -d / -f2) #echo "DEBUG CAT=${CAT}" #echo "DEBUG PNAME=${PNAME}" #echo "DEBUG DEPNAME=${DEPNAME}" # check if virtual pkg; # if true set $CAT and PNAME to the *REAL* PKGNAME and CATEGORIE if [ "${CAT}" == "virtual" ] then INSTALL_VIRTUAL=true PNAME=$(echo ${DEPNAME}|cut -d / -f2) #first check if virtual is already installed if virtuals_read ${CAT}/${PNAME} showpkgs &> /dev/null then #virtual is installed; take pkg name from virtualdb # REAL_PKGNAME="$(virtuals_read ${CAT}/${PNAME} showpkgs)" # VIRTUAL_NAME="${CAT}/${PNAME}" # # CAT=$(echo ${REAL_PKGNAME}|cut -d / -f1) # PNAME=$(echo ${REAL_PKGNAME}|cut -d / -f2) for vpkg in $(virtuals_read ${CAT}/${PNAME} showpkgs) do #virtual is installed; take pkg name from virtualdb REAL_PKGNAME="${vpkg}" VIRTUAL_NAME="${CAT}/${PNAME}" CAT=$(echo ${REAL_PKGNAME}|cut -d / -f1) PNAME=$(echo ${REAL_PKGNAME}|cut -d / -f2) done else # choose one from virtualdb defaults (virtuals.defaults) REAL_PKGNAME="$(default_virtualname_to_pkgname ${CAT}/${PNAME})" VIRTUAL_NAME="${CAT}/${PNAME}" CAT=$(echo ${REAL_PKGNAME}|cut -d / -f1) PNAME=$(echo ${REAL_PKGNAME}|cut -d / -f2) # small fix with this buggy mage (<= 0.3.6-r5) # dunno when it's fixed -> maybe mage-0.3.7 ! # *must* have a '-1' as version that could be substituded later #PNAME=CAT="$(echo ${REAL_PKGNAME}|cut -d / -f2)-1" fi else #stripped pname if *not* virtual PNAME=$(echo ${DEPNAME%-*}|cut -d / -f2) fi for i in ${MAGEDIR}/${CAT}/${PNAME}/*.mage do #we exclude subdirs (for stuff like a md5sum dir) if [ ! -d ${i} ] then check_stable_package ${i} if [ "$?" == "0" ] then HIGHEST_DEPFILE=${i} fi #debug if [ "${TODESVAR}" == 1 ] then echo -e ${COLRED}"${DFILE}"${COLDEFAULT} unset TODESVAR fi fi done ##check ob schon in ALLDEPS enthalten dann mach weiter local x x=$(echo ${ALLDEPS}|fgrep "${HIGHEST_DEPFILE}") if [ -z "${x}" ] then ### check ob DFILE schon installiert ist ### #if [ ! -d ${INSTALLDB}/$(basename ${HIGHEST_DEPFILE} .mage) ] if [ ! -d ${INSTALLDB}/${CAT}/$(basename ${HIGHEST_DEPFILE} .mage) ] then rumwandern ${HIGHEST_DEPFILE} ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}" #mark pkg as virtual if needed # virtual.PKG_NAME if [ "${INSTALL_VIRTUAL}" == "true" ] then install -d ${BUILDDIR}/virtuals echo "DB_VIRTUAL_NAME=${VIRTUAL_NAME}" \ > ${BUILDDIR}/virtuals/virtual.$(basename ${HIGHEST_DEPFILE} .mage) echo "DB_PKG_NAME=${REAL_PKGNAME}" \ >> ${BUILDDIR}/virtuals/virtual.$(basename ${HIGHEST_DEPFILE} .mage) #unset these vars to be safe unset VIRTUAL_NAME REAL_PKGNAME INSTALL_VIRTUAL fi fi fi done << EOF $MY_DEPEND EOF return 0 } ### check ob MAGEFILE schon installiert ist #if [ -d ${INSTALLDB}/$(basename ${MAGEFILE} .mage) ] MY_CAT=$(dirname ${MAGEFILE}|sed -e "s:${MAGEDIR}::g"|cut -d / -f2) if [ -d ${INSTALLDB}/${MY_CAT}/$(basename ${MAGEFILE} .mage) ] then exit 3 fi if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ] then echo -en "Calculating Dependencies ... " fi #get dependencies of package rumwandern ${MAGEFILE} if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ] then echo "done" fi ##anhängen des zu installierenden files selber ALLDEPS="${ALLDEPS} ${MAGEFILE}" ##ausgabe pretend if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ] then ####test ausgabe declare -i x=0 for i in ${ALLDEPS} do x=$x+1 echo -en "\t${COLBLUE}[" if [ ${x} -le 9 ] then echo -en "0" fi CATEGORIE=$(dirname ${i}|sed -e "s:${MAGEDIR}::g"|cut -d / -f2) APPNAME=$(basename ${i} .mage) echo -e "${x}] ${COLGREEN}${CATEGORIE}/${APPNAME}"${COLDEFAULT} unset CATEGORIE APPNAME done #delete ${BUILDDIR}/virtuals if exists as not needed by [src]pretend if [ -d ${BUILDDIR}/virtuals ] then rm -rf ${BUILDDIR}/virtuals fi fi ##return ausgabe install if [ "$1" == "install" -o "$1" == "srcinstall" ] then echo ${ALLDEPS} fi