Magellan Linux

Annotation of /trunk/mage/usr/lib/mage/depwanderer.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (hide annotations) (download) (as text)
Wed Jan 5 05:08:01 2005 UTC (19 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 5010 byte(s)
mage-0.3.6-r8 import

1 niro 24 #!/bin/bash
2    
3     #depwanderer
4     # version: 0.3.6-r8
5    
6     #DEPEND WANDERER
7    
8     MAGEFILE=$2
9     ALLDEPS=""
10     METHOD=$1
11    
12    
13     source /etc/mage.rc
14     source /etc/init.d/functions
15     source /usr/lib/mage/mage3.functions.sh
16    
17     #virtualdb locations
18     VIRTUALDB_DEFAULTS=/etc/mage-profile/virtuals.defaults
19     VIRTUALDB_FILE=${INSTALLDB}/virtuals
20    
21    
22     #####################
23     ## rumwandern /path/to/mage/file/.mage
24     rumwandern(){
25    
26     unset DEPEND
27     unset SDEPEND
28     unset MY_DEPEND
29    
30     local DFILE
31     local SYM
32     local DEPNAME
33     local HIGHEST_DEPFILE
34     local MY_DEPEND
35     local REAL_PGKNAME
36     local VIRTUAL_NAME
37     local INSTALL_VIRTUAL
38    
39     DFILE=$1
40    
41     source ${DFILE}
42     MY_DEPEND="${DEPEND}"
43    
44     #for srcinstall & srcdepend only; SDEPEND also needed
45     if [ "${METHOD}" == "srcinstall" -o "${METHOD}" == "srcpretend" ]
46     then
47     #only if SDEPEND is not zero
48     if [ -n "${SDEPEND}" ]
49     then
50     #crlf is substantly needed !!
51     if [ -n "${MY_DEPEND}" ]
52     then
53     MY_DEPEND="${MY_DEPEND}
54     ${SDEPEND}"
55     else
56     MY_DEPEND="${SDEPEND}"
57     fi
58     fi
59     fi
60    
61     unset DEPEND
62     unset SDEPEND
63    
64     if [ -z "${MY_DEPEND}" ]
65     then
66     return 1
67     fi
68    
69     while read SYM DEPNAME
70     do
71     CAT=$(echo ${DEPNAME}|cut -d / -f1)
72     #PNAME=$(echo ${DEPNAME%-*}|cut -d / -f2)
73     #echo "DEBUG CAT=${CAT}"
74     #echo "DEBUG PNAME=${PNAME}"
75     #echo "DEBUG DEPNAME=${DEPNAME}"
76    
77     # check if virtual pkg;
78     # if true set $CAT and PNAME to the *REAL* PKGNAME and CATEGORIE
79     if [ "${CAT}" == "virtual" ]
80     then
81     INSTALL_VIRTUAL=true
82     PNAME=$(echo ${DEPNAME}|cut -d / -f2)
83    
84     #first check if virtual is already installed
85     if virtuals_read ${CAT}/${PNAME} showpkgs &> /dev/null
86     then
87     #virtual is installed; take pkg name from virtualdb
88     REAL_PKGNAME="$(virtuals_read ${CAT}/${PNAME} showpkgs)"
89     VIRTUAL_NAME="${CAT}/${PNAME}"
90    
91     CAT=$(echo ${REAL_PKGNAME}|cut -d / -f1)
92     PNAME=$(echo ${REAL_PKGNAME}|cut -d / -f2)
93    
94     else
95     # choose one from virtualdb defaults (virtuals.defaults)
96     REAL_PKGNAME="$(default_virtualname_to_pkgname ${CAT}/${PNAME})"
97     VIRTUAL_NAME="${CAT}/${PNAME}"
98    
99     CAT=$(echo ${REAL_PKGNAME}|cut -d / -f1)
100     PNAME=$(echo ${REAL_PKGNAME}|cut -d / -f2)
101    
102     # small fix with this buggy mage (<= 0.3.6-r5)
103     # dunno when it's fixed -> maybe mage-0.3.7 !
104     # *must* have a '-1' as version that could be substituded later
105     #PNAME=CAT="$(echo ${REAL_PKGNAME}|cut -d / -f2)-1"
106     fi
107     else
108     #stripped pname if *not* virtual
109     PNAME=$(echo ${DEPNAME%-*}|cut -d / -f2)
110     fi
111    
112     for i in ${MAGEDIR}/${CAT}/${PNAME}/*.mage
113     do
114     #we exclude subdirs (for stuff like a md5sum dir)
115     if [ ! -d ${i} ]
116     then
117     check_stable_package ${i}
118     if [ "$?" == "0" ]
119     then
120     HIGHEST_DEPFILE=${i}
121     fi
122    
123     #debug
124     if [ "${TODESVAR}" == 1 ]
125     then
126     echo -e ${COLRED}"${DFILE}"${COLDEFAULT}
127     unset TODESVAR
128     fi
129     fi
130     done
131    
132     ##check ob schon in ALLDEPS enthalten dann mach weiter
133     local x
134     x=$(echo ${ALLDEPS}|fgrep "${HIGHEST_DEPFILE}")
135     if [ -z "${x}" ]
136     then
137     ### check ob DFILE schon installiert ist ###
138     #if [ ! -d ${INSTALLDB}/$(basename ${HIGHEST_DEPFILE} .mage) ]
139     if [ ! -d ${INSTALLDB}/${CAT}/$(basename ${HIGHEST_DEPFILE} .mage) ]
140     then
141     rumwandern ${HIGHEST_DEPFILE}
142     ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}"
143    
144     #mark pkg as virtual if needed
145     # virtual.PKG_NAME
146     if [ "${INSTALL_VIRTUAL}" == "true" ]
147     then
148     install -d ${BUILDDIR}/virtuals
149     echo "DB_VIRTUAL_NAME=${VIRTUAL_NAME}" \
150     > ${BUILDDIR}/virtuals/virtual.$(basename ${HIGHEST_DEPFILE} .mage)
151     echo "DB_PKG_NAME=${REAL_PKGNAME}" \
152     >> ${BUILDDIR}/virtuals/virtual.$(basename ${HIGHEST_DEPFILE} .mage)
153    
154     #unset these vars to be safe
155     unset VIRTUAL_NAME REAL_PKGNAME INSTALL_VIRTUAL
156     fi
157     fi
158     fi
159    
160     done << EOF
161     $MY_DEPEND
162     EOF
163     return 0
164     }
165    
166     ### check ob MAGEFILE schon installiert ist
167     #if [ -d ${INSTALLDB}/$(basename ${MAGEFILE} .mage) ]
168     MY_CAT=$(dirname ${MAGEFILE}|sed -e "s:${MAGEDIR}::g"|cut -d / -f2)
169     if [ -d ${INSTALLDB}/${MY_CAT}/$(basename ${MAGEFILE} .mage) ]
170     then
171     exit 3
172     fi
173    
174     if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ]
175     then
176     echo -en "Calculating Dependencies ... "
177     fi
178    
179     #get dependencies of package
180     rumwandern ${MAGEFILE}
181    
182     if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ]
183     then
184     echo "done"
185     fi
186    
187     ##anhängen des zu installierenden files selber
188     ALLDEPS="${ALLDEPS} ${MAGEFILE}"
189    
190    
191     ##ausgabe pretend
192     if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ]
193     then
194     ####test ausgabe
195     declare -i x=0
196     for i in ${ALLDEPS}
197     do
198     x=$x+1
199     echo -en "\t${COLBLUE}["
200     if [ ${x} -le 9 ]
201     then
202     echo -en "0"
203     fi
204     CATEGORIE=$(dirname ${i}|sed -e "s:${MAGEDIR}::g"|cut -d / -f2)
205     APPNAME=$(basename ${i} .mage)
206     echo -e "${x}] ${COLGREEN}${CATEGORIE}/${APPNAME}"${COLDEFAULT}
207     unset CATEGORIE APPNAME
208     done
209    
210     #delete ${BUILDDIR}/virtuals if exists as not needed by [src]pretend
211     if [ -d ${BUILDDIR}/virtuals ]
212     then
213     rm -rf ${BUILDDIR}/virtuals
214     fi
215     fi
216    
217     ##return ausgabe install
218     if [ "$1" == "install" -o "$1" == "srcinstall" ]
219     then
220     echo ${ALLDEPS}
221     fi

Properties

Name Value
svn:executable *