Annotation of /branches/mage-next/src/up2date/up2date.in
Parent Directory | Revision Log
Revision 2591 -
(hide annotations)
(download)
Tue Mar 4 08:35:27 2014 UTC (10 years, 2 months ago) by niro
File size: 5734 byte(s)
Tue Mar 4 08:35:27 2014 UTC (10 years, 2 months ago) by niro
File size: 5734 byte(s)
-split function into single includes
1 | niro | 2582 | #!/bin/bash |
2 | |||
3 | niro | 2591 | die() { echo "Error: $@"; exit 1; } |
4 | niro | 2582 | |
5 | niro | 2591 | # include all needed files |
6 | [ -f /etc/mage.rc.global ] && source /etc/mage.rc.global || die "/etc/mage.rc.global missing" | ||
7 | [ -f ${MAGERC} ] && source ${MAGERC} || die "Your ${MAGERC} is missing. Aborting." | ||
8 | [ -f ${MLIBDIR}/mage4.functions.sh ] && source ${MLIBDIR}/mage4.functions.sh || die "mage functions missing" | ||
9 | [ -f ${MLIBDIR}/smage2.functions.sh ] && source ${MLIBDIR}/smage2.functions.sh || die "smage functions missing" | ||
10 | [ -f /etc/up2date.conf ] && source /etc/up2date.conf || die "/etc/up2date.conf missing" | ||
11 | niro | 2582 | |
12 | niro | 2591 | # respect repos from env or load repos from config file |
13 | if [[ -z ${REPOS} ]] && [[ -n ${SMAGE_REPOS} ]] | ||
14 | then | ||
15 | REPOS="${SMAGE_REPOS}" | ||
16 | fi | ||
17 | # sane default | ||
18 | : ${REPOS="${SMAGESCRIPTSDIR}/core ${SMAGESCRIPTSDIR}/extras ${SMAGESCRIPTSDIR}/nonfree ${SMAGESCRIPTSDIR}/todo"} | ||
19 | |||
20 | niro | 2582 | ## only for tests -> normally in /etc/rc.d/init.d/functions |
21 | COLRED="\033[1;6m\033[31m" | ||
22 | COLGREEN="\033[1;6m\033[32m" | ||
23 | COLYELLOW="\033[1;6m\033[33m" | ||
24 | COLBLUE="\033[1;6m\033[34m" | ||
25 | COLMAGENTA="\033[1;6m\033[35m" | ||
26 | COLWHITE="\033[1;6m\033[37m" | ||
27 | COLGRAY="\033[0;6m\033[37m" | ||
28 | COLBOLD="\033[1m" | ||
29 | COLDEFAULT="\033[0m" | ||
30 | |||
31 | if [[ ${NOCOLORS} = true ]] | ||
32 | then | ||
33 | COLRED="" | ||
34 | COLGREEN="" | ||
35 | COLYELLOW="" | ||
36 | COLBLUE="" | ||
37 | COLMAGENTA="" | ||
38 | COLWHITE="" | ||
39 | COLGRAY="" | ||
40 | COLBOLD="" | ||
41 | COLDEFAULT="" | ||
42 | fi | ||
43 | |||
44 | niro | 2591 | # always be silent |
45 | SILENT=1 | ||
46 | FVERBOSE=off | ||
47 | niro | 2582 | |
48 | niro | 2591 | # load all up2date includes |
49 | for inc in ${MLIBDIR}/up2date/*.sh | ||
50 | do | ||
51 | source ${inc} | ||
52 | done | ||
53 | niro | 2582 | |
54 | updatecmd() | ||
55 | { | ||
56 | local uppver | ||
57 | local useragent | ||
58 | [[ ! -z ${UP2USERAGENT} ]] && useragent="-useragent '${UP2USERAGENT}'" | ||
59 | |||
60 | uppver=$(lynx -connect_timeout=${LYNX_CONNECT_TIMEOUT} -read_timeout=${LYNX_READ_TIMEOUT} -dump "${useragent}" $@) | ||
61 | if [[ $? -ne 0 ]] | ||
62 | then | ||
63 | echo "Error connecting '$@'" | ||
64 | sleep 1 | ||
65 | return 1 | ||
66 | fi | ||
67 | |||
68 | if [[ ! -z ${UP2SUBSTITUTE} ]] | ||
69 | then | ||
70 | echo "${uppver}" | sed "s:${UP2SUBSTITUTE}::g" | ||
71 | else | ||
72 | echo "${uppver}" | ||
73 | fi | ||
74 | } | ||
75 | |||
76 | updateme() | ||
77 | { | ||
78 | local smage="$1" | ||
79 | local ONLY_PRINT_UPSTREAM | ||
80 | |||
81 | if [[ $1 = --upstream ]] || [[ $1 = -u ]] | ||
82 | then | ||
83 | if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]] | ||
84 | then | ||
85 | echo "you must give me a smagefile." | ||
86 | exit 1 | ||
87 | fi | ||
88 | ONLY_PRINT_UPSTREAM=1 | ||
89 | smage="$2" | ||
90 | fi | ||
91 | |||
92 | local PNAME | ||
93 | local PCATEGORIE | ||
94 | local PCAT | ||
95 | local PVER | ||
96 | local UP2DATE | ||
97 | local UP2PVER | ||
98 | local UP2TARBALL | ||
99 | local UP2SUBDIR | ||
100 | local UP2SUBSTITUTE | ||
101 | local UP2USERAGENT | ||
102 | local UP2EXCLUDE | ||
103 | local UP2SEPERATOR | ||
104 | local UP2OPTS | ||
105 | local UPSTREAM_PVER | ||
106 | |||
107 | PNAME="$(get_value_from_magefile PNAME ${smage})" | ||
108 | PCATEGORIE="$(get_value_from_magefile PCATEGORIE ${smage})" | ||
109 | PCAT="$(get_value_from_magefile PCAT ${smage})" | ||
110 | PVER="$(get_value_from_magefile PVER ${smage})" | ||
111 | UP2PVER="$(get_value_from_magefile UP2PVER ${smage})" | ||
112 | UP2TARBALL="$(get_value_from_magefile UP2TARBALL ${smage})" | ||
113 | UP2SUBDIR="$(get_value_from_magefile UP2SUBDIR ${smage})" | ||
114 | UP2SUBSTITUTE="$(get_value_from_magefile UP2SUBSTITUTE ${smage})" | ||
115 | UP2USERAGENT="$(get_value_from_magefile UP2USERAGENT ${smage})" | ||
116 | UP2EXCLUDE="$(get_value_from_magefile UP2EXCLUDE ${smage})" | ||
117 | UP2SEPERATOR="$(get_value_from_magefile UP2SEPERATOR ${smage})" | ||
118 | UP2OPTS="$(get_value_from_magefile UP2OPTS ${smage})" | ||
119 | |||
120 | [[ -z ${UP2PVER} ]] && UP2PVER="${PVER}" | ||
121 | |||
122 | UP2DATE=$(get_value_from_magefile UP2DATE ${smage}) | ||
123 | |||
124 | if [[ -z ${UP2DATE} ]] | ||
125 | then | ||
126 | continue | ||
127 | fi | ||
128 | |||
129 | UPSTREAM_PVER=$(eval "${UP2DATE}") | ||
130 | if [[ ${ONLY_PRINT_UPSTREAM} = 1 ]] | ||
131 | then | ||
132 | echo "${UPSTREAM_PVER}" | ||
133 | else | ||
134 | local retval | ||
135 | niro | 2591 | retval=$(${MLIBDIR}/vercomp "${UP2PVER}" "${UPSTREAM_PVER}") |
136 | niro | 2582 | [ ${retval} -eq 0 ] && echo -e "${PNAME}: ${COLGREEN}'${UP2PVER}' = '${UPSTREAM_PVER}'${COLDEFAULT}" |
137 | [ ${retval} -lt 0 ] && echo -e "${PNAME}: ${COLRED}'${UP2PVER}' < '${UPSTREAM_PVER}'${COLDEFAULT}" | ||
138 | [ ${retval} -gt 0 ] && echo -e "${PNAME}: ${COLYELLOW}'${UP2PVER}' > '${UPSTREAM_PVER}'${COLDEFAULT}" | ||
139 | fi | ||
140 | } | ||
141 | |||
142 | updateall() | ||
143 | { | ||
144 | #local REPOS | ||
145 | local PACKAGE | ||
146 | local smage | ||
147 | local repo | ||
148 | local UP2DATE_SLEEP_COUNT=15 | ||
149 | local UP2DATE_SLEEP_TIMEOUT=3 | ||
150 | local ONLY_PRINT_UPSTREAM=0 | ||
151 | niro | 2591 | local c |
152 | niro | 2582 | |
153 | PACKAGE="*" | ||
154 | [[ ! -z $1 ]] && PACKAGE="$1" | ||
155 | |||
156 | if [[ $1 = --upstream ]] || [[ $1 = -u ]] | ||
157 | then | ||
158 | if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]] | ||
159 | then | ||
160 | echo "you must give me a smagefile." | ||
161 | exit 1 | ||
162 | fi | ||
163 | updateme $1 $2 | ||
164 | return 0 | ||
165 | fi | ||
166 | |||
167 | ############################################################################## | ||
168 | # recurse all depends if requested | ||
169 | # | ||
170 | if [[ $1 = --depend ]] || [[ $1 = -d ]] | ||
171 | then | ||
172 | if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]] | ||
173 | then | ||
174 | echo "you must give me a smagefile." | ||
175 | exit 1 | ||
176 | fi | ||
177 | |||
178 | SMAGEFILE="$2" | ||
179 | PACKAGE="$(magename2pname ${SMAGEFILE})" | ||
180 | |||
181 | echo "processing '${SMAGEFILE}' ..." | ||
182 | echo "running dependency checks for package '${PACKAGE}'..." | ||
183 | |||
184 | DEPEND=$(get_value_from_magefile DEPEND ${SMAGEFILE}) | ||
185 | SDEPEND=$(get_value_from_magefile SDEPEND ${SMAGEFILE}) | ||
186 | |||
187 | declare -i c=0 | ||
188 | while read sign dep | ||
189 | do | ||
190 | case ${dep} in | ||
191 | "") continue;; | ||
192 | esac | ||
193 | |||
194 | # sleep every 15 packages for 5 seconds | ||
195 | (( c++ )) | ||
196 | if [[ ${c} -eq ${UP2DATE_SLEEP_COUNT} ]] | ||
197 | then | ||
198 | declare -i c=0 | ||
199 | echo "DEBUG: Sleep Count (${UP2DATE_SLEEP_COUNT}x) reached, sleeping for ${UP2DATE_SLEEP_TIMEOUT} seconds ..." | ||
200 | sleep ${UP2DATE_SLEEP_TIMEOUT} | ||
201 | fi | ||
202 | #echo "debug: ${dep}" | ||
203 | updateme "$(dep2pname ${dep})" | ||
204 | done << EOF | ||
205 | ${DEPEND} | ||
206 | ${SDEPEND} | ||
207 | EOF | ||
208 | fi | ||
209 | # | ||
210 | # eof recurse | ||
211 | ############################################################################## | ||
212 | |||
213 | for repo in ${REPOS} | ||
214 | do | ||
215 | # exclude not existing | ||
216 | [[ ${PACKAGE} != \* ]] && [[ ! -d ${repo}/${PACKAGE} ]] && continue | ||
217 | |||
218 | declare -i c=0 | ||
219 | for smage in ${repo}/${PACKAGE}/*.smage2 | ||
220 | do | ||
221 | updateme ${smage} | ||
222 | |||
223 | # sleep every 15 packages for 5 seconds | ||
224 | (( c++ )) | ||
225 | if [[ ${c} -eq ${UP2DATE_SLEEP_COUNT} ]] | ||
226 | then | ||
227 | declare -i c=0 | ||
228 | echo "DEBUG: Sleep Count (${UP2DATE_SLEEP_COUNT}x) reached, sleeping for ${UP2DATE_SLEEP_TIMEOUT} seconds ..." | ||
229 | sleep ${UP2DATE_SLEEP_TIMEOUT} | ||
230 | fi | ||
231 | done | ||
232 | done | ||
233 | } | ||
234 | |||
235 | updateall $@ |