Annotation of /trunk/mage/usr/lib/mage/depwanderer.sh
Parent Directory | Revision Log
Revision 33 -
(hide annotations)
(download)
(as text)
Thu Jan 6 02:57:12 2005 UTC (19 years, 5 months ago) by niro
File MIME type: application/x-sh
File size: 5313 byte(s)
Thu Jan 6 02:57:12 2005 UTC (19 years, 5 months ago) by niro
File MIME type: application/x-sh
File size: 5313 byte(s)
fixed version tags
1 | niro | 24 | #!/bin/bash |
2 | |||
3 | #depwanderer | ||
4 | niro | 33 | # version: 0.3.6-r9 |
5 | niro | 24 | |
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 | niro | 29 | # 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 | for vpkg in $(virtuals_read ${CAT}/${PNAME} showpkgs) | ||
95 | do | ||
96 | #virtual is installed; take pkg name from virtualdb | ||
97 | REAL_PKGNAME="${vpkg}" | ||
98 | VIRTUAL_NAME="${CAT}/${PNAME}" | ||
99 | |||
100 | CAT=$(echo ${REAL_PKGNAME}|cut -d / -f1) | ||
101 | PNAME=$(echo ${REAL_PKGNAME}|cut -d / -f2) | ||
102 | done | ||
103 | |||
104 | niro | 24 | else |
105 | # choose one from virtualdb defaults (virtuals.defaults) | ||
106 | REAL_PKGNAME="$(default_virtualname_to_pkgname ${CAT}/${PNAME})" | ||
107 | VIRTUAL_NAME="${CAT}/${PNAME}" | ||
108 | |||
109 | CAT=$(echo ${REAL_PKGNAME}|cut -d / -f1) | ||
110 | PNAME=$(echo ${REAL_PKGNAME}|cut -d / -f2) | ||
111 | |||
112 | # small fix with this buggy mage (<= 0.3.6-r5) | ||
113 | # dunno when it's fixed -> maybe mage-0.3.7 ! | ||
114 | # *must* have a '-1' as version that could be substituded later | ||
115 | #PNAME=CAT="$(echo ${REAL_PKGNAME}|cut -d / -f2)-1" | ||
116 | fi | ||
117 | else | ||
118 | #stripped pname if *not* virtual | ||
119 | PNAME=$(echo ${DEPNAME%-*}|cut -d / -f2) | ||
120 | fi | ||
121 | |||
122 | for i in ${MAGEDIR}/${CAT}/${PNAME}/*.mage | ||
123 | do | ||
124 | #we exclude subdirs (for stuff like a md5sum dir) | ||
125 | if [ ! -d ${i} ] | ||
126 | then | ||
127 | check_stable_package ${i} | ||
128 | if [ "$?" == "0" ] | ||
129 | then | ||
130 | HIGHEST_DEPFILE=${i} | ||
131 | fi | ||
132 | |||
133 | #debug | ||
134 | if [ "${TODESVAR}" == 1 ] | ||
135 | then | ||
136 | echo -e ${COLRED}"${DFILE}"${COLDEFAULT} | ||
137 | unset TODESVAR | ||
138 | fi | ||
139 | fi | ||
140 | done | ||
141 | |||
142 | ##check ob schon in ALLDEPS enthalten dann mach weiter | ||
143 | local x | ||
144 | x=$(echo ${ALLDEPS}|fgrep "${HIGHEST_DEPFILE}") | ||
145 | if [ -z "${x}" ] | ||
146 | then | ||
147 | ### check ob DFILE schon installiert ist ### | ||
148 | #if [ ! -d ${INSTALLDB}/$(basename ${HIGHEST_DEPFILE} .mage) ] | ||
149 | if [ ! -d ${INSTALLDB}/${CAT}/$(basename ${HIGHEST_DEPFILE} .mage) ] | ||
150 | then | ||
151 | rumwandern ${HIGHEST_DEPFILE} | ||
152 | ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}" | ||
153 | |||
154 | #mark pkg as virtual if needed | ||
155 | # virtual.PKG_NAME | ||
156 | if [ "${INSTALL_VIRTUAL}" == "true" ] | ||
157 | then | ||
158 | install -d ${BUILDDIR}/virtuals | ||
159 | echo "DB_VIRTUAL_NAME=${VIRTUAL_NAME}" \ | ||
160 | > ${BUILDDIR}/virtuals/virtual.$(basename ${HIGHEST_DEPFILE} .mage) | ||
161 | echo "DB_PKG_NAME=${REAL_PKGNAME}" \ | ||
162 | >> ${BUILDDIR}/virtuals/virtual.$(basename ${HIGHEST_DEPFILE} .mage) | ||
163 | |||
164 | #unset these vars to be safe | ||
165 | unset VIRTUAL_NAME REAL_PKGNAME INSTALL_VIRTUAL | ||
166 | fi | ||
167 | fi | ||
168 | fi | ||
169 | |||
170 | done << EOF | ||
171 | $MY_DEPEND | ||
172 | EOF | ||
173 | return 0 | ||
174 | } | ||
175 | |||
176 | ### check ob MAGEFILE schon installiert ist | ||
177 | #if [ -d ${INSTALLDB}/$(basename ${MAGEFILE} .mage) ] | ||
178 | MY_CAT=$(dirname ${MAGEFILE}|sed -e "s:${MAGEDIR}::g"|cut -d / -f2) | ||
179 | if [ -d ${INSTALLDB}/${MY_CAT}/$(basename ${MAGEFILE} .mage) ] | ||
180 | then | ||
181 | exit 3 | ||
182 | fi | ||
183 | |||
184 | if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ] | ||
185 | then | ||
186 | echo -en "Calculating Dependencies ... " | ||
187 | fi | ||
188 | |||
189 | #get dependencies of package | ||
190 | rumwandern ${MAGEFILE} | ||
191 | |||
192 | if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ] | ||
193 | then | ||
194 | echo "done" | ||
195 | fi | ||
196 | |||
197 | ##anhängen des zu installierenden files selber | ||
198 | ALLDEPS="${ALLDEPS} ${MAGEFILE}" | ||
199 | |||
200 | |||
201 | ##ausgabe pretend | ||
202 | if [ "${METHOD}" == "pretend" -o "${METHOD}" == "srcpretend" ] | ||
203 | then | ||
204 | ####test ausgabe | ||
205 | declare -i x=0 | ||
206 | for i in ${ALLDEPS} | ||
207 | do | ||
208 | x=$x+1 | ||
209 | echo -en "\t${COLBLUE}[" | ||
210 | if [ ${x} -le 9 ] | ||
211 | then | ||
212 | echo -en "0" | ||
213 | fi | ||
214 | CATEGORIE=$(dirname ${i}|sed -e "s:${MAGEDIR}::g"|cut -d / -f2) | ||
215 | APPNAME=$(basename ${i} .mage) | ||
216 | echo -e "${x}] ${COLGREEN}${CATEGORIE}/${APPNAME}"${COLDEFAULT} | ||
217 | unset CATEGORIE APPNAME | ||
218 | done | ||
219 | |||
220 | #delete ${BUILDDIR}/virtuals if exists as not needed by [src]pretend | ||
221 | if [ -d ${BUILDDIR}/virtuals ] | ||
222 | then | ||
223 | rm -rf ${BUILDDIR}/virtuals | ||
224 | fi | ||
225 | fi | ||
226 | |||
227 | ##return ausgabe install | ||
228 | if [ "$1" == "install" -o "$1" == "srcinstall" ] | ||
229 | then | ||
230 | echo ${ALLDEPS} | ||
231 | fi |
Properties
Name | Value |
---|---|
svn:executable | * |