Magellan Linux

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

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

revision 2141 by niro, Mon Jul 15 08:04:58 2013 UTC revision 2360 by niro, Mon Jan 6 12:36:37 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 ] &&  \  [ -f /etc/mage.rc.global ] &&  \
22   source /etc/mage.rc.global || \   source /etc/mage.rc.global || \
# Line 21  die() Line 29  die()
29   source ${MLIBDIR}/mage4.functions.sh || \   source ${MLIBDIR}/mage4.functions.sh || \
30   die "mage functions missing"   die "mage functions missing"
31    
32    [ -f ${MLIBDIR}/smage2.functions.sh ] && \
33     source ${MLIBDIR}/smage2.functions.sh || \
34     die "smage functions missing"
35    
36  usage()  usage()
37  {  {
38   echo   echo
39   echo "Usage: $(basename $0) [command] [arg] ..."   echo "Usage: $(basename $0) [command] [arg] ..."
40   echo   echo
41   echo "  -h     --help          shows this help"   echo "  -h     --help          shows this help"
42   echo "  -c     --pcat          categorie of the package"   echo "  -c     --pcat          category of the package"
43   echo "  -n     --pname         name of the package"   echo "  -n     --pname         name of the package"
44   echo "  -v     --pver          version number of the package"   echo "  -v     --pver          version number of the package"
45   echo "  -b     --pbuild        build number of the package"   echo "  -b     --pbuild        build number of the package"
46   echo "  -m     --method        which calc method should be used:"   echo "  -m     --method        which calc method should be used:"
47   echo "                         install, srcinstall, depend, srcdepend"   echo "                         install, srcinstall, pretend, srcpretend"
48   echo "                         upgrade, srcupgrade"   echo "                         upgrade, srcupgrade,"
49     echo "                         install-build-prerequisites,"
50     echo "                         pretend-build-prerequisites"
51     echo "  -d     --debug         enable debug mode"
52     echo "  -s     --smage         use a smage to calculate dependencies"
53   echo   echo
54   echo "method, name, version and build must be given !"   echo "method, category, name, version and build must be given !"
55   echo   echo
56   exit 1   exit 1
57  }  }
58    
59    # always default debug=0
60    DEBUG=0
61    
62  # very basic getops  # very basic getops
63  for i in $*  for i in $*
64  do  do
# Line 49  do Line 68  do
68   --pver|-v) shift; PVER="$1" ;;   --pver|-v) shift; PVER="$1" ;;
69   --pbuild|-b) shift; PBUILD="$1" ;;   --pbuild|-b) shift; PBUILD="$1" ;;
70   --method|-m) shift; METHOD="$1" ;;   --method|-m) shift; METHOD="$1" ;;
71     --debug|-d) shift; DEBUG=1 ;;
72     --smage|-s) shift; SMAGEFILE="$1"; SILENT=1; FVERBOSE=off ;;
73   --help|-h) usage ;;   --help|-h) usage ;;
74   esac   esac
75   shift   shift
76  done  done
77    
78  # sanity checks; abort if not given  # sanity checks; abort if not given
79  [ -z "${PCAT}" ] && usage  if [[ -z ${SMAGEFILE} ]]
80  [ -z "${PNAME}" ] && usage  then
81  [ -z "${PVER}" ] && usage   [ -z "${PCAT}" ] && usage
82  [ -z "${PBUILD}" ] && usage   [ -z "${PNAME}" ] && usage
83     [ -z "${PVER}" ] && usage
84     [ -z "${PBUILD}" ] && usage
85    fi
86  [ -z "${METHOD}" ] && usage  [ -z "${METHOD}" ] && usage
87    
88  # check needed global vars  # check needed global vars
# Line 68  done Line 92  done
92    
93  # other needed vars  # other needed vars
94  ALLDEPS=""  ALLDEPS=""
95    if [[ -n ${SMAGEFILE} ]]
96    then
97     if [[ -e ${SMAGEFILE} ]]
98     then
99     smagesource "${SMAGEFILE}"
100     else
101     die "Smage file '${SMAGEFILE}' does not exist!"
102     fi
103    fi
104  MAGEFILE="${MAGEDIR}/${PCAT}/${PNAME}/${PNAME}-${PVER}-${PBUILD}.mage"  MAGEFILE="${MAGEDIR}/${PCAT}/${PNAME}/${PNAME}-${PVER}-${PBUILD}.mage"
105    
106  # much faster than fgrep  # much faster than fgrep
# Line 120  depwalking() Line 153  depwalking()
153    
154   DFILE="$1"   DFILE="$1"
155    
156     # debug info
157     decho "depwalking magefile '${DFILE}'"
158     decho
159    
160   source ${DFILE}   source ${DFILE}
161    
162   # forced nodeps   # forced nodeps
# Line 132  depwalking() Line 169  depwalking()
169   MY_DEPEND="${DEPEND}"   MY_DEPEND="${DEPEND}"
170    
171   # for srcinstall & srcdepend only; SDEPEND also needed   # for srcinstall & srcdepend only; SDEPEND also needed
172   if [[ ${METHOD} = srcinstall ]] || \   if [[ ${METHOD} = srcinstall ]] ||
173   [[ ${METHOD} = srcpretend ]] || \   [[ ${METHOD} = srcpretend ]] ||
174   [[ ${METHOD} = srcupgrade ]] || \   [[ ${METHOD} = srcupgrade ]] ||
175   [[ ${METHOD} = srcuppretend ]]   [[ ${METHOD} = srcuppretend ]] ||
176     [[ ${METHOD} = install-build-prerequisites ]] ||
177     [[ ${METHOD} = pretend-build-prerequisites ]]
178   then   then
179   # only if SDEPEND is not zero   # only if SDEPEND is not zero
180   if [ -n "${SDEPEND}" ]   if [ -n "${SDEPEND}" ]
# Line 156  depwalking() Line 195  depwalking()
195    
196   if [ -z "${MY_DEPEND}" ]   if [ -z "${MY_DEPEND}" ]
197   then   then
198     decho "MY_DEPEND is empty; deps of '${DFILE}' ignored"
199   return 1   return 1
200   fi   fi
201    
202   while read SYM DEPNAME   while read SYM DEPNAME
203   do   do
204     # debug info
205     decho "DEPNAME='${DEPNAME}'"
206    
207   # exclude empty depnames   # exclude empty depnames
208   [[ -z ${DEPNAME} ]] && continue   [[ -z ${DEPNAME} ]] && continue
209    
# Line 201  depwalking() Line 244  depwalking()
244   then   then
245   depwalking ${HIGHEST_DEPFILE}   depwalking ${HIGHEST_DEPFILE}
246   ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}"   ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}"
247     decho "added '${HIGHEST_DEPFILE}' to ALLDEPS"
248   fi   fi
249   fi   fi
250   done << EOF   done << EOF
# Line 212  EOF Line 256  EOF
256  [[ ${METHOD} = pretend ]] || \  [[ ${METHOD} = pretend ]] || \
257   [[ ${METHOD} = srcpretend ]] || \   [[ ${METHOD} = srcpretend ]] || \
258   [[ ${METHOD} = uppretend ]] || \   [[ ${METHOD} = uppretend ]] || \
259   [[ ${METHOD} = srcuppretend ]] && \   [[ ${METHOD} = srcuppretend ]] || \
260     [[ ${METHOD} = pretend-build-prerequisites ]] && \
261   echo -n "Calculating dependencies ... "   echo -n "Calculating dependencies ... "
262    
263    
# Line 230  then Line 275  then
275   # get the highest mage file from mage-db   # get the highest mage file from mage-db
276   MAGEFILE="$(get_highest_magefile ${PCAT} ${PNAME})"   MAGEFILE="$(get_highest_magefile ${PCAT} ${PNAME})"
277    
278     # debug info
279     decho "dep='${dep}'"
280     decho "PCAT='${PCAT}'"
281     decho "PNAME='${PNAME}'"
282     decho "MAGEFILE='${MAGEFILE}'"
283    
284   # if no install candidate was found, record this   # if no install candidate was found, record this
285   # and process with the next one   # and process with the next one
286   if [[ -z ${MAGEFILE} ]]   if [[ -z ${MAGEFILE} ]]
287   then   then
288   NO_UPGRADE_CANDIDATE="${NO_UPGRADE_CANDIDATE} ${PCAT}/${PNAME}"   NO_UPGRADE_CANDIDATE="${NO_UPGRADE_CANDIDATE} ${PCAT}/${PNAME}"
289     decho "added to NO_UPGRADE_CANDIDATE"
290   continue   continue
291   fi   fi
292    
# Line 242  then Line 294  then
294   PVER="$(magename2pver ${MAGEFILE})"   PVER="$(magename2pver ${MAGEFILE})"
295   PBUILD="$(magename2pbuild ${MAGEFILE})"   PBUILD="$(magename2pbuild ${MAGEFILE})"
296    
297     # debug info
298     decho "PVER='${PVER}'"
299     decho "PBUILD='${PBUILD}'"
300    
301   # do not walk files which are installed   # do not walk files which are installed
302   if [ ! -d ${INSTALLDB}/${PCAT}/${PNAME}-${PVER}-${PBUILD} ]   if [ ! -d ${INSTALLDB}/${PCAT}/${PNAME}-${PVER}-${PBUILD} ]
303   then   then
# Line 250  then Line 306  then
306    
307   # now add the package itself to the dependencies   # now add the package itself to the dependencies
308   # (if not exists already)   # (if not exists already)
  #if [ -z "$(echo ${ALLDEPS} | fgrep "${MAGEFILE}")" ]  
