Magellan Linux

Diff of /branches/mage-next/src/depwalker.in

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/mage/usr/lib/mage/depwalker.sh revision 2281 by niro, Wed Nov 20 12:21:28 2013 UTC branches/mage-next/src/depwalker.in revision 2625 by niro, Wed Mar 5 08:15:28 2014 UTC
# Line 9  die() Line 9  die()
9   exit 1   exit 1
10  }  }
11    
12    decho()
13    {
14     if [[ ${DEBUG} = 1 ]]
15     then
16     echo "DEBUG: $@" >&2
17     fi
18    }
19    
20  # include all needed files  # include all needed files
21  [ -f /etc/mage.rc.global ] &&  \  source @@SYSCONFDIR@@/mage.rc.global || die "@@SYSCONFDIR@@/mage.rc.global missing"
22   source /etc/mage.rc.global || \  source ${MAGERC} || die "Your ${MAGERC} is missing. Aborting."
23   die "/etc/mage.rc.global missing"  source ${MLIBDIR}/mage4.functions.sh || die "mage functions missing"
24    source ${MLIBDIR}/smage2.functions.sh || die "smage functions missing"
 [ -f ${MAGERC} ] && source ${MAGERC} || \  
  die "Your ${MAGERC} is missing. Aborting."  
   
 [ -f ${MLIBDIR}/mage4.functions.sh ] && \  
  source ${MLIBDIR}/mage4.functions.sh || \  
  die "mage functions missing"  
25    
26  usage()  usage()
27  {  {
# Line 32  usage() Line 34  usage()
34   echo "  -v     --pver          version number of the package"   echo "  -v     --pver          version number of the package"
35   echo "  -b     --pbuild        build number of the package"   echo "  -b     --pbuild        build number of the package"
36   echo "  -m     --method        which calc method should be used:"   echo "  -m     --method        which calc method should be used:"
37   echo "                         install, srcinstall, depend, srcdepend"   echo "                         install, srcinstall, pretend, srcpretend"
38   echo "                         upgrade, srcupgrade,"   echo "                         upgrade, srcupgrade,"
39   echo "                         install-build-prerequisites,"   echo "                         install-build-prerequisites,"
40   echo "                         pretend-build-prerequisites"   echo "                         pretend-build-prerequisites"
41   echo "  -d     --debug         enable debug mode"   echo "  -d     --debug         enable debug mode"
42     echo "  -s     --smage         use a smage to calculate dependencies"
43   echo   echo
44   echo "method, category, name, version and build must be given !"   echo "method, category, name, version and build must be given !"
45   echo   echo
# Line 56  do Line 59  do
59   --pbuild|-b) shift; PBUILD="$1" ;;   --pbuild|-b) shift; PBUILD="$1" ;;
60   --method|-m) shift; METHOD="$1" ;;   --method|-m) shift; METHOD="$1" ;;
61   --debug|-d) shift; DEBUG=1 ;;   --debug|-d) shift; DEBUG=1 ;;
62     --smage|-s) shift; SMAGEFILE="$1"; SILENT=1; FVERBOSE=off ;;
63   --help|-h) usage ;;   --help|-h) usage ;;
64   esac   esac
65   shift   shift
66  done  done
67    
68  # sanity checks; abort if not given  # sanity checks; abort if not given
69  [ -z "${PCAT}" ] && usage  if [[ -z ${SMAGEFILE} ]]
70  [ -z "${PNAME}" ] && usage  then
71  [ -z "${PVER}" ] && usage   [ -z "${PCAT}" ] && usage
72  [ -z "${PBUILD}" ] && usage   [ -z "${PNAME}" ] && usage
73     [ -z "${PVER}" ] && usage
74     [ -z "${PBUILD}" ] && usage
75    fi
76  [ -z "${METHOD}" ] && usage  [ -z "${METHOD}" ] && usage
77    
78  # check needed global vars  # check needed global vars
# Line 75  done Line 82  done
82    
83  # other needed vars  # other needed vars
84  ALLDEPS=""  ALLDEPS=""
85    if [[ -n ${SMAGEFILE} ]]
86    then
87     if [[ -e ${SMAGEFILE} ]]
88     then
89     smagesource "${SMAGEFILE}"
90     else
91     die "Smage file '${SMAGEFILE}' does not exist!"
92     fi
93    fi
94  MAGEFILE="${MAGEDIR}/${PCAT}/${PNAME}/${PNAME}-${PVER}-${PBUILD}.mage"  MAGEFILE="${MAGEDIR}/${PCAT}/${PNAME}/${PNAME}-${PVER}-${PBUILD}.mage"
95    
96  # much faster than fgrep  # much faster than fgrep
# Line 127  depwalking() Line 143  depwalking()
143    
144   DFILE="$1"   DFILE="$1"
145    
146   if [[ ${DEBUG} = 1 ]]   # debug info
147   then   decho "depwalking magefile '${DFILE}'"
148   echo "DEBUG: depwalking magefile '${DFILE}'" >&2   decho
  echo >&2  
  fi  
