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