Contents of /trunk/mage/usr/lib/mage/depwanderer.sh
Parent Directory | Revision Log
Revision 24 -
(show annotations)
(download)
(as text)
Wed Jan 5 05:08:01 2005 UTC (19 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 5010 byte(s)
Wed Jan 5 05:08:01 2005 UTC (19 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 5010 byte(s)
mage-0.3.6-r8 import
1 | #!/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 | * |