149    
150   source ${DFILE}   source ${DFILE}
151    
# Line 145  depwalking() Line 159  depwalking()
159   MY_DEPEND="${DEPEND}"   MY_DEPEND="${DEPEND}"
160    
161   # for srcinstall & srcdepend only; SDEPEND also needed   # for srcinstall & srcdepend only; SDEPEND also needed
162   if [[ ${METHOD} = srcinstall ]] || \   if [[ ${METHOD} = srcinstall ]] ||
163   [[ ${METHOD} = srcpretend ]] || \   [[ ${METHOD} = srcpretend ]] ||
164   [[ ${METHOD} = srcupgrade ]] || \   [[ ${METHOD} = srcupgrade ]] ||
165   [[ ${METHOD} = srcuppretend ]]   [[ ${METHOD} = srcuppretend ]] ||
166     [[ ${METHOD} = install-build-prerequisites ]] ||
167     [[ ${METHOD} = pretend-build-prerequisites ]]
168   then   then
169   # only if SDEPEND is not zero   # only if SDEPEND is not zero
170   if [ -n "${SDEPEND}" ]   if [ -n "${SDEPEND}" ]
# Line 164  depwalking() Line 180  depwalking()
180   fi   fi
181   fi   fi
182    
  if [[ ${METHOD} = install-build-prerequisites ]] || \  
  [[ ${METHOD} = pretend-build-prerequisites ]]  
  then  
  # only one time  
  if [[ ${LOOP_COUNTER} -lt 1 ]]  
  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  
  LOOP_COUNTER=${LOOP_COUNTER}+1  
  fi  
   
183   unset DEPEND   unset DEPEND
184   unset SDEPEND   unset SDEPEND
185    
186   if [ -z "${MY_DEPEND}" ]   if [ -z "${MY_DEPEND}" ]
187   then   then
188   if [[ ${DEBUG} = 1 ]]   decho "MY_DEPEND is empty; deps of '${DFILE}' ignored"
  then  
  echo "DEBUG: MY_DEPEND is empty; deps of '${DFILE}' ignored" >&2  
  fi  
189   return 1   return 1
190   fi   fi
191    
192   while read SYM DEPNAME   while read SYM DEPNAME
193   do   do
194   if [[ ${DEBUG} = 1 ]]   # debug info
195   then   decho "DEPNAME='${DEPNAME}'"
  echo "DEBUG: DEPNAME='${DEPNAME}'" >&2  
  fi  
196    
197   # exclude empty depnames   # exclude empty depnames
198   [[ -z ${DEPNAME} ]] && continue   [[ -z ${DEPNAME} ]] && continue
# Line 245  depwalking() Line 234  depwalking()
234   then   then
235   depwalking ${HIGHEST_DEPFILE}   depwalking ${HIGHEST_DEPFILE}
236   ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}"   ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}"
237   if [[ ${DEBUG} = 1 ]]   decho "added '${HIGHEST_DEPFILE}' to ALLDEPS"
  then  
  echo "DEBUG: added '${HIGHEST_DEPFILE}' to ALLDEPS" >&2  
  fi  
