Contents of /trunk/mage/usr/lib/mage/depwanderer.sh
Parent Directory | Revision Log
Revision 57 -
(show annotations)
(download)
(as text)
Tue Feb 15 00:37:07 2005 UTC (19 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 5314 byte(s)
Tue Feb 15 00:37:07 2005 UTC (19 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 5314 byte(s)
updated release version to 0.3.6-r12
1 | #!/bin/bash |
2 | |
3 | #depwanderer |
4 | # version: 0.3.6-r12 |
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 | 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 | 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 | * |