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 2221 by niro, Wed Oct 16 07:40:02 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 27  usage() Line 29  usage()
29   echo "Usage: $(basename $0) [command] [arg] ..."   echo "Usage: $(basename $0) [command] [arg] ..."
30   echo   echo
31   echo "  -h     --help          shows this help"   echo "  -h     --help          shows this help"
32   echo "  -c     --pcat          categorie of the package"   echo "  -c     --pcat          category of the package"
33   echo "  -n     --pname         name of the package"   echo "  -n     --pname         name of the package"
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 "  -d     --debug         enable debug mode"   echo "                         install, srcinstall, pretend, srcpretend"
  echo "                         install, srcinstall, depend, srcdepend"  
38   echo "                         upgrade, srcupgrade,"   echo "                         upgrade, srcupgrade,"
39   echo "                         install-build-prerequisites, pretend-build-prerequisites"   echo "                         install-build-prerequisites,"
40     echo "                         pretend-build-prerequisites"
41     echo "  -d     --debug         enable debug mode"
42     echo "  -s     --smage         use a smage to calculate dependencies"
43   echo   echo
44   echo "method, name, version and build must be given !"   echo "method, category, name, version and build must be given !"
45   echo   echo
46   exit 1   exit 1
47  }  }
# Line 55  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 74  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 126  depwalking() Line 143  depwalking()
143    
144   DFILE="$1"   DFILE="$1"
145    
146     # debug info
147     decho "depwalking magefile '${DFILE}'"
148     decho
149    
150   source ${DFILE}   source ${DFILE}
151    
152   # forced nodeps   # forced nodeps
# Line 138  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 157  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     decho "MY_DEPEND is empty; deps of '${DFILE}' ignored"
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 234  depwalking() Line 234  depwalking()
234   then   then
235   depwalking ${HIGHEST_DEPFILE}   depwalking ${HIGHEST_DEPFILE}
236   ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}"   ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}"
237     decho "added '${HIGHEST_DEPFILE}' to ALLDEPS"
238   fi   fi
239   fi   fi
240   done << EOF   done << EOF
# Line 264  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     # debug info
269     decho "dep='${dep}'"
270     decho "PCAT='${PCAT}'"
271     decho "PNAME='${PNAME}'"
272     decho "MAGEFILE='${MAGEFILE}'"
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     decho "added to NO_UPGRADE_CANDIDATE"
280   continue   continue
281   fi   fi
282    
# Line 276  then Line 284  then
284   PVER="$(magename2pver ${MAGEFILE})"   PVER="$(magename2pver ${MAGEFILE})"
285   PBUILD="$(magename2pbuild ${MAGEFILE})"   PBUILD="$(magename2pbuild ${MAGEFILE})"
286    
287     # debug info
288     decho "PVER='${PVER}'"
289     decho "PBUILD='${PBUILD}'"
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} ]
293   then   then
294   # get dependencies the package   # get dependencies the package
295   depwalking ${MAGEFILE}   depwalking ${MAGEFILE}
296    
297     # now add the package itself to the dependencies
298     # (if not exists already)
299     if checklist_alldeps "${MAGEFILE}"
300     then
301     decho "added '${MAGEFILE}' to ALLDEPS"
302     ALLDEPS="${ALLDEPS} ${MAGEFILE}"
303     fi
304     else
305     # debug info
306     decho "ignored package"
307     decho
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 ]] &&
321   [[ ${METHOD} != pretend-build-prerequisites ]]   [[ ${METHOD} != pretend-build-prerequisites ]] &&
322     [[ ${METHOD} != upgrade ]] &&
323     [[ ${METHOD} != uppretend ]] &&
324     [[ ${METHOD} != srcupgrade ]] &&
325     [[ ${METHOD} != srcuppretend ]]
326  then  then
327   # now add the package itself to the dependencies   # now add the package itself to the dependencies
328   # (if not exists already)   # (if not exists already)
329   if checklist_alldeps "${MAGEFILE}"   if checklist_alldeps "${MAGEFILE}"
330   then   then
331     decho "added '${MAGEFILE}' to ALLDEPS"
332   ALLDEPS="${ALLDEPS} ${MAGEFILE}"   ALLDEPS="${ALLDEPS} ${MAGEFILE}"
333   fi   fi
334  fi  fi

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