238   fi   fi
239   fi   fi
240   done << EOF   done << EOF
# Line 279  then Line 265  then
265   # get the highest mage file from mage-db   # get the highest mage file from mage-db
266   MAGEFILE="$(get_highest_magefile ${PCAT} ${PNAME})"   MAGEFILE="$(get_highest_magefile ${PCAT} ${PNAME})"
267    
268   if [[ ${DEBUG} = 1 ]]   # debug info
269   then   decho "dep='${dep}'"
270   echo "DEBUG: dep='${dep}'" >&2   decho "PCAT='${PCAT}'"
271   echo "DEBUG: PCAT='${PCAT}'" >&2   decho "PNAME='${PNAME}'"
272   echo "DEBUG: PNAME='${PNAME}'" >&2   decho "MAGEFILE='${MAGEFILE}'"
  echo "DEBUG: MAGEFILE='${MAGEFILE}'" >&2  
  fi  
273    
274   # if no install candidate was found, record this   # if no install candidate was found, record this
275   # and process with the next one   # and process with the next one
276   if [[ -z ${MAGEFILE} ]]   if [[ -z ${MAGEFILE} ]]
277   then   then
278   NO_UPGRADE_CANDIDATE="${NO_UPGRADE_CANDIDATE} ${PCAT}/${PNAME}"   NO_UPGRADE_CANDIDATE="${NO_UPGRADE_CANDIDATE} ${PCAT}/${PNAME}"
279   if [[ ${DEBUG} = 1 ]]   decho "added to NO_UPGRADE_CANDIDATE"
  then  
  echo "DEBUG: added to NO_UPGRADE_CANDIDATE" >&2  
  fi  
280   continue   continue
281   fi   fi
282    
# Line 303  then Line 284  then
284   PVER="$(magename2pver ${MAGEFILE})"   PVER="$(magename2pver ${MAGEFILE})"
285   PBUILD="$(magename2pbuild ${MAGEFILE})"   PBUILD="$(magename2pbuild ${MAGEFILE})"
286    
287   if [[ ${DEBUG} = 1 ]]   # debug info
288   then   decho "PVER='${PVER}'"
289   echo "DEBUG: PVER='${PVER}'" >&2   decho "PBUILD='${PBUILD}'"
  echo "DEBUG: PBUILD='${PBUILD}'" >&2  
  fi  
290    
291   # do not walk files which are installed   # do not walk files which are installed
292   if [ ! -d ${INSTALLDB}/${PCAT}/${PNAME}-${PVER}-${PBUILD} ]   if [ ! -d ${INSTALLDB}/${PCAT}/${PNAME}-${PVER}-${PBUILD} ]
# Line 319  then Line 298  then
298   # (if not exists already)   # (if not exists already)
299   if checklist_alldeps "${MAGEFILE}"   if checklist_alldeps "${MAGEFILE}"
300   then   then
301   if [[ ${DEBUG} = 1 ]]   decho "added '${MAGEFILE}' to ALLDEPS"
  then  
  echo "DEBUG: added '${MAGEFILE}' to ALLDEPS" >&2  
  fi  
302   ALLDEPS="${ALLDEPS} ${MAGEFILE}"   ALLDEPS="${ALLDEPS} ${MAGEFILE}"
303   fi   fi
304   else   else
305   if [[ ${DEBUG} = 1 ]]   # debug info
306   then   decho "ignored package"
307   echo "DEBUG: ignored package" >&2   decho
  echo >&2  
  fi  
308   fi   fi
309   done   done
310  else  else
  LOOP_COUNTER=0  
311   # get all dependencies of the package   # get all dependencies of the package
312   depwalking ${MAGEFILE}   if [[ -n ${SMAGEFILE} ]]
313     then
314     depwalking "${SMAGEFILE}"
315     else
316     depwalking "${MAGEFILE}"
317     fi
318  fi  fi
319    
320  if [[ ${METHOD} != install-build-prerequisites ]] &&  if [[ ${METHOD} != install-build-prerequisites ]] &&
# Line 350  then Line 328  then
328   # (if not exists already)   # (if not exists already)
329   if checklist_alldeps "${MAGEFILE}"   if checklist_alldeps "${MAGEFILE}"
330   then   then
331   if [[ ${DEBUG} = 1 ]]   decho "added '${MAGEFILE}' to ALLDEPS"
  then  
  echo "DEBUG: added '${MAGEFILE}' to ALLDEPS" >&2  
  fi  
332   ALLDEPS="${ALLDEPS} ${MAGEFILE}"   ALLDEPS="${ALLDEPS} ${MAGEFILE}"
333   fi   fi
334  fi  fi

Legend:
Removed from v.2281  
changed lines
  Added in v.2625