309   if checklist_alldeps "${MAGEFILE}"   if checklist_alldeps "${MAGEFILE}"
310   then   then
311     decho "added '${MAGEFILE}' to ALLDEPS"
312   ALLDEPS="${ALLDEPS} ${MAGEFILE}"   ALLDEPS="${ALLDEPS} ${MAGEFILE}"
313   fi   fi
314     else
315     # debug info
316     decho "ignored package"
317     decho
318     fi
319   fi   fi
320   done   done
321  else  else
322   # get all dependencies of the package   # get all dependencies of the package
323   depwalking ${MAGEFILE}   if [[ -n ${SMAGEFILE} ]]
324     then
325     depwalking "${SMAGEFILE}"
326     else
327     depwalking "${MAGEFILE}"
328     fi
329    fi
330    
331    if [[ ${METHOD} != install-build-prerequisites ]] &&
332     [[ ${METHOD} != pretend-build-prerequisites ]] &&
333     [[ ${METHOD} != upgrade ]] &&
334     [[ ${METHOD} != uppretend ]] &&
335     [[ ${METHOD} != srcupgrade ]] &&
336     [[ ${METHOD} != srcuppretend ]]
337    then
338   # now add the package itself to the dependencies   # now add the package itself to the dependencies
339   ALLDEPS="${ALLDEPS} ${MAGEFILE}"   # (if not exists already)
340     if checklist_alldeps "${MAGEFILE}"
341     then
342     decho "added '${MAGEFILE}' to ALLDEPS"
343     ALLDEPS="${ALLDEPS} ${MAGEFILE}"
344     fi
345  fi  fi
346    
347  [[ ${METHOD} = pretend ]] || \  [[ ${METHOD} = pretend ]] || \
348   [[ ${METHOD} = srcpretend ]] || \   [[ ${METHOD} = srcpretend ]] || \
349   [[ ${METHOD} = uppretend ]] || \   [[ ${METHOD} = uppretend ]] || \
350   [[ ${METHOD} = srcuppretend ]] && \   [[ ${METHOD} = srcuppretend ]] || \
351     [[ ${METHOD} = pretend-build-prerequisites ]] && \
352   echo "done"   echo "done"
353    
354    
# Line 276  fi Line 356  fi
356  if [[ ${METHOD} = pretend ]] || \  if [[ ${METHOD} = pretend ]] || \
357   [[ ${METHOD} = srcpretend ]] || \   [[ ${METHOD} = srcpretend ]] || \
358   [[ ${METHOD} = uppretend ]] || \   [[ ${METHOD} = uppretend ]] || \
359   [[ ${METHOD} = srcuppretend ]]   [[ ${METHOD} = srcuppretend ]] || \
360     [[ ${METHOD} = pretend-build-prerequisites ]]
361  then  then
362   # this is a little bit faster   # this is a little bit faster
363   declare -i x=0   declare -i x=0
# Line 293  then Line 374  then
374   PBUILD="$(magename2pbuild ${i})"   PBUILD="$(magename2pbuild ${i})"
375   if [ -z "${list}" ]   if [ -z "${list}" ]
376   then   then
377   list="\t${COLBLUE}[${k}] ${COLGREEN}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"   list="\t${COLBLUE}[${k}] ${COLGREEN}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
378   else   else
379   list="${list}   list="${list}
380  \t${COLBLUE}[${k}] ${COLGREEN}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"  \t${COLBLUE}[${k}] ${COLGREEN}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
# Line 335  fi Line 416  fi
416  [[ ${METHOD} = install ]] || \  [[ ${METHOD} = install ]] || \
417   [[ ${METHOD} = srcinstall ]] || \   [[ ${METHOD} = srcinstall ]] || \
418   [[ ${METHOD} = upgrade ]] || \   [[ ${METHOD} = upgrade ]] || \
419   [[ ${METHOD} = srcupgrade ]] && \   [[ ${METHOD} = srcupgrade ]] || \
420     [[ ${METHOD} = install-build-prerequisites ]] && \
421   echo "${ALLDEPS}"   echo "${ALLDEPS}"

Legend:
Removed from v.2141  
changed lines
  Added in v.2360